📄 4×4键盘.lst
字号:
C51 COMPILER V7.01 4__4键臺 09/22/2007 23:00:11 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE 4__4键臺
OBJECT MODULE PLACED IN 4×4键盘.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 4×4键盘.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1
2 #include<Atmel\AT89X51.H>
3 #include<INTRINS.H>
4
5 sbit SDI=P1^2; //HC595的数据
6 sbit SRCLK=P1^3; //HC595的时钟
7 sbit RCLK=P1^0; //HC595的使能
8
9 //延时函数
10 void delayms(unsigned int ms)
11 {
12 1 unsigned int i=250;
13 1 while(ms--)
14 1 {
15 2 while(i--);
16 2 i=250;
17 2 }
18 1 }
19
20 //键盘扫描函数
21 unsigned char KeyScan()
22 {
23 1 unsigned char temp;
24 1 unsigned char i;
25 1
26 1 P2&=0xf0;
27 1 if((P2&0xf0)!=0xf0)
28 1 {
29 2 delayms(1);
30 2 if((P2&0xf0)!=0xf0)
31 2 {
32 3 for(i=0,temp=0xfe;i<4;i++,temp=(temp<<1)|1)
33 3 {
34 4 P2=temp;
35 4 delayms(2);
36 4 if((P2&0xf0)!=0xf0)
37 4 {
38 5 temp=P2&0xf0;
39 5 while((P2&0xf0)!=0xf0);
40 5 if(temp==0xe0)return(i);
41 5 else if(temp==0xd0)return(i+4);
42 5 else if(temp==0xb0)return(i+8);
43 5 else if(temp==0x70)return(i+12);
44 5
45 5 }
46 4 }
47 3 }
48 2 }
49 1 return(0xff);
50 1
51 1 }
52
53 //送出一个字节到HC595
54 void SendByte(unsigned char dat)
55 {
C51 COMPILER V7.01 4__4键臺 09/22/2007 23:00:11 PAGE 2
56 1 unsigned char i;
57 1 for(i=0;i<8;i++)
58 1 {
59 2 SRCLK=0;
60 2 if(dat&0x80)
61 2 SDI=1;
62 2 else
63 2 SDI=0;
64 2 SRCLK=1;
65 2 dat=dat<<1;
66 2 }
67 1 }
68
69 //显示函数
70 void Display(unsigned char dat1,unsigned char dat2)
71 {
72 1 unsigned char DisBuf[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
73 1 0x7f,0x6f,0x77,0x7c,0x39,0x51,0x79,0x71,0x00};
74 1 SendByte(DisBuf[dat1]);
75 1 SendByte(DisBuf[dat2]);
76 1 RCLK=0;
77 1 _nop_();
78 1 _nop_();
79 1 _nop_();
80 1 _nop_();
81 1 RCLK=1;
82 1 }
83
84 //键盘扫描主程序
85 main()
86 {
87 1 unsigned char KeyValue;
88 1 Display(0,0);
89 1 while(1)
90 1 {
91 2 KeyValue=KeyScan();
92 2
93 2 if(KeyValue!=0xff)
94 2 {
95 3 Display(KeyValue/10,KeyValue%10);
96 3 }
97 2 }
98 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 252 ----
CONSTANT SIZE = 17 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 20
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -