📄 16位数据编码.lst
字号:
C51 COMPILER V7.08 16位数据盻码 08/23/2007 13:20:44 PAGE 1
C51 COMPILER V7.08, COMPILATION OF MODULE 16位数据盻码
OBJECT MODULE PLACED IN 16位数据编码.OBJ
COMPILER INVOKED BY: D:\单片机~1\C51\Bin\c51.exe 16位数据编码.c DB OE SMALL ROM(LARGE)
line level source
*** WARNING C500 IN LINE 1 OF 16位数据编码.C: MISSING DEVICE (SECURITY KEY NOT FOUND)
1 #include<reg52.h>
2 #define uchar unsigned char //预定义字符
3 #define uint unsigned int
4
5 sbit flag=P3^4; //发射输出端
6 uint count; //延时计数器
7 uint endcount; //终止延时计数
8
9 void SendIRdata(uchar addr,uint r_data);
10 void delay();
11
12 //-----------------------主程序------------------------
13
14 void main(void)
15 {
16 1 count=0;
17 1 flag=1;
18 1
19 1 EA=1; //允许CPU中断
20 1 TMOD=0x11; //设定时器0和1为16位模式1
21 1 ET0=1; //定时器0中断允许
22 1
23 1
24 1 TH0=0xFF;
25 1 TL0=0xE6; //设定时值0为38K 也就是每隔26us中断一次
26 1 TR0=1;//开始计数
27 1
28 1 do{
29 2 delay();
30 2 SendIRdata(0x7e,0xffff);
31 2 }while(1);
32 1 }
33
34 //------------------------------定时器0中断处理---------------------------------------
35
36 void timeint(void) interrupt 1 using 2
37 {
38 1 TH0=0xFF;
39 1 TL0=0xE6; //-----------设定时值为38K也就是每隔26us中断一次
40 1 count++;
41 1 }
42
43 //----------------------------发送程序----------------------------------------------
44
45 void SendIRdata(uchar r_addr,uint r_data)
46 {
47 1 uchar i;
48 1 uint temp=r_data;
49 1 //---------------发送9ms的起始码
50 1 endcount=223;
51 1 flag=0;
52 1 count=0;
53 1 do{}while(count<endcount);
54 1
C51 COMPILER V7.08 16位数据盻码 08/23/2007 13:20:44 PAGE 2
55 1 //---------------发送4.5ms的结果码
56 1 endcount=117;
57 1 flag=1;
58 1 count=0;
59 1 do{}while(count<endcount);
60 1
61 1 //--------------发送八位地址
62 1
63 1 for(i=0;i<8;i++)
64 1 {
65 2
66 2 //----------先发送0.56ms的低电平
67 2 endcount=10;
68 2 flag=0;
69 2 count=0;
70 2 do{}while(count<endcount);
71 2
72 2 //------------停止发送红外信号(即编码中的高电平)
73 2 if(r_addr-(r_addr/2)*2) //判断二进制数个位为1还是0
74 2 {
75 3 endcount=41; //1为宽的高电平
76 3 }
77 2 else
78 2 {
79 3 endcount=15; //0为窄的高电平
80 3 }
81 2 flag=1;
82 2 count=0;
83 2 do{}while(count<endcount);
84 2
85 2 r_addr=r_addr>>1;
86 2 }
87 1
88 1 //------------------------发送十六位数据
89 1
90 1 for(i=0;i<16;i++)
91 1 {
92 2 endcount=10;
93 2 flag=0;
94 2 count=0;
95 2 do{}while(count<endcount);
96 2
97 2 if(r_data-(r_data/2)*2)
98 2 {
99 3 endcount=41;
100 3 }
101 2 else
102 2 {
103 3 endcount=15;
104 3 }
105 2 flag=1;
106 2 count=0;
107 2 do{}while(count<endcount);
108 2
109 2 r_data=r_data>>1;
110 2 }
111 1
112 1 //-----------------------发送十六位数据的反码
113 1 r_data=~temp;
114 1 for(i=0;i<16;i++)
115 1 {
116 2 endcount=10;
C51 COMPILER V7.08 16位数据盻码 08/23/2007 13:20:44 PAGE 3
117 2 flag=0;
118 2 count=0;
119 2 do{}while(count<endcount);
120 2
121 2 if(r_data-(r_data/2)*2)
122 2 {
123 3 endcount=41;
124 3 }
125 2 else
126 2 {
127 3 endcount=15;
128 3 }
129 2 flag=1;
130 2 count=0;
131 2 do{}while(count<endcount);
132 2
133 2 r_data=r_data>>1;
134 2 }
135 1
136 1 endcount=10;
137 1 flag=0;
138 1 count=0;
139 1 do{}while(count<endcount);
140 1 flag=1;
141 1 }
142
143 //-------------------------------------------延时程序----------------------------------
144 void delay()
145 {
146 1 uint i,j;
147 1 for(i=0;i<400;i++)
148 1 {
149 2 for(j=0;j<100;j++){}
150 2 }
151 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 420 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 ----
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 + -