📄 7289-key.lst
字号:
C51 COMPILER V7.06 7289_KEY 01/02/2008 08:48:42 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 7289_KEY
OBJECT MODULE PLACED IN 7289-key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 7289-key.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg52.h>
2 #include <stdio.h>
3 #include <absacc.h>
4
5 typedef unsigned char uchar;
6
7 sbit CS=P1^4;
8 sbit CLK=P1^7;
9 sbit DIO=P1^6;
10 sbit KEY=P3^2;
11
12 uchar half_hign;
13 uchar half_low;
14
15 bdata uchar com_data;
16 sbit mos_bit=com_data^7;
17 sbit low_bit=com_data^0;
18
19 void delay_50us()
20 {
21 1 uchar i;
22 1 for (i=0; i<6; i++){;}
23 1 }
24
25 void delay_8us()
26 {
27 1 uchar i;
28 1 for (i=0; i<1; i++){;}
29 1 }
30 void delay_50ms()
31 {
32 1 uchar i,j;
33 1 for(j=0;j<50;j++)
34 1 for(i=0;i<125;i++){;}
35 1 }
36 void delay_5s()
37 {
38 1 uchar i = 100;
39 1 while(i--)
40 1 delay_50ms();
41 1 }
42 void send(uchar sebuf)
43 {
44 1 uchar i;
45 1 com_data=sebuf;
46 1 CLK=0;
47 1 CS=0;
48 1 delay_50us();
49 1 for(i=0;i<8;i++)
50 1 {
51 2 delay_8us();
52 2 DIO=mos_bit;
53 2 CLK=1;
54 2 delay_8us();
55 2 com_data=com_data<<1;
C51 COMPILER V7.06 7289_KEY 01/02/2008 08:48:42 PAGE 2
56 2 CLK=0;
57 2 }
58 1 DIO=0;
59 1 }
60 uchar receive(void)
61 {
62 1 uchar i,rebuf;
63 1 CLK=1;
64 1 delay_50us();
65 1 for(i=0;i<8;i++)
66 1 {
67 2 com_data=com_data<<1;
68 2 low_bit=DIO;
69 2 CLK=1;
70 2 delay_8us();
71 2 CLK=0;
72 2 delay_8us();
73 2 }
74 1 rebuf=com_data;
75 1 DIO =1;
76 1 CS=1;
77 1 return rebuf;
78 1 }
79 void reset(void)
80 {
81 1 DIO=1;
82 1 delay_50ms();
83 1 send(0xa4);
84 1 CS=1;
85 1 }
86 /* 7289显示程序 */
87 /* addr为显示位置 范围0~7 */
88 /* dat为现实内容 */
89 void display(uchar addr,uchar dat)
90 {
91 1 if(addr<0 || addr >7)
92 1 return;
93 1 send(0xc8 + addr);
94 1 delay_50us();
95 1 send(dat);
96 1 CS=1;
97 1 }
98 void sendcommand(uchar addr,uchar dat)
99 {
100 1 send(addr);
101 1 delay_50us();
102 1 send(dat);
103 1 CS=1;
104 1 }
105 uchar getkeycode(uchar dat)
106 {
107 1 uchar key;
108 1 switch(dat)
109 1 {
110 2 case 0x2f: key = 0x01;break;
111 2 case 0x27: key = 0x02;break;
112 2 case 0x1f: key = 0x03;break;
113 2 case 0x17: key = 0x04;break;
114 2 case 0x0f: key = 0x05;break;
115 2 case 0x07: key = 0x06;break;
116 2 case 0x2e: key = 0x07;break;
117 2 case 0x26: key = 0x08;break;
C51 COMPILER V7.06 7289_KEY 01/02/2008 08:48:42 PAGE 3
118 2 case 0x1e: key = 0x09;break;
119 2 case 0x16: key = 0x10;break;
120 2 case 0x0e: key = 0x11;break;
121 2 case 0x06: key = 0x12;break;
122 2 case 0x2d: key = 0x13;break;
123 2 case 0x25: key = 0x14;break;
124 2 case 0x1d: key = 0x15;break;
125 2 case 0x15: key = 0x16;break;
126 2 case 0x0d: key = 0x17;break;
127 2 case 0x05: key = 0x18;break;
128 2 case 0x2c: key = 0x19;break;
129 2 case 0x24: key = 0x20;break;
130 2 case 0x1c: key = 0x21;break;
131 2 case 0x14: key = 0x22;break;
132 2 case 0x0c: key = 0x23;break;
133 2 case 0x04: key = 0x24;break;
134 2 default: key = 0xee;break;
135 2 }
136 1 return key;
137 1 }
138 main()
139 {
140 1 uchar dat,key;
141 1 reset();
142 1 send(0xbf);
143 1 CS=1;
144 1 delay_5s();
145 1 sendcommand(0x88,0xff);
146 1 while(1)
147 1 {
148 2 while(KEY);
149 2 send(0x15); // 0
150 2 delay_50us();
151 2 dat = receive();
152 2 delay_50us();
153 2 key = getkeycode(dat);
154 2 half_hign = key >> 4;
155 2 half_low = key & 0x0f;
156 2
157 2 display(0,half_hign);
158 2 display(1,half_low);
159 2 display(2,half_hign);
160 2 display(3,half_low);
161 2 display(4,half_hign);
162 2 display(5,half_low);
163 2 display(6,half_hign);
164 2 display(7,half_low);
165 2
166 2 while(!KEY);
167 2 }
168 1 }
169
170
171
172
173
174
175
176
177
178
179
C51 COMPILER V7.06 7289_KEY 01/02/2008 08:48:42 PAGE 4
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 465 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 ----
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 + -