📄 key.lst
字号:
C51 COMPILER V6.23a KEY 11/26/2006 16:12:14 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: d:\tools\Keil\C51\BIN\C51.EXE key.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg52.h>
2 #include <stdio.h>
3 #include <absacc.h>
4 #include <intrins.h>
5 #include <iccard.h>
6 #define nop _nop_()
7 bit key_flag;
8 uchar key_value;
9 void wt_dog()
10 {
11 1 x5045_cs=1;
12 1 nop;nop;nop;
13 1 x5045_cs=0;
14 1 nop;nop;nop;
15 1 x5045_cs=1;
16 1 }
17 void delay(uint16 x)
18 {
19 1 uint16 i,k;
20 1 for(i=x;i>0;i--)
21 1 {
22 2 for(k=5000;k>0;k--);
23 2 wt_dog();
24 2 }
25 1 }
26 void delayns()
27 {
28 1 uchar i;
29 1 for(i=0;i<10;i++);
30 1 }
31 void init_7289()
32 {
33 1 IT1=0;//设置为电平出发
34 1 EA=1;
35 1 EX1=1;
36 1 key_cs=1;
37 1 key_flag=0;
38 1 key_value=0xaa;
39 1 }
40 void send_key(uchar cmd)
41 {
42 1 uchar i,k;
43 1 k=cmd;
44 1 for(i=8;i>0;i--)
45 1 {
46 2
47 2 key_clk=0;
48 2 delayns();
49 2 if(k&0x80)key_dat=1;
50 2 else key_dat=0;
51 2 key_clk=1;
52 2 delayns();
53 2 key_clk=0;
54 2 delayns();
55 2 k<<=1;
C51 COMPILER V6.23a KEY 11/26/2006 16:12:14 PAGE 2
56 2 }
57 1 }
58 void sendcmd_key(uchar cmd)
59 {
60 1 key_cs=0;
61 1 send_key(cmd);
62 1 key_cs=1;
63 1 }
64 void senddat_key(uchar cmd,uchar dat)
65 {
66 1 key_cs=0;
67 1 send_key(cmd);
68 1 delayns();
69 1 send_key(dat);
70 1 key_cs=1;
71 1 }
72 uchar getkey_key()//
73 {
74 1 uchar j,key;
75 1 key=0;
76 1 key_cs=0;
77 1 send_key(getkey_7289);
78 1 key_dat=1;
79 1 for(j=8;j>0;j--)
80 1 {
81 2
82 2 key_clk=0;
83 2 delayns();
84 2
85 2 key_clk=1;
86 2 delayns();
87 2 if(key_dat)key=key*2+1;
88 2 else key=key*2;
89 2 key_clk=0;
90 2 delayns();
91 2
92 2
93 2 }
94 1
95 1 key_cs=1;
96 1 return(key);
97 1 }
98
99 void disp_key(uchar x)
100 {
101 1 uchar i;
102 1 i=x;
103 1 sendcmd_key(reset_7289);
104 1 senddat_key(disp1_7289|7,i&0x0f);
105 1 i>>=4;
106 1 senddat_key(disp1_7289|6,i&0x0f);
107 1 }
108
109 void key_disp(uint32 dat)
110 {
111 1 uchar i;
112 1 uint32 k;
113 1 k=dat;
114 1 i=(uchar)k;
115 1 sendcmd_key(reset_7289);
116 1 senddat_key(disp1_7289|7,i&0x0f);
117 1 k>>=4;
C51 COMPILER V6.23a KEY 11/26/2006 16:12:14 PAGE 3
118 1 i=(uchar)k;
119 1 senddat_key(disp1_7289|6,i&0x0f);
120 1 k>>=4;
121 1 i=(uchar)k;
122 1 senddat_key(disp1_7289|5,i&0x0f);
123 1 k>>=4;
124 1 i=(uchar)k;
125 1 senddat_key(disp1_7289|4,i&0x0f);
126 1 k>>=4;
127 1 i=(uchar)k;
128 1 senddat_key(disp1_7289|3,i&0x0f);
129 1 k>>=4;
130 1 i=(uchar)k;
131 1 senddat_key(disp1_7289|2,i&0x0f);
132 1 k>>=4;
133 1 i=(uchar)k;
134 1 senddat_key(disp1_7289|1,i&0x0f);
135 1 k>>=4;
136 1 i=(uchar)k;
137 1 senddat_key(disp1_7289|0,i&0x0f);
138 1
139 1 }
140
141 void Getkey_IRQ() interrupt 2
142 {
143 1 EX1=0;
144 1 if(key_flag==0)
145 1 {
146 2 key_value=getkey_key();
147 2 key_flag=1;
148 2 }
149 1 while(INT1==0);
150 1 EX1=1;
151 1 }
152
153 void key_main (void)
154 {
155 1 delay(5);
156 1 init_7289();
157 1 sendcmd_key(reset_7289);
158 1 sendcmd_key(test_7289);
159 1 delay(20);
160 1 delay(20);
161 1 sendcmd_key(reset_7289);
162 1 senddat_key(disp1_7289|0,0x00);
163 1 senddat_key(disp1_7289|1,0x01);
164 1 senddat_key(disp1_7289|2,0x02);
165 1 senddat_key(disp1_7289|3,0x03);
166 1 senddat_key(disp1_7289|4,0x04);
167 1 senddat_key(disp1_7289|5,0x05);
168 1 senddat_key(disp1_7289|6,0x06);
169 1 senddat_key(disp1_7289|7,0x07);
170 1 delay(20);
171 1 delay(20);
172 1 delay(20);
173 1 delay(20);
174 1 sendcmd_key(reset_7289);
175 1 while(1)
176 1 {
177 2
178 2 if(key_flag==1)
179 2 {
C51 COMPILER V6.23a KEY 11/26/2006 16:12:14 PAGE 4
180 3 key_flag=0;
181 3 disp_key(key_value);
182 3 delay(20);
183 3 }
184 2 wt_dog();
185 2 }
186 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 616 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 4
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -