C51对C语言的扩展
C51与标准C语言在数据结构、I/O处理、函数等方面与标准C语言存在差别
数据结构
sfr、sfr16 特殊功能寄存器型变量
- 特殊功能寄存器(SFR,Special Function Register)在单片机中有很重要的作用,常见的SFR是8位,所以sfr16用于表示16位的SFR
- 定义方式为 变量类型 变量名 = 地址
如 sfr P1 = 0x90 - 所有的sfr、sfr16型变量都已定义在"reg51.h"、"reg52.h"中
bit 、sbit 位变量
- bit 、sbit 型变量在内存中都只占一个二进制位
- bit 用于定义一般可处理位的变量,sbit 用于定义特殊功能寄存器中的可位寻址的变量
- sbit 可用绝对位地址、相对位地址、相对sfr变量位位置定义
sbit CY = 0xD7 sbit CY = 0xD0^7 sbit CY = PSW^7
可定义存储器类型
可指明定义的变量分配到哪一个存储器中
完整定义格式为
存储种类 数据类型 存储器类型 变量名 = 初值
I/O处理
中断函数
中断是单片机的重要特性,C51在C语言函数的基础上补充了中断函数的概念
- 中断函数的定义
interrupt m
修饰符,表明某个函数为中断响应函数,编译时将该函数将该函数转化为中断响应函数,根据 m 的取值将函数地址存放在程序存储器的中断对应的位置 - 中断函数不能传递参数,不能有返回值
- 中断函数不能被其他函数调用
- 若中断函数调用其他函数,所调用的函数使用的寄存器必须与中断函数相同
单片机基础(五):中断
定义形式如下
void main(){
......
}
void Int0_isr interrupt 0{
......
}
2019/2/24