/ * --------------------------------------------- -名称:使用行和列逐行扫描中断模式内容的矩阵键盘输入控件,如果计算器输入数据格式相同,则从右到左使用行和列扫描方法中断模式可以有效地提高cpu的工作效率是关键操作通常不执行扫描工作---------------------------------------- ----- --- * / #include //包含头文件通常,不需要更改包含特殊功能寄存器定义的头文件#define DataPort P0 //如果在数据端口中遇到DataPort程序,用P0代替#define KeyPort P1 sbit LATCH1 = P2 ^ 2; //定义锁存器使能端口段锁存器sbit LATCH2 = P2 ^ 3; //位锁存器位KeyPressFlag; //定义按钮标志未签名dofly_DuanMa [] = {0x3f ,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //显示段代码值0〜F无符号字符代码dofly_WeiMa [] = {0xfe ,0xfd,0xfb, 0xf7,0xef,0xdf,0xbf,0x7f); //分别对应对应的数码管灯,即无符号char TempData [8] //存储显示值的全局变量void DelayUs2x(unsigned char t); // us级别延迟函数声明void DelayMs(unsigned char t); // ms级延迟void Display(unsigned char FirstBit,unsigned char Num); //数字管显示功能unsigned char KeyScan(void); //键盘扫描unsigned char KeyPro(void); void Init_Timer0(void); //计时器初始化void Init_INT0(void); //外部中断0初始化和/ * ------------------- ---------------------- - - - -主功能 - - - - - - - - - - - - - - - - - - - - - ------- * / void main(void){unsigned char num,i,j; unsigned char temp [8]; Init_Timer0(); Init_INT0(); while(1)//主循环字符代码{KeyPort = 0xf0; //使用分配进行中断检测if(KeyPressFlag == 1){KeyPressFlag = 0; //清除下一个检测的键标志num = KeyPro( ); if(num!= 0xff){if(i
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-349608-1.html