📄 ircom.lst
字号:
C51 COMPILER V8.15 IRCOM 07/08/2008 11:08:22 PAGE 1
C51 COMPILER V8.15, COMPILATION OF MODULE IRCOM
OBJECT MODULE PLACED IN ircom.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ircom.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2
3 /* 晶振:11.0569MHz */
4 #include <REGX52.h>
5 #define uchar unsigned char
6 uchar data IRcode[4]; //定义一个4字节的数组用来存储代码
7 uchar CodeTemp; //编码字节缓存变量
8 uchar i,j,k; //延时用的循环变量
9 sbit IRsignal=P3^2; //HS0038接收头OUT端直接连P3.2(INT0)
10 /**************************延时0.9ms子程序**********************/
11 void Delay0_9ms(void)
12 {uchar j,k;
13 1 for(j=18;j>0;j--)
14 1 for(k=20;k>0;k--) ;
15 1 }
16 /***************************延时1ms子程序**********************/
17 void Delay1ms(void)
18 {uchar i,j;
19 1 for(i=2;i>0;i--)
20 1 for(j=230;j>0;j--) ;
21 1 }
22 /***************************延时4.5ms子程序**********************/
23 void Delay4_5ms(void)
24 {uchar i,j;
25 1 for(i=10;i>0;i--)
26 1 for(j=225;j>0;j--) ;
27 1 }
28 /**************************** 延时子程序 ************************/
29 void Delay(void)
30 {uchar i,j,k;
31 1 for(i=200;i>0;i--)
32 1 for(j=200;j>0;j--)
33 1 for(k=3;k>0;k--) ;
34 1 }
35 /************************中断0解码服务子程序**********************/
36 void int0(void) interrupt 0 using 2
37 {
38 1 EA=0;
39 1 for(k=0;k<10;k++)
40 1 {Delay0_9ms();
41 2 if (IRsignal==1) //如果0.9ms后IRsignal=1,说明不是引导码
42 2 {k=10;break;}
43 2 else if(k==9) //如果持续了10×0.9ms=9ms的低电平,说明是引导码
44 2 {while(IRsignal==0);
45 3 Delay4_5ms(); //跳过持续4.5ms的高电平
46 3
47 3 for(i=0;i<4;i++) //分别读取4个字节
48 3 {for(j=1;j<=8;j++) //每个字节8个bit的判断
49 4 { while(IRsignal==0); //等待上升沿
50 5 Delay0_9ms(); //从上升沿那一时刻开始延时0.9ms,再判断IRsignal
51 5 if(IRsignal==1) //如果IRsignal是"1",则向右移入一位"1"
52 5 {Delay1ms();
53 6 CodeTemp=CodeTemp|0x80;
54 6 if(j<8) CodeTemp=CodeTemp>>1;
55 6 }
C51 COMPILER V8.15 IRCOM 07/08/2008 11:08:22 PAGE 2
56 5 else
57 5 if(j<8)CodeTemp=CodeTemp>>1;//如果IRsignal是"0",则向右移一位,自动补"0"
58 5 }
59 4 IRcode[i]=CodeTemp;
60 4 CodeTemp=0;
61 4 }
62 3 for(i=0;i<4;i++) //通过串口将代码发出
63 3 {
64 4 SBUF=IRcode[i];
65 4 while(!TI); //等待一个字节发送完毕
66 4 TI=0;
67 4 }
68 3 Delay();
69 3 }
70 2 }
71 1 EA=1;
72 1 }
73 /***********************串口初始化程序*********************/
74 void initUart(void)
75 {
76 1 TMOD|=0x20;
77 1 SCON=0x50;
78 1 PCON|=0x80;
79 1 TH1=0xff; //57600bps @ 11.0592MHz
80 1 TL1=0xff;
81 1 TR1=1;
82 1 }
83 /**************************主程序*************************/
84 void main()
85 { initUart();
86 1 IT0=1; //INT0为负边沿触发, (1:负边沿触发,0:低电平触发)
87 1 EX0=1; //外部中断INT0开, (1:开, 0:关 )
88 1 EA=1; //开所有中断
89 1 CodeTemp=0; //初始化红外编码字节缓存变量
90 1 Delay();
91 1 while(1);
92 1 }
93
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 226 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 ----
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 + -