- 阅读权限
- 200
- UID
- 1
- 帖子
- 54
- 精华
- 0
- 注册时间
- 2013-2-20
- 在线时间
- 72 小时
- UID
- 1
- 帖子
- 54
- 精华
- 0
- 注册时间
- 2013-2-20
- 在线时间
- 72 小时
|
第一讲 认识BASCOM-AVR
1.1 BASCOM-AVR的主要特点
BASCOM-AVR具有BASIC语言的数据类型和语法特点,提供支持多种AVR系列单片机硬件资源的语句,BASCOM-AVR平台下的BASIC语言主要有以下特点:
* 结构及语句与VB、QB高度兼容;
* 结构化编程,支持SUB子程序和FUNCTION函数;
* 支持结构语句IF-THEN-ELSE-END IF、DO-LOOP、WHILE-WEND、SELECT- CASE;
* 变量和标号支持长达32字符;
* 支持的变量类型有:Bit、Byte、Integer、Word、Long、Single、Double and String;
* 支持Double类型(8字节浮点),得以处理巨大数字;
* 提供特殊指令和语句支持:字符型LCD、I2C总线器件、1wire单总线器件、PC键盘、矩阵键盘、SPI总线器件、图形LCD、红外遥控接收发送、模拟UART等;
* 提供对TCP/IP硬件协议栈芯片W3100A的支持;
* 支持局部变量、用户自定义函数、库函数等;
* DEMO版本可编译4K代码;
* 自带大量基本语句和应用例程;
* 帮助文件非常详细,使用方便。
1.2 数据类型和变量声明
1.2.1数据类型
* Bit — 二进制逻辑位,仅取0和1两个值;
* Byte — 字节,1字节,取值范围0~255;
* Integer — 整型,2字节,最高位是符号位,取值范围-32768~+32767;
* Word — 字,2字节,取值范围0~65535;
* Long —长整型,4字节,取值范围-2147483648~+2147483647;
* Single —单精度浮点数,取值范围±1.5E-45~3.4E38;
* Double —双精度浮点数,取值范围±5.0E-324 to 1.7E308;
* String —字符串,最长254个字符(1字符占1字节)。
编写程序时,要根据变量性质和可能的最大值,定义为合适的数据类型,尽量采用短字节类型,例如byte类型,可以降低MCU计算量并节省FLASH。
1.2.2变量声明
凡是用到的变量,都必须事先定义变量及其数据类型。
DIM、LOCAL、CONST用来声明变量。
DIM声明全局变量。LOCAL声明局部变量,用在子程序或函数中,子程序戒函数执行完毕后即被释放。CONST用来声明常量。
一般格式:
DIM 变量名 AS 数据类型
LOCAL 变量名 AS 数据类型
CONST变量名 = XXX
关于变量定义的复杂用法,例如定义到EEPROM或者指定地址,请参看BASCOM的HELP,这里不再赘述。
1.2.3 关于数组
数组是一组变量的集合,具有相同的名字,以其后括号内的数字(称“下标”)来相互区别,例如:A(1),A(2).……
数组的定义与普通变量定义基本相同,例如:
DIM A(8) AS Byte
数组A()的类型为byte,序号为1~8。注意,BASCOM-AVR的数组下标下界最小为1,这与VB/QB有所不同。
1.3 算术运算和逻辑运算
加减乘除不与或,大小等于不等于。这是基础中的基础,没必要再细讲了。
注意的一点是,BASCOM-AVR只允许一个表达式当中只能有一个运算符。
例如:
A = B * C 合法
A = B * C – D 不合法
1.4 字符串运算
BASCOM具有强大的字符串处理能力,提供了大量的处理函数。字符串在用作单片机输入输出,例如LCD显示、与PC机串口通讯时,非常快捷方便。现只讲一下基本应用。
DIM S1 As String*4, S1 As String*4, S As String*10 定义字符串变量和长度
S1=”ABCD” : S2=”EF”
S=S1+S2 S返回的值为”ABCDEF”
S=MID(S, 2, 3) S返回的值为”BCD”
S=LEFT(S1, 2, 3) S返回的值为”ABC”
MID(S, 2, 1)=”F” S返回的值为”AFC”
涉及字符串处理的函数还有很多,包括格式、空格、大小写处理,类型转换、进制形式、查找、替换等等。
1.5 单片机端口操作
AVR单片机具有可编程通用输入输出(I/O)端口,例如MEGA8共有3个端口,PORTB、PORTC、PORTD,每个端口一般有8个引脚,通常编号0~7。单片机编程的实质,就是控制和检测这些端口(引脚)的高低电平,来实现相应的功能。
在I/O控制上,可以把一个端口当成一个字节,把一个引脚当成一个比特来想象。先认识一下3个想象的“变量”,PORTx、PINx、DDRx。
DDRx 端口方向寄存器。告诉单片机某个端口或者引脚是用作输入还是输出。比如要用某引脚控制LED亮灭,此引脚就要配置为输出。若要用这个引脚检测按键状态,就要配置为输入。
DDRB=&FF/&H00 将PORTB全部配置为输出/输入
DDRB=&B111000000 将PORTB第0~4引脚配置为输入,5~7引脚配置为输出
DDRB.3=1 将PORTB引脚3(PortB.3)配置为输出
BASCOM还有专门的端口配置语句Config PORTx=Output/Input,功能与直接使用DDRx相同,请看帮助文件。
PORTx 设置端口或引脚的高低电平。
PORTB=&HFF/&H00 设置PORTB全部为高电平/低电平
PORTB.3=1 设置PORTB引脚3(PortB.3)为高电平
当端口配置为输出状态时,此时作为驱动引脚控制外围电路;当端口配置为输入状态时,此时用作内部上拉或下拉引脚。
DDRC.2=0 : PORTC.2=1 配置PORTC.2为输入,上拉电阻有效。
PINx 读端口的高低电平状态。
DIM X AS Byte, Y AS BIT
X=PIND 读取端口D所有引脚状态值赋给变量X
Y=PIND.3 读取引脚PIND.3状态赋给变量Y
BASCOM中,PINx可直接进行算术和逻辑运算,把它当成一个变量即可。
有必要讲一下ALIAS语句,ALIAS用来指定端口别名,采用易懂易记的别名来替代端口名。ALIAS对于提高程序的可读性、可维护性、可移植性,作用特别明显。比如项目设计有3个引脚分别控制3个LED,当需要用更换另外3个引脚控制时,只需要修改ALIAS语句部分,主程序不需要修改。
语法: 新变量ALIAS 旧变量
LED1 ALIAS PORTB.2
LED2 ALIAS PORTB.3
主程序中操作LED1、LED2即可,与直接操作PORTB.2、PORTB.3是等价的。
1.6 BASCOM-AVR软件简要介绍
启动BASCOM-AVR后,是下图主界面:
编辑 程序编辑窗口内的源程序,BASCOM的保留字自动显示深蓝加粗,运算符显示红色,汇编保留字显示深红色。编辑一行后,自动调整格式,编程一目了然,便于排错修改。
编译 点编译按钮,软件调用编译器将源程序编译成单片机可运行的机器码,一般编译成2种格式可供下载到单片机。一种是HEX文件,INTEL标准格式,用ASCII字符表示的16进制数字按一定格式排列。HEX文件的大小并不是实际代码的大小,初学者容易混淆。另一种是BIN二进制文件,这个文件的大小即为实际代码大小。一般编程器或下载器都支持HEX和BIN这两种格式。
编译输出文件类型设置,菜单<Options>→<Compiler>→<Output>
仿真 点仿真按钮进入仿真界面。仿真时需要编译时生成OBJ目标文件。在编译输出文件选项中要钩选<AVR Studio Object file>。
程序仿真界面中包含常用设备,字符型LCD、16X16矩降键盘、ADC输入、UART、中断、模拟比较器输入,查看寄存器、IO状态、变量等等,可以满足一般需要。
练习一 编辑、编译、仿真
我们用一个史止最简单程序,走一遍编辑、编译、仿真的步骤。
$regfile = "m8def.dat" ‘mega8单片机配置文件
$crystal = 8000000 ‘声明系统工作主频
$sim ‘仿真专用,忽略wait语句,加快仿真速度。
'实际应用时删除本句。
Dim X As Byte
Dim Y As Byte
X = 123
Y = 213
Z = X + Y
Cls ‘清字符型LCD屏
Lcd Z ‘在字符再教育LCD屏上显示变量Z值
End
在BASCOM环境中新建文件,将上面程序复制到程序编辑窗口中,保存为m8.bas,点<编译>按钮(或者按F7)。
什么结果?出错了吧。双击错误提示,编辑窗口里错误行显示红色。
想想为什么出错?
变量Z没有定义,需要提前定义变量Z。再想想,Z需要定义为什么类型?X+Y>255,超出字节型取值范围,我们把Z定义为Word吧。
Dim Z As Word
在源程序变量定义部分补上一行:Dim Z As Word
再点<编译>按钮(或者按F7),没有错误提示,编译通过。
点<仿真>按钮(或者按F2),出现以下仿真主窗口:
点LCD图标的硬件仿真按钮,出现以下窗口:
点仿真主窗口的<运行>按钮,看看有什么结果?
仿真窗口的LCD上显示336,正是变量Z的值。 后面的电路练习例程中,我们将结合Proteus进行仿真。 Proteus仿真教程:http://www.avrbase.com/forum.php?mod=viewthread&tid=116
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
|