先学习C语言吧,贪多嚼不烂。暂时跳过汇编,开始学习第11课。
学习笔记:
1.C51的扩展了19个关键字: _at_ idata sfr16 alien interrupt small bdata large _task_ code bit pdata using reentrant xdata compact sbit data sfr 通过视频和网络进行了整理
关键字 | 用 途 | 说 明 | bit | 位标量声明(1/0) | 声明一个位标量或位类型的函数/可用于返回值 | sbit | 位标量声明,从字节中定义位变量(1/0) | 声明一个可位寻址变量,可位寻址对象的位 | Sfr | 特殊功能寄存器声明,字节寻址 | 声明一个特殊功能寄存器 | Sfr16 | 特殊功能寄存器声明,字寻址 | 声明一个16位的特殊功能寄存器 | data | 存储器类型说明 | 直接寻址的内部数据存储器,内部RAM的低128字节 | bdata | 存储器类型说明 | 可位寻址的内部数据存储器,地址范围20H~2FH | idata | 存储器类型说明 | 间接寻址的内部数据存储器,整个内部RAM256字节 | pdata | 存储器类型说明 | 分页寻址的外部数据存储器;以后不用 | xdata | 存储器类型说明 | 变量保存到外部数据存储器,多达64KB的外部直接寻址区 | code | 存储器类型说明 | 变量保存到程序存储器 | interrupt | 中断函数说明 | 定义一个中断函数 | reentrant | 再入函数说明 | 定义一个再入函数 | using | 寄存器组定义 | 定义芯片的工作寄存器 | 2.Keil C51指针
一般指针和存储器指针
例1:
unsigned char xdata *pt; //pt本身以存储模式存放
unsigned char xdata * data pt; //pt被保存在内部RAM中 见上表说明
unsigned char xdata * xdata pt; //pt被保存在外部RAM中 见上表说明
例2:
char data * str; //str指向data区中char型数据
int xdata * pow; //pow指向外部RAM的int型整数
其他:曾经用到volatile,有初步了解。系统运行定时器 volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据,volatile编译器对访问该变量的代码就不再进行优化。
3.中断函数的声明
void Uart1_ISR (void) interrupt 4 using 1
4:中断顺序号(中断号),
1:using后对应0~3个寄存器区 不写可以由编译系统自己选择
4.逻辑运算
|