📄 remote51.lst
字号:
C51 COMPILER V8.02 REMOTE51 02/11/2007 10:19:24 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_7
9 //#define IRGND P2_6
10
11 union myd{
12 unsigned long r;
13 unsigned char led[4];
14 } ;
15 union myd k;
16 unsigned long readir(void);
17 void delay1(unsigned int nms);
18 void initTimer(unsigned char st0);
19
20 extern void lcd_init(void);
21 extern void lcd_string(char *strpoint); /*在当前显示位置显示LCD 字符串*/
22
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 void int1(void) interrupt 2
31 { EA = 0;
32 1 k.r = readir();
33 1 IE1 = 0;
34 1 EA = 1;
35 1 IE1 = 0;
36 1 }
37
38
39 int main(void)
40 {
41 1 union myd rdata;
42 1 unsigned char m,n,i,seg[]={0x01,0x02,0x04,0x08,0x10,0x00,0x00,0x00};
43 1 unsigned char zxm[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
44 1 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff, };
45 1 unsigned int rekey;
46 1 unsigned char key, str1[]="Code: -------- SYS:-- USER:--";
47 1 unsigned char code str2[]="Please press any key.....";
48 1
49 1 initTimer(D220U); //220us
50 1 IT1=1;
51 1 EX1=1;
52 1 EA=0;rekey=0;
53 1 key=0x10;
54 1 lcd_init();
55 1 lcd_string(str2);
C51 COMPILER V8.02 REMOTE51 02/11/2007 10:19:24 PAGE 2
56 1 while(1){
57 2 //IRGND =0;
58 2 k.r = readir();
59 2 if (k.r ==0xffffffff) rekey++;
60 2 else rekey =0;
61 2 P0 = zxm[key];
62 2 P2 = seg[3];
63 2 m=2;
64 2 while(m--)
65 2 {
66 3 if(k.r)
67 3 {
68 4 if (!rekey)
69 4 {
70 5 rdata = k;
71 5 //k.r=0x12345678;
72 5 str1[6]=0x30 | (k.led[0]&0xf0)>>4;
73 5 str1[7]=k.led[0]&0x0f | 0x30;
74 5
75 5 str1[8]=0x30 | (k.led[1]&0xf0)>>4;
76 5
77 5 str1[9]=k.led[1]&0x0f+0x30;
78 5
79 5 str1[10]=0x30 | (k.led[2]&0xf0)>>4;
80 5 str1[11]=k.led[2]&0x0f | 0x30;
81 5
82 5 str1[12]=0x30 | (k.led[3]&0xf0)>>4;
83 5 str1[13]=k.led[3]&0x0f | 0x30;
84 5 i=6;
85 5 while(i<14)
86 5 {
87 6 if(str1[i]>0x39) str1[i] +=('A'-'9'-1);
88 6 i++;
89 6 }
90 5 str1[24]=str1[6];
91 5 str1[25]=str1[7];
92 5 str1[34]=str1[10];
93 5 str1[35]=str1[11];
94 5 lcd_init();
95 5 lcd_string(str1);
96 5 }
97 4 }
98 3 i=0;
99 3 /*while(i<2)
100 3 {
101 3 P2 &= 0xe0;P0 = 0xff;
102 3 P0=zxm[(rdata.led[2*i]>>4 ) & 0x0f];
103 3 P2 |= seg[i*2];
104 3 n=100;while(n--);
105 3 P2 &= 0xe0;P0 = 0xff;
106 3 P0=zxm[rdata.led[2*i] & 0x0f];
107 3 //P0=zxm[8];
108 3 //P2 = seg[2*i+1];
109 3 P2 |= seg[i*2+1];
110 3 i++;
111 3 n=100;while(n--);
112 3 P2 &= 0xe0;P0=0xff;
113 3 }
114 3 */
115 3 i=0;
116 3 P2 &=0xe0;
117 3 while(i<16){
C51 COMPILER V8.02 REMOTE51 02/11/2007 10:19:24 PAGE 3
118 4 if(remcode[i]==rdata.led[2]) {
119 5 //Request(remotekey);//通过串口来查看解码是否正确
120 5 key=i;
121 5 i=22;
122 5 }
123 4 i++;
124 4 }
125 3 P0 = zxm[key];
126 3 P2 = seg[3];
127 3 n=100;while(n--);
128 3 //P2 &= 0xe0;P0=0xff;
129 3 }
130 2 //IRGND=0;
131 2 }
132 1 }
133
134 void delay1(unsigned int nms)
135 {
136 1 while(nms--);
137 1 }
138
139 // 24---220us, 06---250us
140 void initTimer(unsigned char st0)
141 {
142 1 TMOD=0x02;
143 1 TH0=st0;
144 1 TL0=st0;
145 1 TR0=1;
146 1 ET0=0;
147 1 ET1=0;
148 1 }
149
150 void initTimer2()
151 {
152 1 TMOD=0x01;
153 1 TH0=0xfc;
154 1 TL0=0x18;
155 1 TR0=1;
156 1 ET0=0;
157 1 ET1=0;
158 1 }
159
160 unsigned long readir(void)
161 { unsigned char i;
162 1 unsigned int delay;
163 1 unsigned long rdata=0;
164 1 union myd rem;
165 1 IRIN = 1;
166 1 if(IRIN) return 0;
167 1 EA=0;i=0;
168 1 initTimer2();TF0=0;
169 1 while(IRIN==0);
170 1 /* {
171 1 while(TF0==0);
172 1 TF0=0;i++;
173 1 TH0=0xfc;TL0=0x18;
174 1 }
175 1 TR0=0;
176 1 if (i<6) return i;*/
177 1 i=32;
178 1 while(i--) //始接收
179 1 {
C51 COMPILER V8.02 REMOTE51 02/11/2007 10:19:24 PAGE 4
180 2 delay =80;
181 2 initTimer(D220U);
182 2 while(delay--) // 延时4.5ms~6.0ms
183 2 {
184 3 while(TF0==0);
185 3 TF0=0;if(IRIN==0) delay = 0;
186 3 }
187 2 TR0=0;
188 2 while(IRIN==0) IRIN = 1; //等待高电平
189 2 // 延时0.9ms begin
190 2 initTimer(D220U);
191 2 delay=6;
192 2 while(delay--)
193 2 {while(TF0==0);TF0=0;}
194 2 TR0=0;
195 2 // 延时0.9ms end
196 2 rdata <<=1;
197 2 IRIN =1;
198 2 if(IRIN)
199 2 rdata |= 0x1;
200 2 }
201 1 rem.r = rdata;
202 1 if(rem.r+1) {
203 2 //if (((rem.led[0]+ rem.led[1])== 0xff) &&((rem.led[2]+ rem.led[3])== 0xff)) return rdata;
204 2 if ((rem.led[2]+ rem.led[3])== 0xff) return rdata;
205 2 else return 0;
206 2 }
207 1 else return rdata;
208 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 715 ----
CONSTANT SIZE = 119 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 80
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 + -