#include#define uchar unsigned char#define uint unsigned intuchar smg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71} ;uchar smg_we[]={0x08,0x18,0x28,0x38,0x48,0x58,0x68,0x78} ;//有一篇 74HC573 必须为高电平 //*************************8//12M 频率下大约 50US 延时//**************************void delay_50us(uint t){ uchar j; for(;t>0;t--) for(j=19;j>0;j--) ;}void delay_50ms(uint t){ uchar j; for(;t>0;t--) for(j=6245;j>0;j--);}/*这个程序可以不用松手检测,因为我们程序首选推断键是否按下然后发现按下后我们延时 5MS,然后再检测
确实是按下啦
我们再执行在第二个循环假如我们继续检测,那么消耗时间 10MS 这个短时间中我们的按键已经松手啦
不会在执行后面的
*/void main(){ uchar key_l,key_h; uchar key; while(1) { P3=0xf0;//首先给 P3 口赋值 key_l=P3; //从 p3 口读一个数据到 key_l key_l=key_l&0xf0; if(key_l
=0xf0) //假如不等于的话,说明有按键按下去 { delay_50us(100);//略微延时一下 if(key_l
=0xf0) { key_l=P3&0xf0;// 11100000 再读