📄 hong1.lst
字号:
C51 COMPILER V8.02 HONG1 08/11/2008 12:35:53 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE HONG1
OBJECT MODULE PLACED IN hong1.OBJ
COMPILER INVOKED BY: D:\Program Files\KEIL\C51\BIN\C51.EXE hong1.C BROWSE DEBUG OBJECTEXTEND
line level source
1 /* 51单片机红外遥控解码程序 */
2 /* 适用uPD6121系列 */
3 /* 周正华 2008.4.11编 */
4 /* http://hi.baidu.com/52_diy */
5 /*此程序是针对uPD6121系列的遥控器的取码程序,解码值在Im[2]中,当IrOK=1时解码有效。*/
6 #include <reg52.h>
7
8 #define DIGPORT P2
9 #define WORDPORT P0
10 unsigned char code LED_num[]={0x3f,0x18,0x76,0x7c,0x59,0x6d,0x6f,0x38,0x7f,0x7d};
11
12 #define Imax 14000 //此处为晶振为11.0592时的取值,
13 #define Imin 8000 //如用其它频率的晶振时,
14 #define Inum 1450 //要改变相应的取值。
15 unsigned char Im[]={0x00,0x00,0x00,0x00};
16
17 unsigned long m,Tc;
18 unsigned char i,IrOK;
19
20
21 void DelayMy(unsigned int t){
22 1 while(--t);
23 1 }
24
25
26 void Display_LED(unsigned long num)
27 {
28 1 unsigned int ii;
29 1 unsigned int jj=0;
30 1 unsigned long aa,bb;
31 1 unsigned int xx[8]={0,0,0,0,0,0,0,0};
32 1 do {
33 2 bb=num/10;
34 2 aa=num-bb*10;
35 2 xx[jj]=aa;
36 2 num=bb;jj++;
37 2 }
38 1 while(num>0);
39 1 DIGPORT=0x80;
40 1 for(ii=0;ii<8;ii++) {
41 2 WORDPORT=LED_num[xx[ii]];
42 2 DelayMy(60);
43 2 DIGPORT=DIGPORT>>1;
44 2 };
45 1 WORDPORT=0;
46 1 }
47
48 //外部中断解码程序
49 void intersvr1(void) interrupt 2 using 1
50 {
51 1 Tc=TH0*256+TL0; //提取中断时间间隔时长
52 1 TH0=0; TL0=0; //定时中断重新置零
53 1 if((Tc>Imin)&&(Tc<Imax)) m=0; //找到启始码
54 1 if(Tc>Inum) Im[m/8]=Im[m/8]>>1|0x80; else Im[m/8]=Im[m/8]>>1; //取码
55 1 if(m==32) if((Im[2]|0x01)==~Im[3]) IrOK=1; else IrOK=0; //取码完成后判断读码是否正确
C51 COMPILER V8.02 HONG1 08/11/2008 12:35:53 PAGE 2
56 1 m++; //准备读下一码
57 1 }
58
59
60 /*演示主程序*/
61 void main(void)
62 {
63 1 m=0;
64 1 EA=1;
65 1
66 1 IT1=1;EX1=1;
67 1
68 1 TMOD=0x11;
69 1 TH0=0;TL0=0;
70 1 TR0=1;ET0=1;
71 1
72 1 for(;;){
73 2 DelayMy(100);
74 2 if(IrOK==1) for(i=0;i<400;i++) Display_LED(Im[2]);
75 2 IrOK=0;
76 2 }
77 1 }
78
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 510 ----
CONSTANT SIZE = 26 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 14 30
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 + -