📄 红外遥控.lst
字号:
C51 COMPILER V7.20 红外襙控 09/23/2011 16:29:44 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE 红外襙控
OBJECT MODULE PLACED IN 红外遥控.OBJ
COMPILER INVOKED BY: C:\keil\C51\BIN\C51.EXE 红外遥控.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #include<intrins.h>
3 #define uint unsigned int
4 #define uchar unsigned char
5 sbit hw=P3^2;
6 sbit a=P1^0;
7 sbit b=P1^1;
8 sbit c=P1^2;
9 const uchar table[]={
10 0x3f,0x06,0x5b,0x4f,0x66,
11 0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
12 uchar hwx[66];
13 uint num1=50;
14 uchar date[4];
15 void delay1(uint z)
16 {
17 1 uint i,j;
18 1 for(i=z;i>0;i--)
19 1 for(j=110;j>0;j--);
20 1 }
21 void delay(void) //红外解码用的延时
22 {
23 1 unsigned char i=13;
24 1 while(i)
25 1 i--;
26 1 }
27 void HC138(uchar i)
28 {
29 1 a=i&0x01;
30 1 b=i&0x02;
31 1 c=i&0x04;
32 1 }
33 void display(uchar flag,uchar num)
34 {
35 1 uchar ge,shi;
36 1 shi=num/16;
37 1 ge=num%16;
38 1 P2=table[ge];
39 1 HC138(flag);
40 1 delay1(2);
41 1
42 1 P2=table[shi];
43 1 HC138(flag+1);
44 1 delay1(2);
45 1
46 1 }
47 void main()
48 {
49 1 // uchar i;
50 1 EA=1;
51 1 EX0=1;
52 1 IE0=1;
53 1 while(1)
54 1 {
55 2 display(0,date[3]);
C51 COMPILER V7.20 红外襙控 09/23/2011 16:29:44 PAGE 2
56 2 display(2,date[2]);
57 2 display(4,date[1]);
58 2 display(6,date[0]);
59 2 }
60 1
61 1 }
62 void hongwai() interrupt 0
63 {
64 1 uchar i,j,temp;
65 1 uint temp2;
66 1 EX0=0;
67 1 j=33;
68 1 i=0;
69 1 temp2=0;
70 1 while(!hw) //检测是否有信号
71 1 {
72 2 temp2++;
73 2 if(temp2==1000)
74 2 break;
75 2 }
76 1 if(temp2<1000) //如果信号时间小于1000,则为干扰信号,重新检查
77 1 {
78 2 EX0=1;
79 2 return;
80 2 }
81 1 while(j) //进行33次循环,进行解码
82 1 {
83 2 temp=0;
84 2 hwx[i]=1;
85 2 while(!hw) //P3^3引脚为低电平时
86 2 {
87 3 hwx[i]++;
88 3 delay();
89 3 temp++;
90 3 if(temp==250) //防止干扰进入死循环
91 3 break;
92 3 }
93 2 i++;
94 2 temp=0;
95 2 hwx[i]=1;
96 2 while(hw) //P3^3引脚为高电平时
97 2 {
98 3 hwx[i]++;
99 3 delay();
100 3 temp++;
101 3 if(temp==250) //防止干扰进入死循环
102 3 break;
103 3 }
104 2 i++;
105 2 j--;
106 2 }
107 1 i=255;
108 1 while(i) //延时函数
109 1 {
110 2 temp=255;
111 2 while(temp)
112 2 {
113 3 //_nop_();
114 3 temp--;
115 3 }
116 2 i--;
117 2 }
C51 COMPILER V7.20 红外襙控 09/23/2011 16:29:44 PAGE 3
118 1 temp=0;
119 1 for(i=3;i<19;i++,i++){ //处理地址位前8位,这是3是因为去掉前面的引导码。对低电平时间数据的数理,
120 2 temp>>=1; //右移一位,接收低电平在前
121 2 if(hwx[i]>30) //检测低电平时间超过30就确认为1
122 2 temp+=0x80;
123 2 }
124 1 date[0]=temp;
125 1 temp=0;
126 1 for(i=19;i<35;i++,i++){ //同上,这里处理地址位后8位
127 2 temp>>=1;
128 2 if(hwx[i]>30)
129 2 temp+=0x80;
130 2 }
131 1 date[1]=temp;
132 1 temp=0;
133 1 for(i=35;i<51;i++,i++){ //同上,这里处理控制位前8位
134 2 temp>>=1;
135 2 if(hwx[i]>30)
136 2 temp+=0x80;
137 2 }
138 1 date[2]=temp;
139 1 temp=0;
140 1 for(i=51;i<67;i++,i++){ //同上,这里处理控制位后8位
141 2 temp>>=1;
142 2 if(hwx[i]>30)
143 2 temp+=0x80;
144 2 }
145 1 date[3]=temp;
146 1 EX0=1;
147 1 }
148
149
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 403 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 88 ----
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 + -