📄 数据编码.lst
字号:
C51 COMPILER V7.08 数据盻码 08/22/2007 17:25:52 PAGE 1
C51 COMPILER V7.08, COMPILATION OF MODULE 数据盻码
OBJECT MODULE PLACED IN 数据编码.OBJ
COMPILER INVOKED BY: D:\单片机~1\C51\Bin\c51.exe 数据编码.c DB OE SMALL ROM(LARGE)
line level source
*** WARNING C500 IN LINE 1 OF 数据编码.C: MISSING DEVICE (SECURITY KEY NOT FOUND)
1 #include<reg52.h>
2
3 sbit flag=P3^4; //发射输出端
4 unsigned int count; //延时计数器
5 unsigned int endcount; //终止延时计数
6
7 unsigned char iraddr1; //十六位地址的第一个字节
8 unsigned char iraddr2; //十六位地址的第二个字节
9
10 void SendIRdata(char p_irdata);
11 void delay();
12
13 void main(void)
14 {
15 1 count=0;
16 1 flag=1;
17 1
18 1 EA=1; //允许CPU中断
19 1 TMOD=0x11; //设定时器0和1为16位模式1
20 1 ET0=1; //定时器0中断允许
21 1
22 1
23 1 TH0=0xFF;
24 1 TL0=0xE6; //设定时值0为38K 也就是每隔26us中断一次
25 1 TR0=1;//开始计数
26 1
27 1 iraddr1=3;
28 1 iraddr2=252;
29 1
30 1
31 1 do{
32 2 delay();
33 2 SendIRdata(12);
34 2 }while(1);
35 1 }
36
37 //定时器0中断处理
38 void timeint(void) interrupt 1 using 2
39 {
40 1 TH0=0xFF;
41 1 TL0=0xE6; //设定时值为38K也就是每隔26us中断一次
42 1 count++;
43 1 }
44
45
46 void SendIRdata(char p_irdata)
47 {
48 1 int i;
49 1 char irdata=p_irdata;
50 1
51 1 //发送9ms的起始码
52 1 endcount=223;
53 1 flag=0;
54 1 count=0;
C51 COMPILER V7.08 数据盻码 08/22/2007 17:25:52 PAGE 2
55 1 do{}while(count<endcount);
56 1
57 1 //发送4.5ms的结果码
58 1 endcount=117;
59 1 flag=1;
60 1 count=0;
61 1 do{}while(count<endcount);
62 1
63 1 //发送十六位地址的前八位
64 1 irdata=iraddr1;
65 1 for(i=0;i<8;i++)
66 1 {
67 2
68 2 //先发送0.56ms的38KHZ红外波(即编码中0.56ms的低电平)
69 2 endcount=10;
70 2 flag=0;
71 2 count=0;
72 2 do{}while(count<endcount);
73 2
74 2 //停止发送红外信号(即编码中的高电平)
75 2 if(irdata-(irdata/2)*2) //判断二进制数个位为1还是0
76 2 {
77 3 endcount=41; //1为宽的高电平
78 3 }
79 2 else
80 2 {
81 3 endcount=15; //0为窄的高电平
82 3 }
83 2 flag=1;
84 2 count=0;
85 2 do{}while(count<endcount);
86 2
87 2 irdata=irdata>>1;
88 2 }
89 1
90 1 //发送十六位地址的后八位
91 1 irdata=iraddr2;
92 1 for(i=0;i<8;i++)
93 1 {
94 2 endcount=10;
95 2 flag=0;
96 2 count=0;
97 2 do{}while(count<endcount);
98 2
99 2 if(irdata-(irdata/2)*2)
100 2 {
101 3 endcount=41;
102 3 }
103 2 else
104 2 {
105 3 endcount=15;
106 3 }
107 2 flag=1;
108 2 count=0;
109 2 do{}while(count<endcount);
110 2
111 2 irdata=irdata>>1;
112 2 }
113 1
114 1 //发送八位数据
115 1 irdata=p_irdata;
116 1 for(i=0;i<8;i++)
C51 COMPILER V7.08 数据盻码 08/22/2007 17:25:52 PAGE 3
117 1 {
118 2 endcount=10;
119 2 flag=0;
120 2 count=0;
121 2 do{}while(count<endcount);
122 2
123 2 if(irdata-(irdata/2)*2)
124 2 {
125 3 endcount=41;
126 3 }
127 2 else
128 2 {
129 3 endcount=15;
130 3 }
131 2 flag=1;
132 2 count=0;
133 2 do{}while(count<endcount);
134 2
135 2 irdata=irdata>>1;
136 2 }
137 1
138 1 //发送八位数据的反码
139 1 irdata=~p_irdata;
140 1 for(i=0;i<8;i++)
141 1 {
142 2 endcount=10;
143 2 flag=0;
144 2 count=0;
145 2 do{}while(count<endcount);
146 2
147 2 if(irdata-(irdata/2)*2)
148 2 {
149 3 endcount=41;
150 3 }
151 2 else
152 2 {
153 3 endcount=15;
154 3 }
155 2 flag=1;
156 2 count=0;
157 2 do{}while(count<endcount);
158 2
159 2 irdata=irdata>>1;
160 2 }
161 1
162 1 endcount=10;
163 1 flag=0;
164 1 count=0;
165 1 do{}while(count<endcount);
166 1 flag=1;
167 1 }
168
169 void delay()
170 {
171 1 int i,j;
172 1 for(i=0;i<400;i++)
173 1 {
174 2 for(j=0;j<100;j++)
175 2 {
176 3 }
177 2 }
178 1 }
C51 COMPILER V7.08 数据盻码 08/22/2007 17:25:52 PAGE 4
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 520 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -