微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > C51编程中的自定义“位”及其保存方案

C51编程中的自定义“位”及其保存方案

时间:02-17 来源:互联网 点击:

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语言编程中不一定都要有自定义的标志位,但是在某些场合运用了自定义的标志位,会使整个程序显得简洁而明快。当然,对于自定义标志位的保存也是视其具体情况而定——应该说是不得已而为之的。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top