📄 ir-com.lst
字号:
C51 COMPILER V7.20 IR_COM 04/12/2007 07:02:27 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE IR_COM
OBJECT MODULE PLACED IN ir-com.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ir-com.c BROWSE DEBUG OBJECTEXTEND
line level source
1 // 波特率发生器的初值(115200波特率)XTAL 11.0592M
2 //#define BRGR1_DATA 00
3 //#define BRGR0_DATA 0x50
4 #include <REGX51.H>
5
6 sbit WAY_0 = P3^2;
7 sbit BLK= P3^3;
8 sbit LED= P1^3;
9
10 unsigned char bdata buffer;//发往串口的缓冲器
11 sbit way0=buffer^0;
12 unsigned char irtype; //RC5一帧的各段的标志
13
14 unsigned char count,buf_s[3]; //红外接收位寄存器
15 unsigned char end; //红外一帧接收结束标志
16
17 void DelayA(void)
18 {
19 1 unsigned int TempCyc;
20 1 for (TempCyc=0; TempCyc<650; TempCyc++); //3.5
21 1 }
22
23
24
25 void t0_service(void) interrupt 1 using 1
26 {
27 1 //第一次进入中断,为定时1/4位的时间445us
28 1 //以后则定时一位时间1.778ms进入中断
29 1 way0=~WAY_0; //一体化解码后,有载频的部分变为低电平
30 1
31 1 //DelayA();
32 1 //DelayA();
33 1
34 1
35 1 //way0=~WAY_0;
36 1 TH0=(0xffff-1522)/256;
37 1 TL0=(0xffff-1522)%256;
38 1 count++;
39 1 if((irtype==0)&&(count==3)) //起始码部分2个1和翻转位
40 1 {
41 2 buf_s[0]=buffer;
42 2 count=0;
43 2 irtype=1;
44 2 buffer=0;
45 2 }
46 1 else if((irtype==1)&&(count==5)) //5位地址
47 1 {
48 2 buf_s[1]=buffer;
49 2 count=0;
50 2 irtype=2;
51 2 buffer=0;
52 2 }
53 1 else if((irtype==2)&&(count==6)) //6位命令
54 1 {
55 2 buf_s[2]=buffer;
C51 COMPILER V7.20 IR_COM 04/12/2007 07:02:27 PAGE 2
56 2 P0 = ~buffer;
57 2 count=0;
58 2 irtype=3;
59 2 buffer=0;
60 2
61 2 }
62 1 else if(irtype==3) //等最后半位结束,实际延时1位时间
63 1 {
64 2 TI=0;
65 2 count=0;
66 2 irtype=0;
67 2 buffer=0;
68 2 end=1;
69 2 TR0=0; //解码结束,定时器停止
70 2 return;
71 2 }
72 1 buffer=buffer<<1;
73 1 if(way0 == 1) buffer++;
74 1 }
75
76 void powerup( void )
77 {
78 1 TMOD = 0X21; //定时器1为方式2
79 1 TL1 = 0xfd; //置初值,波特率为9600
80 1 TH1 = 0xfd;
81 1 PCON = 0x00; //SMOD = 0
82 1 TR1 = 1; //启动定时器1
83 1 IE=0x82;
84 1 SCON = 0x50;
85 1 }
86
87 void main(void)
88 {
89 1 //unsigned char i;
90 1 WAY_0=1; //输入首先写1
91 1 BLK=0;
92 1 LED=0;
93 1 powerup();
94 1 while(1)
95 1 {
96 2 buffer=0;
97 2 irtype=0;
98 2 count=0;
99 2 end=0;
100 2 TH0=(0xffff-381)/256;
101 2 TL0=(0xffff-381)%256;
102 2 while (WAY_0);//等待低电平,一帧的开始 way
103 2 TR0=1; //开始定时,红外接收
104 2 while(!end); //等一帧解码结束
105 2 //for(i = 0;i<3;i++)
106 2 //{
107 2 TI=0;
108 2 SBUF=buf_s[2]+0x30;
109 2 while(!TI);
110 2 //}
111 2 }
112 1 }
113
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 208 ----
C51 COMPILER V7.20 IR_COM 04/12/2007 07:02:27 PAGE 3
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 ----
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 + -