📄 remote51.lst
字号:
C51 COMPILER V8.02 REMOTE51 02/24/2007 12:37:25 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE REMOTE51
OBJECT MODULE PLACED IN REMOTE51.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE REMOTE51.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <REGX52.H>
2 #define D45MS 2500
3 #define D09MS 450
4 #define D220U 0x90
5 #define D250U 0x06
6
7 #define IRIN P1_4 //红外输入引脚的定义
8 //#define IRIN P2_0 //红外输入引脚的定义
9 //#define IRIN P2_7
10 //#define IRGND P2_6
11
12 union myd{
13 unsigned long r;
14 unsigned char led[4];
15 } ;
16 union myd k;
17 unsigned long readir(void);
18 void delay1(unsigned int nms);
19 void initTimer(unsigned char st0);
20
21 extern void lcd_init(void);
22 extern void lcd_string(char *strpoint); /*在当前显示位置显示LCD 字符串*/
23
24 //unsigned char code remcode[]={0x12,0x90,0xb8,0xf8,0x98,0xd8,0x88,0xe8,0x48,0x68,//0,1-9
25 // 0xb0,0xa8,0x99,0x00,0x08,0x60,0x02,0x20,
26 //VOL+,VOL-,CH+,CH-,POWER,mute,recall,-/--
27 // 0x40,0xa0,0x2a,0xb2,0x50,0x78,0x70,0x58,0x38,0x30};
28 // 最后3排AV。。。Freeze。。。video。。。hide。。。panel等
29
30 unsigned char code remcode[]={
31 0x90,0x00,0x80,0x40,0xc0,0x20,0xa0,0x60,0xe0,0x10,//0-9的编码
32 0x28, 0x68,0x08, 0x88, 0x58,0x48,0xc8, 0xa8,
33 //TV/AV,关机,频道-,频道+,重复,VOL+,VOL-, 静音MUTE,
34 0x78, 0xb8, 0x38, 0xe8, 0x98,0x18, 0x98, 0x50,0xd0,
35 //亮度,MIN,HOUR,IMER,SET,定时,画中画,2*, 3*
36 };
37
38 void int1(void) interrupt 2
39 { EA = 0;
40 1 k.r = readir();
41 1 IE1 = 0;
42 1 EA = 1;
43 1 IE1 = 0;
44 1 }
45
46
47 int main(void)
48 {
49 1 union myd rdata;
50 1 unsigned char m,n,i,seg[]={0x01,0x02,0x04,0x08,0x10,0x00,0x00,0x00};
51 1 unsigned char zxm[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
52 1 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff, };
53 1 unsigned int rekey;
54 1 unsigned char key, str1[]="Code: -------- SYS:-- USER:--";
55 1 unsigned char code str2[]="Please press any key.....";
C51 COMPILER V8.02 REMOTE51 02/24/2007 12:37:25 PAGE 2
56 1
57 1 //initTimer(D220U); //220us
58 1 IT1=1;
59 1 EX1=1;
60 1 EA=0;rekey=0;
61 1 key=0x10;
62 1 // lcd_init();
63 1 // lcd_string(str2);
64 1 while(1){
65 2 //IRGND =0;
66 2 k.r = readir();
67 2 if (k.r ==0xffffffff) rekey++;
68 2 else rekey =0;
69 2 P0 = zxm[key];
70 2 P2 = seg[3];
71 2 m=2;
72 2 while(m--)
73 2 {
74 3 if(k.r)
75 3 {
76 4 if (!rekey)
77 4 {
78 5 rdata = k;
79 5 //k.r=0x12345678;
80 5 str1[6]=0x30 | (k.led[0]&0xf0)>>4;
81 5 str1[7]=k.led[0]&0x0f | 0x30;
82 5
83 5 str1[8]=0x30 | (k.led[1]&0xf0)>>4;
84 5
85 5 str1[9]=k.led[1]&0x0f+0x30;
86 5
87 5 str1[10]=0x30 | (k.led[2]&0xf0)>>4;
88 5 str1[11]=k.led[2]&0x0f | 0x30;
89 5
90 5 str1[12]=0x30 | (k.led[3]&0xf0)>>4;
91 5 str1[13]=k.led[3]&0x0f | 0x30;
92 5 i=6;
93 5 while(i<14)
94 5 {
95 6 if(str1[i]>0x39) str1[i] +=('A'-'9'-1);
96 6 i++;
97 6 }
98 5 str1[24]=str1[6];
99 5 str1[25]=str1[7];
100 5 str1[34]=str1[10];
101 5 str1[35]=str1[11];
102 5 // lcd_init();
103 5 // lcd_string(str1);
104 5 }
105 4 }
106 3 i=0;
107 3 /*while(i<2)
108 3 {
109 3 P2 &= 0xe0;P0 = 0xff;
110 3 P0=zxm[(rdata.led[2*i]>>4 ) & 0x0f];
111 3 P2 |= seg[i*2];
112 3 n=100;while(n--);
113 3 P2 &= 0xe0;P0 = 0xff;
114 3 P0=zxm[rdata.led[2*i] & 0x0f];
115 3 //P0=zxm[8];
116 3 //P2 = seg[2*i+1];
117 3 P2 |= seg[i*2+1];
C51 COMPILER V8.02 REMOTE51 02/24/2007 12:37:25 PAGE 3
118 3 i++;
119 3 n=100;while(n--);
120 3 P2 &= 0xe0;P0=0xff;
121 3 }
122 3 */
123 3 i=0;
124 3 P2 &=0xe0;
125 3 while(i<16){
126 4 if(remcode[i]==rdata.led[2]) {
127 5 //Request(remotekey);//通过串口来查看解码是否正确
128 5 key=i;
129 5 i=22;
130 5 }
131 4 i++;
132 4 }
133 3 P0 = zxm[key];
134 3 P2 = seg[3];
135 3 n=100;while(n--);
136 3 //P2 &= 0xe0;P0=0xff;
137 3 }
138 2 //IRGND=0;
139 2 }
140 1 }
*** WARNING C280 IN LINE 55 OF REMOTE51.C: 'str2': unreferenced local variable
141
142 void delay1(unsigned int nms)
143 {
144 1 while(nms--);
145 1 }
146
147 // 24---220us, 06---250us
148 void initTimer(unsigned char st0)
149 {
150 1 TMOD=0x02;
151 1 TH0=st0;
152 1 TL0=st0;
153 1 TR0=1;
154 1 ET0=0;
155 1 ET1=0;
156 1 }
157
158 void initTimer2()
159 {
160 1 TMOD=0x01;
161 1 TH0=0xfc;
162 1 TL0=0x18;
163 1 TR0=1;
164 1 ET0=0;
165 1 ET1=0;
166 1 }
167
168 unsigned long readir(void)
169 { unsigned char i;
170 1 unsigned int delay;
171 1 unsigned long rdata=0;
172 1 union myd rem;
173 1 IRIN = 1;
174 1 if(IRIN) return 0;
175 1 EA=0;i=0;
176 1 initTimer2();TF0=0;
177 1 while(IRIN==0);
178 1 /* {
C51 COMPILER V8.02 REMOTE51 02/24/2007 12:37:25 PAGE 4
179 1 while(TF0==0);
180 1 TF0=0;i++;
181 1 TH0=0xfc;TL0=0x18;
182 1 }
183 1 TR0=0;
184 1 if (i<6) return i;*/
185 1 i=32;
186 1 while(i--) //始接收
187 1 {
188 2 delay =80;
189 2 initTimer(D220U);
190 2 while(delay--) // 延时4.5ms~6.0ms
191 2 {
192 3 while(TF0==0);
193 3 TF0=0;if(IRIN==0) delay = 0;
194 3 }
195 2 TR0=0;
196 2 while(IRIN==0) IRIN = 1; //等待高电平
197 2 // 延时0.9ms begin
198 2 initTimer(D220U);
199 2 delay=6;
200 2 while(delay--)
201 2 {while(TF0==0);TF0=0;}
202 2 TR0=0;
203 2 // 延时0.9ms end
204 2 rdata <<=1;
205 2 IRIN =1;
206 2 if(IRIN)
207 2 rdata |= 0x1;
208 2 }
209 1 rem.r = rdata;
210 1 if(rem.r+1) {
211 2 //if (((rem.led[0]+ rem.led[1])== 0xff) &&((rem.led[2]+ rem.led[3])== 0xff)) return rdata;
212 2 if ((rem.led[2]+ rem.led[3])== 0xff) return rdata;
213 2 else return 0;
214 2 }
215 1 else return rdata; // 说明:rdata.led[0]是用户码,rdata.led[2]是当前按键的编码
216 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 685 ----
CONSTANT SIZE = 118 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 80
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -