📄 main.lst
字号:
C51 COMPILER V7.07 MAIN 07/24/2008 17:38:53 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "at89x52.h"
2
3 typedef unsigned char BYTE;
4 typedef unsigned int WORD;
5
6 BYTE state;
7 BYTE wg0;
8 BYTE wg1;
9 BYTE wg2;
10 BYTE count;
11 BYTE cnt;
12 bit r_done;
13 bit firstbit;
14 bit lastbit;
15 bit D0_done;
16 bit D1_done;
17
18
19 sbit WG_IN1 = P3^2;
20 sbit WG_IN0 = P3^3;
21
22 void delay_30us(void)
23 {
24 1 TR0 = 0;
25 1 TH0 = (65536 - 20)/256; //定时30us
26 1 TL0 = ((65536 - 20)%256);
27 1 TF0 = 0;
28 1 ET0 = 0;
29 1 TR0 = 1;
30 1 while (!TF0) { ;}
31 1 TF0 = 0;
32 1 }
33
34 void Sys_init(void) //4800
35 {
36 1 /* RCAP2L=0xb8;
37 1 RCAP2H=0xFF;
38 1 SCON=0x40;
39 1 T2CON=0x34;*/
40 1 SCON=0x50; // UART_mode=1,REN=1
41 1 PCON=0x00;
42 1 TMOD=0x21;
43 1 TL1=0xfa;
44 1 TH1=0xfa;
45 1 TR1=1;
46 1 // ES=1;
47 1 ES=0;
48 1 IT0=1;
49 1 IT1=1;
50 1 // IP=0x10;
51 1 EX0=1;
52 1 EX1=1;
53 1 EA=1;
54 1 }
55 void IT0_int(void) interrupt 0 //D1
C51 COMPILER V7.07 MAIN 07/24/2008 17:38:53 PAGE 2
56 {
57 1 /* delay_30us();
58 1 if(WG_IN1==0)
59 1 {
60 1 delay_30us();
61 1 if(WG_IN1==0)
62 1 {
63 1 delay_30us();
64 1 if(WG_IN1==0)
65 1 {*/
66 1 if(count==0){
67 2 firstbit=1;
68 2 }else if(count<9){
69 2 wg0=(wg0<<1)|0x01;
70 2 }else if(count<17){
71 2 wg1=(wg1<<1)|0x01;
72 2 }else if(count<25){
73 2 wg2=(wg2<<1)|0x01;
74 2 }else {lastbit=1;r_done=1;}
75 1 count++;
76 1 if(count==26)
77 1 count=0;
78 1 /* }else count=0;
79 1 }else count=0;
80 1 }
81 1 else count=0;*/
82 1 // cnt=3;
83 1 }
84 void IT1_int(void) interrupt 2 //D0
85 {
86 1 /* delay_30us();
87 1 if(WG_IN0==0)
88 1 {
89 1 delay_30us();
90 1 if(WG_IN0==0)
91 1 {
92 1 delay_30us();
93 1 if(WG_IN0==0)
94 1 {*/
95 1 if(count==0){
96 2 firstbit=0;
97 2 }else if(count<9){
98 2 wg0=(wg0<<1)&0xfe;
99 2 }else if(count<17){
100 2 wg1=(wg1<<1)&0xfe;
101 2 }else if(count<25){
102 2 wg2=(wg2<<1)&0xfe;
103 2 }else {lastbit=0;r_done=1;}
104 1 count++;
105 1 if(count==26)
106 1 count=0;
107 1 /* }else count=0;
108 1 }else count=0;
109 1 }else count=0;*/
110 1 // cnt=3;
111 1 }
112
113 void T0_init(void)
114 {
115 1
116 1 // TMOD=0x01;
117 1 TH0=TL0=0;
C51 COMPILER V7.07 MAIN 07/24/2008 17:38:53 PAGE 3
118 1 ET0=1;
119 1 TR0=1;
120 1 IP=0x03;
121 1
122 1 }
123
124 void T0_Int(void) interrupt 1
125 {
126 1 if(cnt){
127 2 cnt--;
128 2 if(cnt==0){
129 3 count=0;
130 3 }
131 2 }
132 1 }
133
134 void wg_process(void)
135 {
136 1
137 1 // BYTE i;
138 1 BYTE sum=0;
139 1 /* for(i=0;i<8;i++)
140 1 {
141 1 if(wg0&(0x01<<i))
142 1 sum++;
143 1 }
144 1 for(i=0;i<4;i++)
145 1 {
146 1 if(wg1&(0x10<<i))
147 1 sum++;
148 1 }
149 1 if((sum%2)!=firstbit){ return;}
150 1 sum=0;
151 1 for(i=0;i<8;i++)
152 1 {
153 1 if(wg2&(0x01<<i))
154 1 sum++;
155 1 }
156 1 for(i=0;i<4;i++)
157 1 {
158 1 if(wg1&(0x01<<i))
159 1 sum++;
160 1 }
161 1 if((sum%2)==lastbit){ return;}*/
162 1 SBUF=wg0;
163 1 while(TI==0);
164 1 TI=0;
165 1 SBUF=wg1;
166 1 while(TI==0);
167 1 TI=0;
168 1 SBUF=wg2;
169 1 while(TI==0);
170 1 TI=0;
171 1 }
172
173 void main(void)
174 {
175 1 Sys_init();
176 1 T0_init();
177 1 cnt=0;
178 1 while(1){
179 2 if(r_done){
C51 COMPILER V7.07 MAIN 07/24/2008 17:38:53 PAGE 4
180 3 r_done=0;
181 3 wg_process();
182 3 wg0=wg1=wg2=0;
183 3 }
184 2 }
185 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 296 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 1
IDATA SIZE = ---- ----
BIT SIZE = 5 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -