导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[missucn]全新“蓝点方舟”51单片机BASIC语言



No.88416
作者:missucn
邮件:mailawish@yahoo.com.cn
ID:46575
登陆:1次
文章数:1篇
最后登陆IP:218.85.126.11
最后登陆:2006/1/24 6:37:01
注册:2006/1/24 6:36:14
财富:105
发帖时间:2006/1/24 6:37:01
发贴者IP:218.85.126.11
标题:missucn:全新“蓝点方舟”51单片机BASIC语言高效综合开发系统
摘要:No.88416全新“蓝点方舟”51单片机BASIC语言高效综合开发系统 蓝点方舟科技网(WWW.PCIT.CN)
---------------------------------------------

  《全新“蓝点方舟”51单片机BASIC语言高效综合开发系统》

  ——51系列单片机BASIC语言开发系统“编程+仿真+实验一体化解决方案” 
  ——用BASIC语言作单片机开发是最简捷、轻松、高效的方案


  您还在用抽象的汇编语言或复杂的C语言吗?!
  您还在为做一个像样的毕业电子设计而烦恼吗?!
  您还在苦苦求职而杳无音信吗?!
  您真的了解BASIC语言吗?是不是对它不屑一顾呢?!
  您知道WindowsXP系统是用两亿行BASIC语言代码写成的吗?!

  在美国反Windows捆绑IE  <Internet Explorer>  垄断案中,微软公司以示清白而公布的部分代码显示WindowsXP如此优秀的系统居然不是用C++等复杂的语言写的,让人惊奇的是它居然是用代码最简捷、逻辑最清晰的BASIC语言写的,我想可能是因为用BASIC语言可以让微软的工程师们省不少脑力,同时写大型程序又不容易出错的原因吧。

  从今天开始,您就改用BASIC语言吧,因为她既可以给您成就感,还可以给您充足的休息时间,最重要的就是她能带给您游刃有余的惬意,和充满活力的健康心情!

  用BASIC语言开发51系列单片机,您准备好了吗?!

---------------------------------------------

  本套件适用于:
  8051/8951系列及兼容芯片(包括Atmel、Intel、STC、Philips、Dallas等等51单片机家族兼容芯片),比如:
  AT89C51、89C52、89C55、89C1051、89C2051、89C4051
  AT89S51、89S52、89S55、AT89S8252
  Intel8051、8052、8751、8752、8754、8031、8032
  Philips89C51RB2、89C51RC2、89C51RD2
以及高速51系列单片机芯片:
  STC89C51RC、89C51RD+、89LE58RD+、89C516RD+、12C5410AD、12C2052AD等
  可进行BASIC语言编译(仿真)/编程烧录/ISP下载
  及汇编/C语言编译/仿真/编程烧录/ISP下载

  内含:
  LCD/LED/FM调频无线电编码遥控/红外线遥控/超声波遥测/步进电机控制/伺服电机(舵机)控制/各种传感器/51系列单片机PC端VB(Visual Basic)界面编辑方案等

  一、蓝点方舟BASIC51开发系统基本特点:

  本综合开发系统最大的特点是用最简单高效的BASIC语言编程,内含有可编程控制的各种实用器件的全套BASIC语言的例程(另外还附带相应.hex和.bin文件),让您不用为记忆繁琐难懂的汇编指令而头痛,也不用为学习复杂的而且不能完全脱离汇编代码的C语言而焦急,只要您有小学生的智商,或者曾经学过或了解过QBASIC语言或者VB(Visual Basic)的少量编程经验, 您完全不用深入了解或刻苦记忆51单片机的硬件结构和汇编指令,而只要集中精力进行简单的不能再简单的BASIC代码的流程逻辑分析和编程。当然如果您已经入门了51单片机或者已经是一个51单片机汇编语言或51单片机C语言编程的高手,那么我们这款工具将可以为您在未来的某些应用设计工作中,节省宝贵的时间甚至节省体力及脑力劳动。事实证明,在行业竞争空前激烈的今天,效率和速度永远是第一竞争力!!!比如,我们的一个程序员为一个印刷厂的丝网印刷机的机械式定时器进行单片机数管显示方式的改造,并设计相应的单片机程序,前后只用了三个小时就完成了,而这在以前用汇编语言或者C语言来设计需要一两个星期是常有的事情。

  再例如:
  设P1.0脚为高、低电位和P1口8个脚电位分别为10101010和01010101,用汇编的写法是:

  SETB P1.0  CLR P1.0
  MOV P1,#AAH  MOV P1,#55H (或 MOV P1,#10101010B MOV P1,#01010101B)  

  用51单片机BASIC语言的写法是:

  P1.0=1   P1.0=0
  P1=&B10101010  P1=&B01010101

  再比如,对于频率为12M晶体振荡器的51单片机,作一个1秒的延时,您不用设置或申明晶振参数,您只要用51单片机的BASIC语言写一句:

  Wait 1
或者还可以写:
  Waitms 1000

  是不是很容易理解呢,wait是英语“等”的意思,ms是“毫秒”的意思,等1000个毫秒当然就是等1秒,太明白了!您见过单片机上这么简单的编程语言吗?!
  相同效果的汇编语言请大家参考:(比如晶体振荡器用12M)

  DELAY: ;延时子程序
  MOV R5,#50
  D0:MOV R6,#100
  D1:MOV R7,#100
  DJNZ R7,$ 
  DJNZ R6,D1
  DJNZ R5,D0
  RET ;延时子程序结束,返回到调用

  (其中十进制数#50,#100,#100还分别可以用十六进制的#32H,#64H,#64H替代)若忽略装数等语句,延时子程序从开始到结束,单片机共耗时100*100*50*2uS,即1000000uS=1 秒!若加上装数等语句的耗时,延时时间微观上略大于1秒。

  学过51单片机汇编语言的人都知道相同的效果用汇编语言是多么麻烦,而且选择不同寄存器的循环参数随着选择晶体频率的不同还要根据指令占用的时钟周期进行手工分析来计算,是不是觉得很多精力和时间浪费在这些低效率的劳动中呢?!

  再比如:用实验板外接一个16X2的LCD液晶显示屏上第一行显示一句话:“Hello!”,第二行显示一句话:“I love YOU!”,用51单片机的BASIC语言您只要先指定一下LCD集成电路各数据脚与51单片机哪个P口对应,然后用LCD命令直接输出就可以啦,免LCD显示屏初始化程序,比如接的是P1口,您只要写:
  
  Config LCD = 16*2     '申明LCD类型为16X2字符型液晶显示屏
  Config LCDpin = pin,DB4=P1.4,DB5=P1.5,DB6=P1.6,DB7=P1.7,E=P1.3,RS=P1.2
                '申明LCD集成块各数据脚与51单片机连接关系
  CLS            'LCD显示屏清屏,并将光标移至第一行首字符位
  Cursor off         '光标闪烁消隐
  LCD "Hello!"        '显示字符Hello!
  Lowerline         '把光标移至第二行首字符位
  LCD "I love YOU!"     '显示字符I love YOU!

  而相同效果的单片机汇编语言或C语言程序仅LCD显示屏初始化程序的代码长度就远远超过以上BASIC语言代码长度,抽像与复杂程度更是不言而喻。  

  用51单片机的BASIC语言进行简捷、直观而又高效的编程的例子不胜枚举,由于BASIC语言非常容易理解,所以程序在编制的过程中基本上不会有错,即使出错一般只要再核对几遍就可以排错了,不需要反复上目标板或仿真机一行行排错,这款新的51单片机的BASIC语言编译器是基于Windows系统操作界面的,并具有直接编译成机器码的优秀特性,因而使得51 系列单片机的教学在欧美、日本等国家都已经进入了小学课堂。而在中国由于技术的封闭,至目前,单片机的启蒙教学也只是大中专院校学生的事情,甚至相当一部分单片机、电子或电脑专业的大学生经过几年专业的学习以后,到毕业时还为了做一个像样的毕业设计而烦恼。如果您想脱颖而出,请您选择BASIC,相信我们没错的,您的收获与进步是我们最大的心愿!


  二、蓝点方舟BASIC51开发系统之BASIC语言基本算式及变量形式(示例)

  1、付值方法(示例)
  用等于号直接付值,例如:
  X = 0           '常量付值
  Y = x + z         '变量付值
  P0 = &B10100011    '二进制付值
  P1 = 3          '十进制付值
  P2.5 = 1         '位付值
  P3 = &HC8        '十六制付值

  2、运算方式(示例)
  加法:+
  减法:—
  乘法:*
  除法:/

  求余数:Mod
  例如:x=19 mod 3  '19除以3余数是1,所以x=1。

  以及大于、小于、逻辑运算及各种函数运算,如SIN(X)等。

  3、变量形式(示例)
  除指令字母以外的其它字母或加数字均可,例如:
  aa
  b1
  stn5
  move0
  pat(10)   '数组,代表Pat(1),Pat(2)...Pat(10)十个数


  三、蓝点方舟BASIC51开发系统之BASIC语言常用指令说明
  (以下为简介,指令详细说明请参照套件各个版本中/英文说明书。)

  $BAUD      '设定串口的速率
  $CRYSTAL     '申明所用石英晶体的振荡频率
  ABS( )       '绝对值计算
  ALIAS       '为变量重新取名
  ASC( )       '将字符串的第一个字母转为其ASCII码值
  BITWAIT     '一直等待某个位等于0或1
  CALL        '调用子程序
  CHR( )        '把ASCII数值转换成其相应的字母、数字或字符
  CLS        '清除LCD液晶显示屏,并把光标移到第一行的第一个字符位
  CONST      '申明一个符号常量
  CONFIG  LCD   '设置LCD液晶显示屏的规格类型
  CONFIG  LCDPIN '设置LCD液晶显示屏与MCS-51单片机的管脚连接关系
  CONFIG  TIMER0 '设置定时器/计数器之定时器Timer0的工作模式
  CONFIG  TIMER1 '设置定时器/计数器之定时器Timer1的工作模式
  COUNTERx    '存取定时器/计数器之计数器Counter0或Counter1的内容
  CURSOR      '设置LCD液晶显示屏的光标状态
  DATA         '存放常量数据资料,即数据列表
  DEBOUNCE    '消除开关或者键盘所产生的接点反弹跳
  DECR         '把数值型变量的内容减一
  DECLARE  SUB   '申明一个子程序
  DEFtype      '申明以同一个字母为首的变量,皆属于同一类型的数据
  DEFLCDCHAR   '定义LCD液晶显示屏的自定义字符或图形
  DELAY       '延时一个短的时间(100us)
  DIM         '申明一个变量的数据类型
  DISABLE      '令中断为不能
  DISPLAY      '命令LCD液晶显示屏显示或者熄灭
  DO...LOOP      '重复执行一个程序段,直到条件成立
  ELSE         '当IF...THEN的条件不成立时则执行相应的程序段
  ENABLE      '令中断为能
  END        '终止程序的标志(全部程序结束的标志,伪指令)
  END  IF       'IF...THEN结构的结束标志        
  ERASE       '删除某个变量,以释放其占用的单片机ROM和RAM空间
  EXIT           '立即跳出循环或子程序
  FOR          '把一个指定程序段无条件执行指定的若干次
  FOURTHLINE    '把光标移到LCD液晶显示屏第4行的首字符
  GOSUB      '执行子程序,完成后返回原跳转处接下一行继续执行
  GOTO       '执行子程序,完成后不返回
  HEX( )         '把数值转换成16进制数值的字符串
  HEXVAL( )     '把16进制之字符串转换成10进制之数值
  HIGH( )       '撷取数值的最高位字节
  HOME       '把光标移至LCD显示屏的第一行的首字符位
  IDLE          '命令MCS-51单片机进入闲置工作模式
  IF            '根据条件执行相应的程序段
  INCR         '把数值型变量的内容加一
  INPUT       '从串行口读取ASCII码形式的数据
  INPUTBIN     '从串行口读取二进制位数据
  LCD        '在LCD液晶显示屏上显示字符
  LCDHEX      '在LCD液晶显示屏上显示16进制的数值
  LEFT( )        '撷取字符串最左边的若干个字节
  LEN( )         '计算字符串的长度
  LOAD       '设置定时器/计数器的自动再载入数值
  LOCATE      '把LCD液晶显示屏的光标移到指定的位置
  LOOKUP( )    '读取数据列表中指定位置的数值数据
  LOOKUPSTR( )  '读取数据列表中指定位置的字符串数据
  LOW( )       '撷取数值的最低位字节
  LOWERLINE   '把光标移到LCD液晶显示屏第二行的首字符位
  MAKEBCD( )   '把数值转换成BCD的形式
  MAKEINT( )    '把两个Byte单字节型数据组合成Word或Integer双字节型数据
  MAKEDEC( )   '把BCD码转换成十进制的数值
  MID( )        '撷取字符串的一部分字节,或者以其它字符串内的字节取代本字符串内一部分字节
  MOD       '求余数运算
  NEXT       'FOR...NEXT无条件循环结构的结束标志
  ON Interrupt   '当中断发生时,执行相应的子程序
  ON value     '根据变量的值而执行相应的程序或者子程序
  POWERDOWN  '命令MCS-51单片机进入功率下降工作模式
  PRINT      '将数据以ASCII码的形式从串行口发送出去
  PRINTBIN     '将数据以二进制形式从串行口发送出去
  PRINTHEX    '将数据转换成十六进制值,然后以ASCII码的形式由串行口发送出去
  PRIORITY     '设置中断的优先权
  READ       '顺序读取数据列表中的数据
  REM       '程序注释标志,功能与单引号 ' 作用相同,BASCOM-8051中通常用单引号 ' 标识注释内容
  RESET      '令变量的某个位等于0
  RESTORE      '把指针指向数据列表的开头
  RETURN      '子程序结束标志(从子程序返回到主程序)
  RIGHT( )       '撷取字符串最右边的若干个字节
  RND( )        '产生随机数
  ROTATE      '把变量的内容向左或者向右旋转移动数个位
  SELECT CASE   '根据变量的内容去执行某些程序段
  SET         '令变量的某个位等于1
  SHIFTCURSOR  '令LCD液晶显示屏光标向左或向右移动一位
  SHIFTLCD     '令LCD液晶显示屏所显示内容的全部字节向左或向右移动一位
  SOUND      '由单片机某个I/O接脚送出一定频率的音频的声音
  START       '启动定时器/计数器
  STOP        '停止程序的执行(全部程序结束标志,非伪指令)
  STOP TIMERx    '命令定时器/计数器停止工作
  STR( )         '把数值转换成字符串形式
  SUB        '定义一个子程序
  SWAP       '把两个数值变量的内容对调
  THIRDLINE    '把LCD液晶显示屏的光标移到第三行的首字符位
  UPPERLINE     '把LCD液晶显示屏的光标移到第一行的首字符位
  VAL( )         '把字符串形式的数字转换成数值
  WAIT       '延时若干秒
  WAITKEY     '等待串行口接收到一个字节
  WAITMS      '延时若干毫秒
  WHILE...WEND  '重复执行循环程序段,直到条件不成立为止


  四、实例例程(示例,您可以对比其它相关资料上相同或类似功能的汇编程序或者C程序,是否觉得BASIC语言比较通俗易懂呢)

  '例程一:键盘测试3.BAS

  '实现方案:〖使用Beta-EISP下载型可编程多功能实验板〗
  '【功能】:当按1号控制板键盘上的16个键相对应的
"0"、"1"……"9"、"a"、"b"、"c"、"d"、"e"、"f",仿真实验板的8个LED数码管(共阴极)会显示相应的数码。

P0 = &B00000000
P2 = &B11111111
P3 = &B11111111

Again:
   P3 = &B01111111
   If P3.0 = 0 Then Goto Key0
   If P3.1 = 0 Then Goto Key1
   If P3.2 = 0 Then Goto Key2
   If P3.3 = 0 Then Goto Key3

   P3 = &B10111111
   If P3.0 = 0 Then Goto Key4
   If P3.1 = 0 Then Goto Key5
   If P3.2 = 0 Then Goto Key6
   If P3.3 = 0 Then Goto Key7

   P3 = &B11011111
   If P3.0 = 0 Then Goto Key8
   If P3.1 = 0 Then Goto Key9
   If P3.2 = 0 Then Goto Keya
   If P3.3 = 0 Then Goto Keyb

   P3 = &B11101111
   If P3.0 = 0 Then Goto Keyc
   If P3.1 = 0 Then Goto Keyd
   If P3.2 = 0 Then Goto Keye
   If P3.3 = 0 Then Goto Keyf

   Goto Again
' =============================

 Key0:
      P2 = &HC0
      Goto Again

 Key1:
      P2 = &HF9
      Goto Again

 Key2:
      P2 = &HA4
      Goto Again

 Key3:
      P2 = &HB0
      Goto Again

 Key4:
      P2 = &H99
      Goto Again

 Key5:
      P2 = &H92
      Goto Again

 Key6:
      P2 = &H82
      Goto Again

 Key7:
      P2 = &HF8
      Goto Again

 Key8:
      P2 = &H80
      Goto Again

 Key9:
      P2 = &H90
      Goto Again

 Keya:
      P2 = &H88
      Goto Again

 Keyb:
      P2 = &H83
      Goto Again

 Keyc:
      P2 = &HC6
      Goto Again

 Keyd:
      P2 = &HA1
      Goto Again

 Keye:
      P2 = &H86
      Goto Again

 Keyf:
      P2 = &H8E
      Goto Again
End


  '例程二:'世上只有妈妈好.BAS

  '实现方案:〖使用Beta-EISP下载型可编程多功能实验板〗
  '【功能】:让51系列单片机演奏音乐《世上只有妈妈好》,器件为P1.1接口的蜂鸣器。

Dim Tone As Byte , Tempo As Byte
Dim Nhi As Byte , Nlow As Byte
Dim N As Byte

Config Timer0 = Timer , Gate = Internal , Mode = 1

On Timer0 Timer0sub

Enable Interrupts
Enable Timer0
Priority Set Timer0
Start Timer0


Repeat:

   Restore Music

Again:
   Read Tone
   If Tone = 99 Then
      Goto Repeat

   Elseif Tone = 44 Then
      Bitwait P1.1 , Set
      Stop Timer0
      Stop

   Else
      Read Tempo
      For N = 1 To Tempo
         Waitms 125
      Next

      Bitwait P1.1 , Set
      Stop Timer0
      Waitms 25
      Start Timer0
      Goto Again
   End If


End


Rem The Interrupt Handler For The Timer0 Interrupt
Timer0sub:

   Nhi = Tone * 2
   Nlow = Nhi + 1
   Th0 = Lookup(nhi , Table)
   Tl0 = Lookup(nlow , Table)
   If Tone = 0 Then
      P1.1 = 1
   Else
      P1.1 = P1.1 Xor 1
   End If
Return


Table:
   Data &HF1 , &H17
   Data &HF1 , &H17
   Data &HF2 , &HB7
   Data &HF4 , &H2A
   Data &HF4 , &HD7
   Data &HF6 , &H09
   Data &HF7 , &H1F
   Data &HF8 , &H18
   Data &HF8 , &H8C
   Data &HF9 , &H5C
   Data &HFA , &H15
   Data &HFA , &H67
   Data &HFB , &H04
   Data &HFB , &H90
   Data &HFC , &H0C
   Data &HFC , &H42
   Data &HFC , &HAC
   Data &HFD , &H09
   Data &HFD , &H36
   Data &HFD , &H82
   Data &HFD , &HC8
   Data &HFE , &H06


Music:

    Data 13 , 6 , 12 , 2 , 10 , 4 , 12 , 4 , 15 , 4 , 13 , 2 , 12 , 2 , 13 , 6 , 0 , 2
    Data 10 , 4 , 12 , 2 , 13 , 2 , 12 , 4 , 10 , 2 , 9 , 2 , 8 , 2 , 6 , 2 , 12 , 2 , 10 , 2 , 9 , 6 , 0 , 2
    Data 9 , 4 , 9 , 2 , 10 , 2 , 12 , 4 , 12 , 2 , 13 , 2 , 10 , 6 , 9 , 2 , 8 , 6 , 0 , 2
    Data 12 , 6 , 10 , 2 , 9 , 2 , 8 , 2 , 6 , 2 , 8 , 2 , 5 , 6 , 0 , 2
    Data 99


'例程三:LCD&左移多汉字LED.BAS

  '实现方案:〖使用Beta-EISP下载型可编程多功能实验板、Sigma-Emini超级仿真实验板、标准1602背光LCD液晶显示屏、16X16φ3.75单红LED汉字点阵屏实验板〗
  '【功能】:在16X2的LCD液晶显示屏 ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:61毫秒 最大:7276毫秒 查询6次