📄 main.lst
字号:
C51 COMPILER V7.08 MAIN 01/06/2011 11:18:28 PAGE 1
C51 COMPILER V7.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 * 定时器模拟串口红外接收数据,并通过串口发送
3 *
4 * 晶振:11.0592M
5 */
6
7 #include <reg52.h>
8
9 typedef unsigned char uint8;
10
11 sbit Ir_Pin = P3^3;
12
13 uint8 Ir_Buf[4]; //用于保存解码结果
14
15
16 /*
17 * UART初始化
18 * 波特率:9600
19 */
20 void uart_init(void)
21 {
22 1 TMOD = 0x21;
23 1 SCON = 0x50;
24 1
25 1 TH1 = 0xFD;
26 1 TL1 = 0xFD;
27 1
28 1 TR1 = 1;
29 1 }
30
31 /*
32 * UART发送一字节
33 */
34 void UART_Send_Byte(uint8 dat)
35 {
36 1 SBUF = dat;
37 1 while (TI == 0);
38 1 TI = 0;
39 1 }
40
41
42 /*
43 * 获取低电平时间
44 */
45 unsigned int Ir_Get_Low()
46 {
47 1 TL0 = 0;
48 1 TH0 = 0;
49 1 TR0 = 1;
50 1 while (!Ir_Pin && (TH0&0x80)==0);
51 1
52 1 TR0 = 0;
53 1 return (TH0 * 256 + TL0);
54 1 }
55
C51 COMPILER V7.08 MAIN 01/06/2011 11:18:28 PAGE 2
56 /*
57 * 获取高电平时间
58 */
59 unsigned int Ir_Get_High()
60 {
61 1 TL0 = 0;
62 1 TH0 = 0;
63 1 TR0 = 1;
64 1 while (Ir_Pin && (TH0&0x80)==0);
65 1
66 1 TR0 = 0;
67 1 return (TH0 * 256 + TL0);
68 1 }
69
70
71 main()
72 {
73 1 unsigned int temp;
74 1 char i,j;
75 1
76 1 uart_init();
77 1
78 1 while (1)
79 1 {
80 2 start:
81 2 while (Ir_Pin);
82 2
83 2 temp = Ir_Get_Low();
84 2 if ((temp < 7833) || (temp > 8755)) //引导脉冲低电平8500~9500us
85 2 goto start;
86 2 temp = Ir_Get_High();
87 2 if ((temp < 3686) || (temp > 4608)) //引导脉冲高电平4000~5000us
88 2 goto start;
89 2
90 2 for (i=0; i<4; i++) //4个字节
91 2 {
92 3 for (j=0; j<8; j++) //每个字节8位
93 3 {
94 4 temp = Ir_Get_Low();
95 4 if ((temp < 184) || (temp > 737)) //200~800us
96 4 goto start;
97 4
98 4 temp = Ir_Get_High();
99 4 if ((temp < 184) || (temp > 1843)) //200~2000us
100 4 goto start;
101 4
102 4 Ir_Buf[i] >>= 1;
103 4 if (temp > 1032) //1120us
104 4 Ir_Buf[i] |= 0x80;
105 4 }
106 3 }
107 2
108 2 UART_Send_Byte(Ir_Buf[0]);
109 2 UART_Send_Byte(Ir_Buf[1]);
110 2 UART_Send_Byte(Ir_Buf[2]);
111 2 UART_Send_Byte(Ir_Buf[3]);
112 2 }
113 1 }
114
115
116
C51 COMPILER V7.08 MAIN 01/06/2011 11:18:28 PAGE 3
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 279 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 2
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 + -