📄 key.lst
字号:
C51 COMPILER V7.06 KEY 04/03/2008 10:37:21 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: D:\KIEL C\C51\BIN\C51.EXE key.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<AT89x55.H>
2 #include <stdio.h>
3 #include <INTRINS.H>
4 #include "bt1029.h"
5 #define uint unsigned int
6 #define uchar unsigned char
7 sbit ir=P1^6;
8 //keyandout
9 sbit keyadd=P3^4;
10 sbit keysub=P3^5;
11 sbit keystby=P3^6;
12 sbit stby=P1^4;
13 uchar VOL;
14 bit VOLon;
15 sbit ledblue=P2^4;
16 sbit ledred=P2^3;
17 //***********************
18 uchar irdata[4];
19 uint count0,count1;
20 uchar count10,count11;
21 bit flag,flag1,flag0;
22 //*********************************
23 //t*2us 4.5ms equ 561 9ms equ 1124 0.56ms equ 69
24 //*********************************
25 void delay(uint t)
26 { while(--t);
27 1 }
28 /**********************************************/
29 /* 工作状态灯*/
30 void blueout()
31 {ledblue=1;
32 1 delay(500);
33 1 ledblue=0;
34 1 }
35 void redout()
36 {if(VOLon)
37 1 {ledred=0;
38 2 ledblue=1;
39 2 }
40 1 else
41 1 {ledred=1;
42 2 ledblue=0;
43 2 }
44 1 }
45 /************************************************/
46 //串口传输初始化
47 /***********************************************/
48 void uart_init()
49 {
50 1
51 1 SCON = 0xDA; // SCON: mode 1, 8-bit UART, enable rcvr */
52 1 TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit reload */
53 1 TH1 = 0xFD; // TH1: reload value for 1200 baud @ 12MHz */
54 1 TR1 = 1; // TR1: timer 1 run */
55 1 TI = 1; // TI: set TI to send first char of UART */
C51 COMPILER V7.06 KEY 04/03/2008 10:37:21 PAGE 2
56 1
57 1 }
58 /*************************************************/
59 //串口发送
60 /************************************************/
61 void send(unsigned char ch)
62 {SBUF=ch;
63 1 while(TI==0);
64 1 TI=0;
65 1 }
66 /************************************************/
67 /*********************************************/
68 /*红外线接收处理*/
69 /********************************************/
70 void irchuli()
71 { uchar c1,c2;
72 1 if(irdata[2]=~irdata[3])
73 1 { blueout();
74 2 send(irdata[2]);
75 2 c1=irdata[2]/10;
76 2 c2=irdata[2]%10;
77 2 send('0'+c1);
78 2 send('0'+c2);
79 2 }
80 1 }
81 /*********************************************/
82 //*********************************
83 //红外线接收扫描
84 //*********************************
85 //*********************************
86 //
87 //*********************************
88 void checkhead()
89 { while(ir==0)
90 1 {count0++;
91 2 }
92 1 if(count0>140)
93 1 {flag0=1;
94 2 }
95 1 count0=0;
96 1 if(flag0==1)
97 1 { flag0=0;
98 2 while(ir==1)
99 2 {count1++;
100 3 }
101 2 if(count1>350)
102 2 {flag1=1;
103 3 }
104 2 count1=0;
105 2 if(flag1==1)
106 2 {flag=1;
107 3 flag1=0;
108 3 }
109 2
110 2 }
111 1 }
112 uchar irshou(uchar *data1)
113 { //uchar data1,BitCnt,i;
114 1 uchar i,j;
115 1 checkhead();
116 1 if(flag==1)
117 1 {
C51 COMPILER V7.06 KEY 04/03/2008 10:37:21 PAGE 3
118 2 flag=0;
119 2 for(i=0;i<4;i++) //共4个字节
120 2 { //1
121 3 *data1=0;
122 3 for(j=0;j<8;j++)
123 3 { while(ir==0)
124 4 { count10++;
125 5 }
126 4 if(count10>20)
127 4 {(*data1)<<=1;
128 5 }
129 4 //0
130 4 while(ir==1)
131 4 {count11++;
132 5 }
133 4 if(count11<60)
134 4 {*data1|=1;
135 5 }
136 4 count10=0;
137 4 count11=0;
138 4 }
139 3
140 3 data1++;
141 3 }
142 2 irchuli();
143 2 }
144 1
145 1 return 0;
146 1 }
147
148 //键盘扫描
149 void keyscan()
150 { if((P3&&0x70)!=0x70)
151 1 { if(!keyadd)
152 2 { delay(10);
153 3 if(!keyadd)
154 3 { if(ledblue==0)
155 4 {
156 5 if(VOL<84)
157 5 {VOL++;
158 6 }
159 5 blueout();
160 5 SendBT1029(0,VOL);
161 5 }
162 4 }
163 3 }
164 2 if(!keysub)
165 2 {delay(10);
166 3 if(!keysub)
167 3 { if(ledblue==0)
168 4 {
169 5 if(VOL>0)
170 5 {VOL--;
171 6 }
172 5 blueout();
173 5 SendBT1029(0,VOL);
174 5 }
175 4 }
176 3 }
177 2 if(!keystby)
178 2 {
179 3 delay(10);
C51 COMPILER V7.06 KEY 04/03/2008 10:37:21 PAGE 4
180 3 if(!keystby)
181 3 {VOLon=~VOLon;
182 4 stby=VOLon;
183 4 //ledred=~ledred;
184 4 redout();
185 4 }
186 3 }
187 2 }
188 1 }
189
190 /********************************************/
191
192 void main()
193 {
194 1 uart_init();
195 1 ledred=0;
196 1 ledblue=1;
197 1 delay(50000);
198 1 ledred=1;
199 1 ledblue=0;
200 1 while(1)
201 1 { keyscan();
202 2 irshou(&irdata);
203 2 }
204 1 }
205
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 426 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 11 3
IDATA SIZE = ---- ----
BIT SIZE = 4 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -