📄 034_红外遥控器按键识别.lst
字号:
C51 COMPILER V8.01 034_红外_?_芲按键识别 03/08/2006 15:28:30 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE 034_红外_?_芲按键识别
OBJECT MODULE PLACED IN 034_红外遥控器按键识别.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 034_红外遥控器按键识别.c BROWSE DEBUG OBJECTEXTEND TABS(2)
line level source
1 //|******************************************|
2 //| AT89S52,fosc=22.1184MHz |
3 //| Author: Sun An-Qing |
4 //| Date: 2005/11/22 |
5 //| www.supermcu.com |
6 //| glsaq@sina.com.cn |
7 //| 版权所有,供学习使用,请勿商业用途 |
8 //|******************************************|
9
10 //|******************************************|
11 //| SP_Lab_011:红外遥控器 |
12 //| (C51) |
13 //|******************************************|
14
15 //|******************************************|
16 //|红外遥控器信号通过P3.2口接收,由INT0的中断|
17 //|完成信号接收与处理,定时器T0产生精确定时,|
18 //|通过P3.6口给出红外遥控器解码成功提示信号。|
19 //|******************************************|
20
21 #include <REGX51.H>
22
23 /***********************/
24 //---fosc=22.1184MHz---//
25 #define DLY_882US 1626
26 #define DLY_1000US 1843
27 #define DLY_4740US 8737
28 /***********************/
29
30 sbit Infrare=P3^2;
31 sbit SPK=P3^7;
32
33 unsigned char BufferCount;
34 unsigned char Buffer[2];
35
36 void main(void)
37 {
38 1 IT0=1;
39 1 EX0=1;
40 1 EA=1;
41 1
42 1 TMOD=0x01;
43 1
44 1 while(1);
45 1 }
46
47 void int0(void) interrupt 0
48 {
49 1 unsigned char i,j;
50 1 unsigned char temp;
51 1
52 1 EX0=0;
53 1
54 1 for(i=5;i>0;i--)
55 1 {
C51 COMPILER V8.01 034_红外_?_芲按键识别 03/08/2006 15:28:30 PAGE 2
56 2 TH0=(65536-DLY_882US)/256;
57 2 TL0=(65536-DLY_882US)%256;
58 2 TF0=0;
59 2 TR0=1;
60 2 while(TF0==0);
61 2 TF0=0;
62 2 TR0=0;
63 2 if(Infrare==1)goto Exit_Int0;
64 2 }
65 1
66 1 while(Infrare==0);
67 1 TH0=(65536-DLY_4740US)/256;
68 1 TL0=(65536-DLY_4740US)%256;
69 1 TF0=0;
70 1 TR0=1;
71 1 while(TF0==0);
72 1 TF0=0;
73 1 TR0=0;
74 1
75 1 for(i=16;i>0;i--)
76 1 {
77 2 while(Infrare==0);
78 2 TH0=(65536-DLY_882US)/256;
79 2 TL0=(65536-DLY_882US)%256;
80 2 TF0=0;
81 2 TR0=1;
82 2 while(TF0==0);
83 2 TF0=0;
84 2 TR0=0;
85 2 if(Infrare==1)
86 2 {
87 3 TH0=(65536-DLY_1000US)/256;
88 3 TL0=(65536-DLY_1000US)%256;
89 3 TF0=0;
90 3 TR0=1;
91 3 while(TF0==0);
92 3 TF0=0;
93 3 TR0=0;
94 3 }
95 2 }
96 1
97 1 BufferCount=0;
98 1 for(j=2;j>0;j--)
99 1 {
100 2 temp=0;
101 2 for(i=8;i>0;i--)
102 2 {
103 3 temp>>=1;
104 3 while(Infrare==0);
105 3 TH0=(65536-DLY_882US)/256;
106 3 TL0=(65536-DLY_882US)%256;
107 3 TF0=0;
108 3 TR0=1;
109 3 while(TF0==0);
110 3 TF0=0;
111 3 TR0=0;
112 3 if(Infrare==1)temp+=0x80;
113 3 if(Infrare==1)
114 3 {
115 4 TH0=(65536-DLY_1000US)/256;
116 4 TL0=(65536-DLY_1000US)%256;
117 4 TF0=0;
C51 COMPILER V8.01 034_红外_?_芲按键识别 03/08/2006 15:28:30 PAGE 3
118 4 TR0=1;
119 4 while(TF0==0);
120 4 TF0=0;
121 4 TR0=0;
122 4 }
123 3 }
124 2 Buffer[BufferCount]=temp;
125 2 BufferCount++;
126 2 }
127 1
128 1 if(Buffer[0]==~Buffer[1])
129 1 {
130 2 P0=Buffer[1];
131 2 SPK=0;
132 2 for(i=3;i>0;i--)
133 2 {
134 3 TH0=(65536-DLY_4740US)/256;
135 3 TL0=(65536-DLY_4740US)%256;
136 3 TF0=0;
137 3 TR0=1;
138 3 while(TF0==0);
139 3 TF0=0;
140 3 TR0=0;
141 3 }
142 2 SPK=1;
143 2 }
144 1
145 1 Exit_Int0:
146 1 EX0=1;
147 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 242 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 ----
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 + -