- 打卡等级:偶尔看看III
- 打卡总天数:46
- 最近打卡:2025-04-23 18:50:02
注册会员
- 积分
- 102
|
发表于 2023-12-10 21:32:15
|
显示全部楼层
第十一集 单片机C语言程序设计一
----C51对ANSI C的扩展
----变量或数据类型
声明变量时,应根据变量数值大小合理的选择数据类型
----bit变量可用于变量类型和函数声明、函数返回值等。存储于内部RAM的20H~2FH单元, 位不能声明位一个指针 不能为数组
----可位寻址区 sbit声明可独立访问可位寻址对象的位 要求基址对象的存储器类型位bdata 否则只有绝对的位声明方法是合法的 位的位置(^后的数字)最大值依赖于指定的基类型
char/unsigned char (0-7) int/unsigned int/short/unsigned short(0-15) long/unsigned long(0-31) 可位寻址对象的位声明只能放到main函数的外部作为全局变量使用, 否则编译报错。
----特殊功能寄存器(SFR)用来控制定时/计数器 串口 I/O及其他不见 支持sfr、sbit等关键字
sfr:字节寻址 sfr P0 = 0X80; // =后为常数 且这个常数就是特殊功能寄存器的对应地址
sfr16: 字寻址 sfr16 DPTR = 0X82; //指定DPTR的地址DPL = 0X82 DPH = 0X83
sbit:位寻址 用于声明可位寻址的特殊功能寄存器的位变量 sbit CY = PSW^7; //定义CY为PSW的第7位 且PSW必须之前已经被定义
----存储区域的制定
code 关键字表示 变量保存到程序存储区 可用于定义表格常速 以节省内部RAM的使用 unsigned char code led_buf[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,x06f}; //共阴极数码管显示字模
data 直接寻址区 内部低128字节 00H~7FH 默认声明变量保存区域
idata 间接寻址区 内部RAM256字节 00H~FFH
bdata 可位寻址区 20H~2FH
xdata 可指定多达64KB的外部直接寻址区 0000H~FFFFH 需要声明较大的数组时 可以使用xdata关键字将变量数组保存到扩展RAM中。 unsigned char xdata arr[300];
pdata 能访问1页(256B)的外部RAM(不推荐)
----keil C51指针
----C51对函数的扩展
----C语言程序中的常用运算
----C51程序框架
|
|