📄 led_key.lst
字号:
C51 COMPILER V7.50 LED_KEY 11/08/2005 00:06:20 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LED_KEY
OBJECT MODULE PLACED IN led_key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE led_key.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "MSC1210.H"
2 #include "bin.h"
3 #include "comm.h"
4 #include "led_key.h"
5
6 //#define INBUF_LEN 4
7 sbit P1_1 = P1^1;
8
9 unsigned char disp_buffer[9] = {0, 1, 2,3, 4, 5, 6,7,10};
10 unsigned char xdata buffer_is_change[8]= {0xff, 0xff, 0xff,0xff, 0xff, 0xff, 0xff,0xff};
11 unsigned char xdata key_buffer[4];
12 unsigned char xdata WXA_led[11]={'W', 'X', 'A', '0', '1', '7', '3','0','0',0x0D,0x0A};
13
14 unsigned char dot_cu=0;
15
16 //delay
17 void delay(int v)
18 {
19 1 while(v != 0) v --;
20 1 }
21
22 void led_key_init(void)
23 {
24 1 unsigned char code WXA_key_dis[11]={'W', 'X', 'A', '0', '1', '7', 'B','0','0',0x0D,0x0A};
25 1 unsigned char i;
26 1 for (i=0;i<60;i++)
27 1 delay(6000);
28 1
29 1 put_string_com(WXA_key_dis,11);//键盘处理使能寄存器 4f 4b 0d 0a
30 1 for (i=0;i<30;i++)
31 1 delay(6000);
32 1 if (count3 !=0)
33 1 get_string_com(key_buffer,4);
34 1 }
35
36
37
38
39 /**/
40
41 void p11(void)
42 {
43 1 P1_1 = 0;
44 1 delay(10);
45 1 P1_1 = 1;
46 1 delay(10);
47 1 }
48
49 unsigned char key(void)
50 {
51 1 unsigned char i;
52 1 unsigned char code RXA_key[11]={'R', 'X', 'A', '0', '1', '7', 'E','0','1',0x0D,0x0A};
53 1
54 1
55 1 put_string_com(RXA_key,11);// 4f 4b 0d 0a
C51 COMPILER V7.50 LED_KEY 11/08/2005 00:06:20 PAGE 2
56 1 for (i=0;i<30;i++)
57 1 delay(6000);
58 1
59 1 if (count3 !=0)
60 1 {
61 2 get_string_com(key_buffer,4);
62 2 if (key_buffer[0]==0x20)//20 30 37 0d
63 2 return key_buffer[2]-0x30;
64 2 else
65 2 return 0x09;
66 2
67 2 }
68 1 else
69 1 return 0x09;
70 1 }
71
72
73 bit tmp_buffer_change(void)
74 {
75 1 bit bol;
76 1 unsigned char i;
77 1
78 1 bol=0;
79 1 for (i=0;i<8;i++)
80 1 {
81 2 if (buffer_is_change[i]!=disp_buffer[i])
82 2 {
83 3 bol=1;
84 3 break;
85 3 }
86 2 }
87 1
88 1 return bol;
89 1 }
90
91 void disp_data()
92 {
93 1 unsigned char code weitemp_tab[] = {0x41, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34,0x33 };
94 1
95 1 unsigned char i,ii;// ,ii,c[4]
96 1
97 1 for (i=0;i<8;i++)
98 1 {
99 2 // if (buffer_is_change[i] !=disp_buffer[i])B1110_0001 E1
100 2 // {
101 2 WXA_led[6] = weitemp_tab[i] ;
102 2 WXA_led[8] = disp_buffer[i] + 0x30;
103 2
104 2 if (i==dot_cu)
105 2 WXA_led[7] ='6'; //B1100_0000;
106 2 else
107 2 WXA_led[7]=0;
108 2
109 2 put_string_com(WXA_led,11);
110 2 for (ii=0;ii<30;ii++)
111 2 delay(6000);
112 2
113 2 if (count3 !=0)
114 2 get_string_com(key_buffer,4);
115 2
116 2 buffer_is_change[i] =disp_buffer[i];
117 2 // }
C51 COMPILER V7.50 LED_KEY 11/08/2005 00:06:20 PAGE 3
118 2 }
119 1 }
120
121 void get_key_Disp_data(void)
122 {
123 1 unsigned char i;
124 1 static unsigned char tmpkey;
125 1 i=key();
126 1 //键值代码 LEFT=7,RIGHT=1,UP=4,DOWN=5,ESC=8,ENT=2
127 1 //D7:1=小数点亮,0=NO [7] ='8'
128 1 //D6:1=字符闪烁,0=NO [7] ='6'
129 1 //D5:1=小数点闪烁,0=NO [7] ='A'
130 1
131 1 if (i != 0x09)
132 1 {
133 2 if (tmpkey != i)
134 2 {
135 3 tmpkey = i;
136 3 switch (tmpkey)
137 3 {
138 4 case 7: //LEFT=7
139 4 if (dot_cu >0)
140 4 dot_cu --;
141 4 disp_data();
142 4 break;
143 4 case 1: //RIGHT=1
144 4 if (dot_cu <3)
145 4 dot_cu ++;
146 4 disp_data();
147 4 break;
148 4 case 4: //UP=4
149 4 if (disp_buffer[dot_cu] <0x09 )
150 4 disp_buffer[dot_cu] ++;
151 4 break;
152 4 case 5: //DOWN=5
153 4 if (disp_buffer[dot_cu] >0 )
154 4 disp_buffer[dot_cu] --;
155 4 break;
156 4 }
157 3 }
158 2 }
159 1
160 1 if (tmp_buffer_change()==1)
161 1 disp_data();
162 1 }
163
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 370 ----
CONSTANT SIZE = 30 ----
XDATA SIZE = 23 ----
PDATA SIZE = ---- ----
DATA SIZE = 11 1
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 + -