📄 getmain.lst
字号:
C51 COMPILER V7.20 GETMAIN 06/09/2006 21:54:43 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE GETMAIN
OBJECT MODULE PLACED IN getmain.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE getmain.c ROM(SMALL) BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <regx52.h>
2
3 #define REDUSER 0x09
4
5 sbit control1 = P0^0 ;
6 sbit control2 = P0^1 ;
7 sbit control3 = P0^2 ;
8
9
10 unsigned char redcode[4];
11
12 bit reddata ; /*读数据标志*/
13 bit firstcode ; /*引导码标志*/
14 bit getcode ;
15
16 void setred(void)
17 {
18 1 TMOD = 0x01;
19 1
20 1 TH0 = 0 ;
21 1 TL0 = 0 ;
22 1 TR0 = 1 ;
23 1
24 1 EA = 1 ;
25 1 ET0 = 1 ;
26 1 EX0 = 1 ;
27 1 IT0 = 1 ;
28 1
29 1 reddata = 0 ;
30 1 firstcode = 0 ;
31 1 getcode = 0 ;
32 1 }
33
34 void sethome(void)
35 {
36 1 control1 = 0 ;
37 1 control2 = 0 ;
38 1 control3 = 0 ;
39 1 }
40 void int_t0(void) interrupt 1
41 {
42 1
43 1 TH0 = 0 ;
44 1 TL0 = 0 ;
45 1 reddata = 0 ;
46 1 firstcode = 0 ;
47 1
48 1 }
49
50 void int_ex0(void) interrupt 0
51 {
52 1 static unsigned char num ;
53 1 static unsigned char wei;
54 1
55 1
C51 COMPILER V7.20 GETMAIN 06/09/2006 21:54:43 PAGE 2
56 1 if(reddata == 0)
57 1 { /*引导码判断*/
58 2
59 2 if( firstcode == 0 )
60 2 {
61 3 firstcode = 1 ;
62 3 }
63 2 else
64 2 {
65 3 if( TH0 >= 0x2B && TH0 <= 0x4E )
66 3 {
67 4 reddata = 1 ;
68 4 num = 0 ;
69 4 wei = 0 ;
70 4 getcode = 0 ;
71 4 }
72 3
73 3 firstcode = 0 ;
74 3 }
75 2
76 2 }
77 1 else
78 1 { /*代码判断*/
79 2
80 2 if( TH0 > 0x0C) /*大于3MS出错*/
81 2 {
82 3 reddata = 0 ;
83 3 num = 0 ;
84 3 wei = 0 ;
85 3 }
86 2 else if(TH0 >= 0x07 ) /*大于1.8MS小于3MS 为1 */
87 2 {
88 3 redcode[num] >>= 1 ;
89 3 redcode[num] |= 0x80;
90 3 wei++ ;
91 3 }
92 2 else if (TH0 >= 0x03) /*大于0.8小于1.8MS 为0*/
93 2 {
94 3 redcode[num] >>= 1 ;
95 3 redcode[num] &= 0x7f ;
96 3 wei++ ;
97 3 }
98 2 else
99 2 { /*出错*/
100 3 reddata = 0 ;
101 3 num = 0 ;
102 3 wei = 0 ;
103 3 }
104 2
105 2 if(wei == 8 )
106 2 { /*转下一个8位码*/
107 3 wei = 0 ;
108 3 num++;
109 3 }
110 2
111 2 if(num == 4)
112 2 { /*接收完毕*/
113 3 wei = 0 ;
114 3 num = 0 ;
115 3 reddata = 0 ;
116 3
117 3 if( (redcode[0] == ~redcode[1]) && (redcode[2] == ~redcode[3])) /*校验收到的码*/
C51 COMPILER V7.20 GETMAIN 06/09/2006 21:54:43 PAGE 3
118 3 getcode = 1 ;
119 3
120 3 }
121 2
122 2 }
123 1
124 1
125 1 TH0 = 0 ;
126 1 TL0 = 0 ;
127 1 return;
128 1 }
129
130 void main(void)
131 {
132 1 setred();
133 1 sethome();
134 1 while(1)
135 1 {
136 2 if(getcode)
137 2 {
138 3 if(redcode[0] == REDUSER)
139 3 {
140 4 switch(redcode[2])
141 4 {
142 5 case 0 :control1 = 1 ;
143 5 break;
144 5 case 1 :control2 = 1 ;
145 5 break;
146 5 case 2 :control3 = 1 ;
147 5 break;
148 5 case 3 :control1 = 0 ;
149 5 break;
150 5 case 4 :control2 = 0 ;
151 5 break;
152 5 case 5 :control3 = 0 ;
153 5 break;
154 5 }
155 4 getcode = 0 ;
156 4 }
157 3 }
158 2 }
159 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 283 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 ----
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -