|
所有带“$”符号的关键字均为编译器指示语句, 所有的编译器指示语句必须书写在程序的开始的位置,它本身不编译出具体的代码,但是会把相应功能的子程序连接到程序中去,效果有点象C里头的一些头文件包含某某函数,在这一节我们来了解常用的编译器指示语句 。
1.$Device
处理器配置语句,声明所使用芯片的型号等参数,编译器会编译出适应它的代码,括号里面为可选项。
语法: $Device=type [, Xram, FirstAdr, XramLength]
注释: 如果芯片支持外部的RAM同时你要使用它那么你必须先声明,比如你使用了M8515,扩展了ram或者8255等。
例子: $Device= 4433 $Device= tiny13 $Device= M128, Xram, 0, 32k 'M128芯片,有外部RAM,地址从0开始容量32K Byte
以下声明作用相同: $Device= ATmega16 $Device= mega16 $Device= m16
2.$Stack 处理器配置语句,定义堆栈的大小,如果堆栈设置得太小就会溢出,从而得出错误的运算结果。 语法: $Stack=num 注释: num 是为堆栈保留的字节数 例子: $Stack = 32 '默认保留32个字节供堆栈使用 $Stack = 50 '保留50个字节供堆栈使用 那么什么时候堆栈的空间会被使用呢?主要是: · 调用过程和函数(返回地址) · 自定义函数参数的传递(参数传递基于堆栈的形式) · 局部变量 (就是声明过程,函数,中断里面定义的变量) · 加上进入中断程序的时候要保存的寄存器的空间
3.$Clock 处理器配置语句,声明芯片的时钟频率,如果声明的时钟频率和芯片实际工作频率不一样将会影响串口波特率和其它延时指令。 语法: $Clock=const 注释: const 单位MHz 例子: $Clock = 3.6864 '时钟频率为3.6864MHz $Clock = 8.000 '时钟频率为8.000MHz
4.$Source 编译器指示语句,将BASIC源程序里面的注释转移到输出的汇编文件相应的地方,方便大家理解与调试。 语法: $Source=ON '注释转移 $Source=OFF '注释不转移 系统默认值是ON
5.$Asm, $EndAsm 编译器指示语句,在程序中插入汇编 语法: $Asm ... $EndAsm 注释: 这个指令允许在线汇编,$Asm 与 $EndAsm 必须成对使用,全局变量可以在汇编中直接使用。 例子: $Asm '开始插入汇编 ldi zl,0x65 st c,zl $EndAsm '结束插入
6.$Angles 编译器指示语句,如果你在程序中使用了三角函数,那么就要声明三角函数的单位是度数Degrees还是弧度Radians 语法: $Angles = Degrees|Radians 注释: 系统默认是弧度Radians,也就是说你本身用弧度那么就无须声明。 例子: $Angles=Degrees '声明角度单位为度 Dim f1 As Float '定义一个浮点型的变量f1 f1=Sin(30) 'f1=0.5000000
7.$Baud 处理器配置,定义UART串口的波特率和工作模式 语法: $Baud = const [, Parity, DataBits, StopBits] $Baud2 = const [, Parity, DataBits, StopBits] ' 适合第二个UART 假如UART 工作在默认的模式 (无奇偶校验, 8数据位, 1停止位)则可以简写成: $Baud = 9600 如果指定奇偶校验,将增加额外的程序进行处理! 注释: const 是串口波特率的一些标准值: 1200, 2400, 4800, 9600, 19200, 38400, 56600,76800,115200 Mega系列芯片可以工作于高波特率 Parity N=无校验, O=奇校验, E=偶校验, M=标志 or S=空 DataBits 5, 6, 7, 8 or 9 StopBits 1 or 2 (在9 DataBits的时候,必须是 1 StopBit) 请看 AVR 数据手册 UART 设置部分 例子: $Baud = 9600 '波特率9600bps,无奇偶校验, 8数据位, 1停止位 $Baud2 = 9600 '第二串口波特率9600bps,无奇偶校验, 8数据位, 1停止位
8.$Include 编译器指示语句,指示包含的basic程序的路径,比如液晶用的软字体。 语法: $Include "Path\BasDoc.bas" 注释: 程序中引用或包含了另外的basic程序,那么这个指令就是告诉编译器被引用basic程序存放的路径。 例子: $Include "C:\FastAVR\Init.bas" ‘包含初始化程序Init.bas $Include "C:\FastAVR\Font.bas" ‘包含字体程序Font.bas
9.$IncludeAsm 编译器指示语句,指示包含的ASM汇编程序的路径。 语法: $IncludeAsm "Path\Utils.asm" 注释: 程序中引用或包含了另外的asm程序,那么这个指令就是告诉编译器被引用asm程序存放位置。 例子: $Include "C:\FastAVR\Init.asm" |