case 2: keyno = 1;break; case 4: keyno = 2;break; case 8: keyno = 3;break;
default: keyno = 16; //无键按下 }
//低四位置1,放入4列 KEY = 0xf0; delay(1); //
i = KEY >> 4 ^ 0x0f; //对0-3行分别附件起始值 switch(i) {
case 1: keyno += 0;break; case 2: keyno += 4;break; case 4: keyno += 8;break; case 8: keyno += 12;break; }
delay(100); }
2.从机程序清单
#include
void delay(unsigned int x) {
unsigned char i;
17
while(x--) {
for(i = 0;i < 120;i++); } }
void explanation(unsigned char date) { }
//字符发送函数
void putchar(unsigned char data1) {
SBUF = data1; //将待发送的字符送入发送缓冲器 while(TI == 0); //等待发送完成 TI = 0; //发送中断标志请0 } //主函数 void main(void) {
SCON = 0x50; //串口方式1 ,允许接收 TMOD = 0x20; //T1工作于方式2 PCON = 0x00; //波特率不倍增 TL1 = 0xfd; //波特率设置 TH1 = 0xfd; //
EA = 1; //开总中断 ES = 1; //开串口接收中断 TR1 = 1; //定时器开启 delay(200); delay(50); while(1)
18
DIG = date;
{ } }
19