资源描述:
《c51程序设计代码实例》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C51程序设计的菜单的代码实例/* Module :Kbdmenu.c Date:------Usage:P10~P12usetoDownKey,UpKey,CRKey*/#include #include #define SIZE_OF_KEYBD_MENU 20//菜单长度uchar KeyFuncIndex=0;//uchar KeyFuncIndexNew=0;void (*KeyFuncPtr)(); //按键功能指针typedefstruct{
2、 uchar KeyStateIndex; //当前状态索引号 uchar KeyDnState; //按下"向下"键时转向的状态索引号 uchar KeyUpState; //按下"向上"键时转向的状态索引号 uchar KeyCrState; //按下"回车"键时转向的状态索引号 void (*CurrentOperate)(); //当前状态应该执行的功能操作} KbdTabStruct;KbdTabStruct code
3、 KeyTab[SIZE_OF_KEYBD_MENU]={ {0,0,0,1,(*DummyJob)},//顶层 {1,2,0,3,(*DspUserInfo)},//第二层 {2,1,1,9,(*DspServiceInfo)},//第二层 {3,0,0,1,(*DspVoltInfo)},//第三层>>DspUserInfo的展开 {4,0,0,1,(*DspCurrInfo)},//第三层>>DspUserInfo的展开 {5,0,0,1,(*DspFreqIn
4、fo)},//第三层>>DspUserInfo的展开 {6,0,0,1,(*DspCableInfo)},//第三层>>DspUserInfo的展开...........{9,0,0,1,(*DspSetVoltLevel)}//第三层>>DspServiceInfo的展开..........};void GetKeyInput(void){ uchar KeyValue; KeyValue=P1&0x07;//去掉高5bit delay(50000); switch(KeyValu
5、e) { case 1: //回车键,找出新的菜单状态编号 { KeyFuncIndex=KeyTab[KeyFuncIndex].KeyCrState; break; } case 2: //向上键,找出新的菜单状态编号 { KeyFuncIndex=KeyTab[KeyFuncIndex].KeyUpState; break;
6、 } case 4: //向下键,找出新的菜单状态编号 { KeyFuncIndex=KeyTab[KeyFuncIndex].KeyDnState; break; } default: //按键错误的处理...... break; } KeyFuncPtr=KeyTab[KeyFuncIndex].CurrentOperate; (*KeyFuncPtr)();//执行当
7、前按键的操作}//其中KeyTab的设计颇费尽心机51单片机浮点数据存储代码实例Float 浮点形。 它是符合IEEE-754标准的单精度浮点形数据,在十进制中具有7位有效数字。FLOAT型据占用四个字节(32位二进制数),在内存中的存放格式如下:字节地址(由低到高)0 1 2 3浮点数内容 MMMMMMMM MMMMMMMM EMMMMMMM SEEEEEEE其中,S为
8、符号位,存放在最高字节的最高位。“1”表示负,“0”表示正。E为阶码,占用8位二进制数,存放在高两个字节中。注意,阶码E值是以2为底的指数再加上偏移量127,这样处理的目的是为了避免出现负的阶码值,而指数是可正可负的。阶码E的正常取值范围是1~254,从而实际指数的取值范围为-126-12