📄 yalibiao.lst
字号:
C51 COMPILER V6.02 YALIBIAO 01/06/2009 17:19:04 PAGE 1
C51 COMPILER V6.02, COMPILATION OF MODULE YALIBIAO
OBJECT MODULE PLACED IN C:\DOCUME~1\ADMINI~1\桌面\压力表2\YALIBIAO.OBJ
COMPILER INVOKED BY: D:\WAVE6000\COMP51\C51.EXE C:\DOCUME~1\ADMINI~1\桌面\压力表2\YALIBIAO.C DB SB OE
stmt level source
1 //#include<reg51.h>
2 #include<NI51REG.h>
3 //#define THISADDR 0x2A
4 #define ISP_WAIT 0x03
5 #define ISP_READ 1
6 #define ISP_WRITE 2
7 #define ISP_ERASE 3
8
9 bit pulse_sign = 0;//pulse level sign
10 bit NewCmd_sign = 1;
11 bit TrStar_sign = 0;//transport start
12 bit De = 0;
13
14 unsigned char TIMH = 0xfd;
15 unsigned char TIML = 0xff;
16
17 unsigned char THISADDR = 0x2A;
18 unsigned char TrCounter = 0;
19 unsigned char TrData[5] = 0;
20 unsigned char AimData[5] = 0;
21 unsigned char mode = 0;
22 unsigned long Delay_num;
23 unsigned int Change_P;
24 unsigned int Aim_P;
25 unsigned int Time_D;
26 unsigned int Now_P;
27 unsigned int Dis_P;
28 unsigned long Time;
29 unsigned int T = 9;
30 unsigned int MINPOS = 0xFB10;
31 unsigned int T2;
32 sbit out = P1^2;
33
34 void pulse() interrupt 1
35 {
36 1 if(pulse_sign)
37 1 {
38 2 pulse_sign = 0;
39 2 out = 0;
40 2 TH0 = 0xc7;
41 2 TL0 = 0x00;
42 2 }
43 1 else
44 1 {
45 2 pulse_sign = 1;
46 2 out = 1;
47 2 TH0 = TIMH;
48 2 TL0 = TIML;
49 2 }
50 1 }
51
52
53 void serial() interrupt 4
54 {
55 1 //unsigned char i;
C51 COMPILER V6.02 YALIBIAO 01/06/2009 17:19:04 PAGE 2
56 1 if(RI)
57 1 {
58 2 RI = 0;
59 2
60 2 if((!TrStar_sign)&&(SBUF == 0x0c))
61 2 {
62 3 TrStar_sign = 1;
63 3 TrCounter = 0;
64 3 }
65 2 else if(TrStar_sign)
66 2 {
67 3 if(TrCounter < 5)
68 3 {
69 4
70 4 TrData[TrCounter] = SBUF;
71 4 TrCounter++;
72 4 }
73 3 else if(SBUF == 0xbb)
74 3 {
75 4 if(TrData[0] == THISADDR)
76 4 {
77 5 AimData[0] = TrData[0];
78 5 AimData[1] = TrData[1];
79 5 AimData[2] = TrData[2];
80 5 AimData[3] = TrData[3];
81 5 AimData[4] = TrData[4];
82 5 NewCmd_sign = 1;
83 5 TrCounter++;
84 5 }
85 4 TrCounter = 0;
86 4 TrStar_sign = 0;
87 4 }
88 3 }
89 2 }
90 1 }
91 unsigned char isp_read(unsigned int addr)
92 {
93 1 unsigned char nop;
94 1 ISP_ADDRH = (addr >> 8);
95 1 ISP_ADDRL = (addr & 0x00ff);
96 1 EA = 0;
97 1 ISP_CONTR = ISP_WAIT;
98 1 ISP_CONTR |= 0x80;
99 1 ISP_CMD = ISP_READ;
100 1 ISP_TRIG = 0x46;
101 1 ISP_TRIG = 0xb9;
102 1 nop = 1;
103 1 ISP_CONTR = 0x00;
104 1 ISP_CMD = 0x0;
105 1 ISP_TRIG = 0x0;
106 1 ISP_ADDRH = 0x0;
107 1 ISP_ADDRL = 0x0;
108 1 EA = 1;
109 1 return ISP_DATA;
110 1 }
111
112 void isp_erase(unsigned int addr)
113 {
114 1 unsigned char nop;
115 1 ISP_ADDRH = (addr >> 8);
116 1 ISP_ADDRL = (addr & 0x00ff);
117 1 EA = 0;
C51 COMPILER V6.02 YALIBIAO 01/06/2009 17:19:04 PAGE 3
118 1 ISP_CONTR = ISP_WAIT;
119 1 ISP_CONTR |= 0x80;
120 1 ISP_CMD = ISP_ERASE;
121 1 ISP_TRIG = 0x46;
122 1 ISP_TRIG = 0xb9;
123 1 nop = 1;
124 1 ISP_CONTR = 0x00;
125 1 ISP_CMD = 0x0;
126 1 ISP_TRIG = 0x0;
127 1 ISP_ADDRH = 0x0;
128 1 ISP_ADDRL = 0x0;
129 1 EA = 1;
130 1 }
131
132 void isp_write(unsigned int addr,unsigned char dat)
133 {
134 1 unsigned char nop;
135 1 ISP_DATA = dat;
136 1 ISP_ADDRH = (addr >> 8);
137 1 ISP_ADDRL = (addr & 0x00ff);
138 1 EA = 0;
139 1 ISP_CONTR = ISP_WAIT;
140 1 ISP_CONTR |= 0x80;
141 1 ISP_CMD = ISP_WRITE;
142 1 ISP_TRIG = 0x46;
143 1 ISP_TRIG = 0xb9;
144 1 nop = 1;//无意义 延时操作
145 1 ISP_CONTR = 0x00;
146 1 ISP_CMD = 0x0;
147 1 ISP_TRIG = 0x0;
148 1 ISP_ADDRH = 0x0;
149 1 ISP_ADDRL = 0x0;
150 1 EA = 1;
151 1 }
152
153
154 void delay(unsigned int kk)
155 {
156 1 unsigned int t1,t2;
157 1 for (t1 = 0;t1<60;t1++)
158 1 {
159 2 for(t2 = 0;t2 < kk;t2++);
160 2 }
161 1 }
162 run()
163 { unsigned int T1;
164 1 if (De)
165 1 {
166 2 for (T1 = Now_P; T1<=Aim_P; ++T1 )
167 2 {
168 3 if(!NewCmd_sign)
169 3 {
170 4 delay(Delay_num);
171 4 T2 = (0xfdff - MINPOS)*5;
172 4 T2 /= 27;
173 4 Change_P = 0xfdff - (T1*T2)/50;
174 4 TIMH = Change_P>>8;
175 4 TIML = Change_P&0x00ff;
176 4 }
177 3 else
178 3 {
179 4 Now_P = T1;
C51 COMPILER V6.02 YALIBIAO 01/06/2009 17:19:04 PAGE 4
180 4 return(0);
181 4 }
182 3
183 3 Now_P = T1;
184 3 }
185 2 }
186 1 else
187 1 {
188 2 for (T1 = Now_P; T1 > Aim_P; --T1 )
189 2 {
190 3 if(!NewCmd_sign)
191 3 {
192 4 delay(Delay_num);
193 4 T2 = (0xfdff - MINPOS)*5;
194 4 T2 /= 27;
195 4 Change_P = 0xfdff - (T1*T2)/50;
196 4 TIMH = Change_P>>8;
197 4 TIML = Change_P&0x00ff;
198 4 }
199 3 else
200 3 {
201 4 Now_P = T1;
202 4 return(0);
203 4 }
204 3 Now_P = T1;
205 3 }
206 2 }
207 1
208 1
209 1 }
210 test_mode()
211 {
212 1 Delay_num = 60;
213 1 while(1)
214 1 {
215 2 if(!NewCmd_sign)
216 2 {
217 3 Aim_P = (De)?0x10E:0x00;
218 3 Now_P = (De)?0x00:0x10E;
219 3 run();
220 3 De = ~De;
221 3 }
222 2 else
223 2 return(0);
224 2
225 2 }
226 1
227 1 }
228 shake_mode()
229 {
230 1 Delay_num = 5;
231 1 while(1)
232 1 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -