NK11: CJNE A,#07H,NK12 MOV KEYBUF,#11 LJMP DK3 NK12: NOP DK3:
MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A
DK3A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK3A NOKEY3:
MOV P3,#0FFH CLR P3.7 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY4
LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY4 MOV A,P3 ANL A,#0FH
CJNE A,#0EH,NK13 MOV KEYBUF,#12 LJMP DK4
NK13: CJNE A,#0DH,NK14 MOV KEYBUF,#13 LJMP DK4
NK14: CJNE A,#0BH,NK15 MOV KEYBUF,#14 LJMP DK4
NK15: CJNE A,#07H,NK16 MOV KEYBUF,#15 LJMP DK4 NK16: NOP DK4:
MOV A,KEYBUF MOV DPTR,#TABLE
MOVC A,@A+DPTR MOV P0,A
DK4A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK4A NOKEY4: LJMP WAIT DELY10MS: MOV R6,#10
D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H END
7. C语言源程序
#include
unsigned char code table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; unsigned char temp; unsigned char key; unsigned char i,j;
void main(void) {
while(1) {
P3=0xff; P3_4=0; temp=P3;
temp=temp & 0x0f; if (temp!=0x0f) {
for(i=50;i>0;i--) for(j=200;j>0;j--); temp=P3;
temp=temp & 0x0f; if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f; switch(temp) {
case 0x0e: key=7; break;
case 0x0d: key=8; break;
case 0x0b: key=9; break;
case 0x07: key=10; break; }
temp=P3; P1_0=~P1_0; P0=table[key]; temp=temp & 0x0f; while(temp!=0x0f) {
temp=P3;
temp=temp & 0x0f; } } }
P3=0xff; P3_5=0; temp=P3;
temp=temp & 0x0f; if (temp!=0x0f) {
for(i=50;i>0;i--) for(j=200;j>0;j--); temp=P3;
temp=temp & 0x0f; if (temp!=0x0f) {
temp=P3;
temp=temp & 0x0f;
switch(temp) {
case 0x0e: key=4; break;
case 0x0d: key=5; break;
case 0x0b: key=6; break;
case 0x07: key=11; break; }
temp=P3; P1_0=~P1_0; P0=table[key]; temp=temp & 0x0f; while(temp!=0x0f) {
temp=P3;
temp=temp & 0x0f; } } }
P3=0xff; P3_6=0; temp=P3;
temp=temp & 0x0f; if (temp!=0x0f) {
for(i=50;i>0;i--) for(j=200;j>0;j--); temp=P3;
temp=temp & 0x0f; if (temp!=0x0f) {
temp=P3;
temp=temp & 0x0f; switch(temp) {
case 0x0e:
key=1; break;
case 0x0d: key=2; break;
case 0x0b: key=3; break;
case 0x07: key=12; break; }
temp=P3; P1_0=~P1_0; P0=table[key]; temp=temp & 0x0f; while(temp!=0x0f) {
temp=P3;
temp=temp & 0x0f; } } }
P3=0xff; P3_7=0; temp=P3;
temp=temp & 0x0f; if (temp!=0x0f) {
for(i=50;i>0;i--) for(j=200;j>0;j--); temp=P3;
temp=temp & 0x0f; if (temp!=0x0f) {
temp=P3;
temp=temp & 0x0f; switch(temp) {
case 0x0e: key=0; break;
case 0x0d:
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新高中教育给初学单片机的40个实验 (5)全文阅读和word下载服务。
相关推荐: