单片机指令为什么分单、双、三字节?单字节为什么只有49条?双字节为什么只有46条?
有些指令一个字节就能实现,有的指令要两个或3个字节才可能实现,当然就有不同长度的指令了。每种长度的指令具体多少条,取决于实际需要
计算机语言也是一种语言,唯一的区别是它用来和计算机对话
自然语言也分但字的句子,双字的词语,四字成语,这哪来那么多为什么
按键设计函数
unsigned char key_read(){
unsigned int key_new;
unsigned char key_val;
P44 = 0;P42 = 1;P35 = 1;P34 = 1;
key_new = P3;
P44 = 1;P42 = 0;
key_new = (key_new<<4)|(P3&0x0f);
P42 = 1;P35 = 0;
key_new = (key_new<<4)|(P3&0x0f);
P35 = 1;P34 = 0;
key_new = (key_new<<4)|(P3&0x0f);
switch(~key_new){
case 0x8000: key_val = 4;break;
case 0x4000: key_val = 5;break;
case 0x2000: key_val = 6;break;
case 0x1000: key_val = 7;break;
case 0x0800: key_val = 8;break;
case 0x0400: key_val = 9;break;
case 0x0200: key_val = 10;break;
case 0x0100: key_val = 11;break;
case 0x0080: key_val = 12;break;
case 0x0040: key_val = 13;break;
case 0x0020: key_val = 14;break;
case 0x0010: key_val = 15;break;
case 0x0008: key_val = 16;break;
case 0x0004: key_val = 17;break;
case 0x0002: key_val = 18;break;
case 0x0001: key_val = 19;break;
default:key_val = 0;break;
}
return key_val;
}
使用示例:
key_num = key_read();//获取按键的值
key_down = key_num & (key_old ^ key_num);//获取按键是否按下
key_up = ~key_num & (key_old ^ key_num);//获取按键是否松开
key_old = key_num;//保存本次按键的值
设计思路
1.获取按键的值;
2.通过本次按键值跟上次按键的值进行与、异或运算得到按键按下与松开的状态;
3.保存本次按键的值;