📄 keyboard.lst
字号:
C51 COMPILER V7.50 KEYBOARD 05/29/2008 23:43:03 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE KEYBOARD
OBJECT MODULE PLACED IN keyboard.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE keyboard.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include<intrins.h>
3
4 #define uchar unsigned char
5 #define port P1
6 uchar code encode[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};//0~9
7
8 uchar keyvalue,ledbuff4[4];
9 uchar cnter4;
10 bit keyflag;
11
12 void delay500(uchar n)
13 {
14 1 uchar i;
15 1 for( ; --n ; )
16 1 for( i=80 ; i!=0 ; --i );
17 1 }
18
19 void keyscan()
20 {
21 1 uchar a,b,c;
22 1 keyflag = 0;
23 1 port = 0xff;
24 1 port = 0x0f;
25 1 if( port==0x0f ) return;
26 1 delay500( 20 );
27 1 if( port==0x0f ) return ;
28 1 keyflag = 1;
29 1 a = port;
30 1 port = 0xf0;
31 1 _nop_();
32 1 b = port;
33 1 c = a^b;
34 1 switch( c )
35 1 {
36 2 case 0x77: keyvalue=0; break; //对按键附值//
37 2 case 0x7b: keyvalue=1; break;
38 2 case 0x7d: keyvalue=2; break;
39 2 case 0x7e: keyvalue=3; break;
40 2 case 0xb7: keyvalue=4; break;
41 2 case 0xbb: keyvalue=5; break;
42 2 case 0xbd: keyvalue=6; break;
43 2 case 0xbe: keyvalue=7; break;
44 2 case 0xd7: keyvalue=8; break;
45 2 case 0xdb: keyvalue=9; break;
46 2 case 0xdd: keyvalue=10;break;
47 2 case 0xde: keyvalue=11;break;
48 2 case 0xe7: keyvalue=12;break;
49 2 case 0xeb: keyvalue=13;break;
50 2 case 0xed: keyvalue=14;break;
51 2 case 0xee: keyvalue=15;break;
52 2 }
53 1 }
54
55 void display4()
C51 COMPILER V7.50 KEYBOARD 05/29/2008 23:43:03 PAGE 2
56 {
57 1 uchar t=cnter4;
58 1 P2 = 0xff;
59 1 _nop_() , _nop_() , _nop_();
60 1 t = t%4;
61 1 if( t==0 )
62 1 P2 = encode[ledbuff4[0]] , P0 = 0xf7;
63 1 else if( t==1 )
64 1 P2 = encode[ledbuff4[1]] , P0 = 0xfb;
65 1 else if( t==2 )
66 1 P2 = encode[ledbuff4[2]] , P0 = 0xfd;
67 1 else if( t==3 )
68 1 P2 = encode[ledbuff4[3]] , P0 = 0xfe;
69 1 else
70 1 P2 = 0xfe , P0 = 0xf0;
71 1 }
72
73 void initbuff4()
74 {
75 1 ledbuff4[3] = 10 , ledbuff4[2] = 10;
76 1 ledbuff4[0] = keyvalue%10;
77 1 if( keyvalue>=10 )
78 1 ledbuff4[1] = 1;
79 1 else
80 1 ledbuff4[1] = 0x0a;
81 1 }
82
83 int main()
84 {
85 1 SP = 0x60 , EA = 0;
86 1 cnter4 = 0;
87 1 TH0 = (65536-400)/256;
88 1 TL0 = (65536-400)%256;
89 1 TMOD = 0x01 , TCON = 0x10;
90 1 IE = 0x82;
91 1 while( 1 )
92 1 {
93 2 keyscan();
94 2 initbuff4();
95 2 delay500(200);
96 2 }
97 1 }
98
99 void t0isr()using 2 interrupt 1
100 {
101 1 TR0 = 1;
102 1 TH0 = (65536-2500)/256;
103 1 TL0 = (65536-2500)%256;
104 1 cnter4 = (cnter4+1)&0x03;//0~128
105 1 display4();
106 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 357 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILER V7.50 KEYBOARD 05/29/2008 23:43:03 PAGE 3
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -