?? 數據編碼.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 + -