C51根据单片机的特性扩展了相关的关键字,如下表示:
关键词 | 用途 | 说明 |
bit | 位变量声明 | 声明了一个位变量或者位类型的函数 |
sbit | 位变量声明 | 声明了一个可位寻址变量 |
sfr | 特殊功能寄存器声明 | 声明一个特殊功能寄存器 |
sfr16 | 特殊功能寄存器声明 | 声明一个16位的特殊功能寄存器 |
data | 存储器类型说明 | 直接寻址的内部数据存储器 |
bdata |
存储器类型说明
|
可位寻址的内部数据存储器 |
idata |
存储器类型说明
|
间接寻址的内部数据存储器 |
pdata |
存储器类型说明
|
分页寻址的内部数据存储器 |
xdata |
存储器类型说明
|
外部数据存储器 |
code |
存储器类型说明
|
程序存储器 |
interrupt | 中断函数说明 | 定义一个中断函数 |
reentrant | 再入函数说明 | 定义一个再入函数 |
using | 寄存器组定义 | 定义芯片的工作寄存器 |
C51中断函数的写法
使用C51编写中断服务函数,其实就是编写中断函数。中断函数定义的语法如下:
void func_name() [ interrupt n ] [ using n ]
中断函数不能返回任何值,且不能带有任何参数。
关键词interrupt后面的n对应中断源的编号,其值为 0 - 4 分别对应单片机的 外中断0、定时器中断0、外中断1、定时器中断1、串口中断
关键词using 后边 n 用来选择单片机的工作寄存器组。 using 后面的 n 对应0 - 3 的常整数 ,分别对应4个不同的工作寄存器组。如果不用该选项,则由编译器自动选择一组寄存器作为绝对寄存器组访问。