C51编程中的自定义“位”及其保存方案
ddr;
ucharWdat,Rdat;
uchar bdatacurrent_dat;//在可位寻址区定义unsigned char类型的字节变量current_dat
sbitsign_bit1= current_dat^0;//用关键字sbit 定义位变量来独立访问可寻址位对象中的1位
sbitsign_bit2= current_dat^1;//自定义标志位2
sbitsign_bit3= current_dat^2;//自定义标志位3
……
sbitsign_bit8= current_dat^7;//自定义标志位8
……
void Bit_save() {//自定义标志位保存子程序
addr=0x7F6;//给予存储地址
Wdat= current_dat;//将current_dat赋值给写E2PROM的缓冲单元Wdat
save_data();//调用保存子程序存储current_dat数据
}
void Bit_comeback() {//自定义标志位复原子程序
addr=0x7F6;//给一个原来的存储地址
REEPROM();//调用读取E2PROM的子程序
current_dat=Rdat;
//将读出的数据还给通用的辅助字节变量
}
以上这段程序所阐述的,也许是有关自定义位操作及其保存的一种最简捷的方案了。首先是在可位寻址区定义ucsigned char类型的通用字节变量current_dat,再用关键字“sbit”定义位变量来独立访问可寻址位对象的其中一位。这样将自定义标志位提高到类同于特殊功能寄存器(SFR)中可位访问的方式来操作了——字节变量current_dat中的8个位各自可以独立操作,且其保存或读出复原都只要直接将字节变量current_dat进行保存或读取即可,无须像其他方案那样需要进行逻辑与、逻辑或等的辅助操作。
结语
单片机的C语言编程中不一定都要有自定义的标志位,但是在某些场合运用了自定义的标志位,会使整个程序显得简洁而明快。当然,对于自定义标志位的保存也是视其具体情况而定——应该说是不得已而为之的。
- 实用C51编程的高级技巧(C51编程)(11-25)
- 进制转换 89c51编程实例1.1(11-24)
- C51编程经验三则(11-23)
- C51编程风格(11-23)
- C51编程中对单片机绝对地址访问的两种方法(11-17)
- 单片机系统设计与C51编程实践分享(01-16)