📄 cont.lst
字号:
C51 COMPILER V6.23a CONT 11/23/2003 16:41:45 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE CONT
OBJECT MODULE PLACED IN cont.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE cont.c ROM(SMALL) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "reg51.h"
2 typedef unsigned char u8;
3 typedef unsigned short u16;
4 typedef unsigned long u32;
5 typedef char s8;
6 typedef long s32;
7 typedef short s16;
8 //p0 = R2,R1,R0,C4,C3,C2,C1,C0
9
10 #define X_RF 0xAF //R1,C4
11 #define X_STOP 0XB7 //C3
12 #define X_PAUSE 0XBB //C2
13 #define X_FF 0XBD //C1
14 #define X_PLAY 0XBE //C0
15 #define X_MENU 0X6F //R2,C4
16 #define X_UP 0X77 //C3
17 #define X_DOWN 0X7B //C2
18 #define X_SELECT 0X7D //C1
19 #define X_REC 0X7E //C0
20
21
22 sbit P1_0 = 0x90;
23 sbit P1_1 = 0x91;
24 sbit P1_2 = 0x92;
25 /*------------------------------------------------
26 P2 Bit Registers
27 ------------------------------------------------*/
28 sbit P2_0 = 0xA0;
29 sbit P2_1 = 0xA1;
30 sbit P2_2 = 0xA2;
31 sbit P2_3 = 0xA3;
32 sbit P2_4 = 0xA4;
33 sbit P2_5 = 0xA5;
34 sbit P2_6 = 0xA6;
35 sbit P2_7 = 0xA7;
36 /*------------------------------------------------
37 P3 Bit Registers (Mnemonics & Ports)
38 ------------------------------------------------*/
39 sbit P3_0 = 0xB0;
40 sbit P3_1 = 0xB1;
41 sbit P3_2 = 0xB2;
42 sbit P3_3 = 0xB3;
43 sbit P3_4 = 0xB4;
44 sbit P3_5 = 0xB5;
45 sbit P3_6 = 0xB6;
46 sbit P3_7 = 0xB7;
47
48
49 void SCI_INI(void); //sci_a init
50 u8 key(void); //check key
51 void delay(int);
52 void sendkey(u8);
53 void Time_intt(void); //0.2ms 定时中断
54 void Com_sucess(void);
55
C51 COMPILER V6.23a CONT 11/23/2003 16:41:45 PAGE 2
56 u8 key_flag_a;
57 u8 key_flag_b;
58 u8 key_flag_c;
59 u8 last_flag;
60
61 u8 ch_flag;
62 u8 funt_flag;
63
64 u8 ch=1;
65 u16 com_times=0;
66 u32 Buffer;
67 u8 com_bits=0;
68 u8 bit_cnt=0;
69 u8 send_tmp=0;
70 u8 out_flag=0;
71 bit last_state;
72 bit bit_state;
73 bit bit_statex;
74
75
76 void main(void)
77 {
78 1 u8 k;
79 1 u8 flag=0; //funtion / control flag,1: control, 0:funtion
80 1
81 1 u8 key_flag2; //pressing key flag,1:pressing ,0:no key
82 1
83 1
84 1
85 1 SCI_INI();
86 1
87 1 while(1) //测试接收的号码
88 1 {
89 2 if(out_flag)
90 2 {
91 3 //for test-----------------------
92 3 SBUF=0x55;
93 3 while(!TI);
94 3 TI=0;
95 3
96 3 SBUF=0xaa;
97 3 while(!TI);
98 3 TI=0;
99 3
100 3 out_flag = 0;
101 3
102 3 SBUF=Buffer >> 24;
103 3 while(!TI);
104 3 TI=0;
105 3
106 3 SBUF=Buffer >> 16;
107 3 while(!TI);
108 3 TI=0;
109 3
110 3 SBUF=Buffer >> 8;
111 3 while(!TI);
112 3 TI=0;
113 3
114 3 SBUF=Buffer;
115 3 while(!TI);
116 3 TI=0;
117 3 //---------------------------------
C51 COMPILER V6.23a CONT 11/23/2003 16:41:45 PAGE 3
118 3
119 3 }
120 2 // SBUF=0x55;
121 2 // while(!TI);
122 2 TI=0;
123 2 }
124 1
125 1 while(1)
126 1 {
127 2 if (!(P2 & 0x01)) //test funtion key
128 2 { //press the funtion key
129 3 delay(6);
130 3 if (!(P2 & 0x01) )
131 3 {
132 4 if (funt_flag==0)
133 4 {
134 5 if(flag==0x55)
135 5 {
136 6 flag=0; //control
137 6
138 6 }
139 5 else
140 5 {
141 6 flag=0x55;
142 6
143 6 }
144 5 funt_flag=0x55;
145 5 }
146 4 }
147 3 }
148 2 else
149 2 {
150 3 delay(6);
151 3 if (P2 & 0x01) funt_flag=0; //release funtion key
152 3 }
153 2 ///8********************************
154 2 if(flag==0x55) //funtion or control display
155 2 { //control
156 3 //*****************************************8
157 3 if (!(P2 & 0x02)) //test ch key
158 3 {
159 4 delay(6);
160 4 if (!(P1 & 0x20) )
161 4 {
162 5 if (ch_flag==0)
163 5 {
164 6 ch++;
165 6 if (ch==5) ch=1;
166 6 ch_flag=0x55;
167 6 }
168 5
169 5 }
170 4
171 4 }
172 3 else
173 3 {
174 4 delay(6);
175 4 if (P2 & 0x02) ch_flag=0; //release channel key
176 4 }
177 3 P2_2=0;
178 3 P2_3=1;
179 3
C51 COMPILER V6.23a CONT 11/23/2003 16:41:45 PAGE 4
180 3 P3=0xff; //245 not select
181 3
182 3
183 3 P1=0x1f;
184 3 }
185 2 else
186 2 { //funtion
187 3 P2_2=1;
188 3 P2_3=0;
189 3
190 3 P3=0x0f;
191 3
192 3
193 3 P1=0xff;
194 3 P2_4=1; //off channel led
195 3 P2_5=1;
196 3 P2_6=1;
197 3 P2_7=1;
198 3 }
199 2
200 2
201 2 if (flag)
202 2 {
203 3 switch (ch) //display the channel led
204 3 {
205 4 case 1:
206 4 P2=(P2 & 0xf) | 0x70;
207 4 break;
208 4 case 2:
209 4 P2=(P2 & 0xf) | 0xb0;
210 4 break;
211 4 case 3:
212 4 P2=(P2 & 0xf) | 0xd0;
213 4 break;
214 4 case 4:
215 4 P2=(P2 & 0xf) | 0xe0;
216 4 break;
217 4 default:
218 4 break;
219 4 }
220 3 P2_0=1;
221 3 P2_1=1;
222 3 k=key();
223 3 if(k)
224 3 {
225 4
226 4 if (!key_flag2)
227 4 {
228 5 key_flag2=0x55;
229 5 switch (k)
230 5 {
231 6 case 30:
232 6
233 6 if (key_flag_a) key_flag_a=0; //a new key
234 6 else key_flag_a=0x55;
235 6 break;
236 6 case 50:
237 6 if (key_flag_b) key_flag_b=0; //a new key
238 6 else key_flag_b=0x55;
239 6 break;
240 6 case 90:
241 6 if (key_flag_c) key_flag_c=0; //a new key
C51 COMPILER V6.23a CONT 11/23/2003 16:41:45 PAGE 5
242 6 else key_flag_c=0x55;
243 6 break;
244 6 default:
245 6 break;
246 6 }
247 5 sendkey(k);
248 5 }
249 4
250 4 }
251 3 else
252 3 {
253 4 k=key();
254 4 if (key_flag2) //stop key
255 4 {
256 5 key_flag2=0;
257 5 sendkey(0xff);
258 5
259 5 }
260 4 }
261 3
262 3 }
263 2 }
264 1 }
265
266 void SCI_INI(void)
267 {
268 1 P0=0XFF;
269 1 P1=0XfF;
270 1 P2=0XFF;
271 1 P3=0X0f;
272 1
273 1 TMOD=0x22; //timer1 use as sci bord ,timer0 use as 16bit counter
274 1
275 1 TL1=0XFd;
276 1 TH1=0xfd; //sci bord speed=9600 when 11.052Mhz./12.000
277 1
278 1 TL0=91;
279 1 TH0=91; //0.178ms中断
280 1
281 1 TR1=1; //timer1 enable
282 1 TR0=1;
283 1
284 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -