📄 zhenggeshi.lst
字号:
C51 COMPILER V8.08 ZHENGGESHI 04/23/2008 10:04:52 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE ZHENGGESHI
OBJECT MODULE PLACED IN ZHENGGESHI.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ZHENGGESHI.C ROM(SMALL) BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #include<intrins.h>
3 #include<stdio.h>
4 #include<DIS_LEDNUM_595.c>
5
6
7
8 #define F_ADDR P0
9 sbit PButton = P3^2;
10
11 #define uchar unsigned char
12 #define uint unsigned int
13
14 #define F_ST 0x02
15 #define F_END 0x03
16
17 #define F_Receive_OK 0x05
18 #define F_Receive_Error 0x06
19 #define F_Overtime 0x09
20
21
22
23
24 uchar UART_Receive;
25 bit ST_Flag;
26 bit ADDR_Flag;
27 bit LEN_Flag;
28 bit Receive_OK_Flag;
29 bit Receive_Error_Flag;
30 bit Receive_Overtime_Flag;
31 bit Button_Flag;
32 bit Send_Flag;
33 bit Send_Overtime_Flag;
34 uchar Temer_Num;
35
36
37 uchar F_LEN;
38 uchar ASCII_Receive_Buf[20];
39 uchar ASCII_Send_Buf[20];
40 uchar HEX_Send_Buf[20];
41 uchar LEN_Data_Buf;
42 uchar UART_Data_Buf;
43
44 void Timer_init(void);
45 void UART_init(void);
46 void Delay_1ms(uint Nms);
47 void Send_Response(uchar Frame);
48 void Send_Array(void);
49 uchar ASCII_To_Hex(uchar bChar);
50 uchar Hex_To_ASCII(uchar bHex);
51 void Send_Hex_To_ASCII(void);
52 bit CheckSum(void);
53 void Get_CheckSum(void);
54
55
C51 COMPILER V8.08 ZHENGGESHI 04/23/2008 10:04:52 PAGE 2
56
57
58
59 void int0() interrupt 0
60 {
61 1 uchar i,j;
62 1 EA=0;
63 1 PButton=1;
64 1 for(j=0;j<10;j++)
65 1 {
66 2 for(i=0;i<250;i++)
67 2 {
68 3 _nop_();
69 3 _nop_();
70 3 _nop_();
71 3 }
72 2 }
73 1 if(!PButton)
74 1 {
75 2 Button_Flag=1;
76 2 }
77 1
78 1 EA=1;
79 1 }
80
81
82
83 void timer0(void) interrupt 1
84 {
85 1
86 1 TH0=0x15;
87 1 TL0=0xa0;
88 1 if(ADDR_Flag)
89 1 {
90 2 TR0=0;
91 2 Receive_Overtime_Flag=1;
92 2 ST_Flag=0;
93 2 ADDR_Flag=0;
94 2 LEN_Flag=0;
95 2 }
96 1 if(Send_Flag)
97 1 {
98 2 if(Temer_Num>10)
99 2 {
100 3 Temer_Num=0;
101 3 Send_Overtime_Flag=1;
102 3 }
103 2 else
104 2 {
105 3 Temer_Num++;
106 3 }
107 2 }
108 1
109 1 }
110
111
112 void UART_Isr() interrupt 4
113 {
114 1 ES=0;
115 1 if(RI)
116 1 {
117 2 RI=0;
C51 COMPILER V8.08 ZHENGGESHI 04/23/2008 10:04:52 PAGE 3
118 2 UART_Data_Buf=SBUF;
119 2 if(ST_Flag)
120 2 {
121 3 if(ADDR_Flag)
122 3 {
123 4 if(LEN_Flag)
124 4 {
125 5 if(F_LEN)
126 5 {
127 6 F_LEN--;
128 6 ASCII_Receive_Buf[LEN_Data_Buf - F_LEN]=UART_Data_Buf;
129 6 }
130 5 else
131 5 {
132 6 if(UART_Data_Buf==F_END)
133 6 {
134 7 Receive_OK_Flag=1;
135 7 TR0=0;
136 7 ST_Flag=0;
137 7 ADDR_Flag=0;
138 7 LEN_Flag=0;
139 7 }
140 6 else
141 6 {
142 7 Receive_Error_Flag=1;
143 7 ST_Flag=0;
144 7 ADDR_Flag=0;
145 7 LEN_Flag=0;
146 7 TR0=0;
147 7 }
148 6 }
149 5 }
150 4 else
151 4 {
152 5 F_LEN=UART_Data_Buf;
153 5 ASCII_Receive_Buf[0]=F_LEN;
154 5 LEN_Data_Buf=F_LEN;
155 5 LEN_Flag=1;
156 5 }
157 4 }
158 3 else
159 3 {
160 4 if(UART_Data_Buf==F_ADDR)
161 4 {
162 5 ADDR_Flag=1;
163 5 TH0=0x15;
164 5 TL0=0xa0;
165 5 TR0=1;
166 5 }
167 4 else
168 4 ST_Flag=0;
169 4 }
170 3
171 3
172 3 }
173 2 else
174 2 {
175 3 if(UART_Data_Buf==F_ST)
176 3 ST_Flag=1;
177 3 }
178 2
179 2
C51 COMPILER V8.08 ZHENGGESHI 04/23/2008 10:04:52 PAGE 4
180 2 }
181 1 ES=1;
182 1 }
183
184
185
186
187
188
189 void UART_Send(uchar Send_Value)
190 {
191 1 TI=0;
192 1 SBUF=Send_Value;
193 1 while(TI==1);
194 1 TI=0;
195 1 }
196
197
198 void main()
199 {
200 1 uchar i=0;
201 1 F_ADDR=0x00;
202 1 IT0=1;
203 1 EX0=1;
204 1
205 1 Timer_init();
206 1 UART_init();
207 1 EA=1;
208 1
209 1 Dis_LedNum(1);
210 1 Dis_LedNum(0);
211 1
212 1
213 1 while(1)
214 1 {
215 2 if(Button_Flag)
216 2 {
217 3 Send_Flag=1;
218 3 TH0=0x15;
219 3 TL0=0xa0;
220 3 TR0=1;
221 3 Temer_Num=0;
222 3
223 3
224 3 HEX_Send_Buf[0]=0x01;
225 3 HEX_Send_Buf[1]=0x45;
226 3 Send_Hex_To_ASCII();
227 3 Send_Array();
228 3
229 3
230 3 Button_Flag=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -