?? timerauto.lst
字號:
C51 COMPILER V8.02 TIMERAUTO 09/05/2007 11:19:18 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE TIMERAUTO
OBJECT MODULE PLACED IN timerauto.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE timerauto.c BROWSE DEBUG OBJECTEXTEND SRC(.\timerauto.SRC)
line level source
1 /////////////////////////////////////
2 // Generated Initialization File //
3 /////////////////////////////////////
4
5 #include "c8051F020.h"
6 #include "intrins.h"
7 #include "CH452CMD.H" // 定義常用命令碼及外部子程序
8 #include "pin.h"
9 #include "math.h"
10 #include "key_display.h"
11
12
13 //定義端口
14 sbit LEDG = P3^4;
15 sbit BACK = P0^4;
16 sbit START = P0^5;
17 sbit SPOKER = P0^6;
18 sbit IN0 = P1^1;//左
19 sbit IN1 = P1^3;//中
20 sbit IN2 = P1^0;//右
21 //sbit IN3 = P1^5;//斜右
22 //sbit IN4 = P1^2;//斜左
23 sbit IN5 = P1^2;//正面左
24 sbit IN6 = P1^6;//正面右
25 ulong xdata data0[15];
26 ulong avge=0,avge0=0;
27 uchar time1=0,time2=0,counter1=0,counter2=0;
28 uchar a,bb,c,d,e,f,g,right,left;
29 uchar forward=0,black=0,keykey=0,backward=0,xianshi=1;
30
31
32 unsigned char T0_OF=0,min=0,sec=0; //T0_OF時T0溢出次數 ,t_n=0
33 unsigned char stage_sec=0,stage_clk_flag=0; //stage_clk_flag為1是階段計時標志位.不用stage_min
34 //unsigned char stage_sec_record[];
35
36 // Peripheral specific initialization functions,
37 // Called from the Init_Device() function
38
39
40 void Port_IO_Init()
41 {
42 1 // P0.0 - CEX0 (PCA), Open-Drain, Digital
43 1 // P0.1 - CEX1 (PCA), Open-Drain, Digital
44 1 XBR0 = 0x10; /*CEX0-->P0.0,CEX1-->P0.1*/
45 1 XBR2 = 0x40;
46 1 }
47
48 void Interrupts_Init()
49 {
50 1
51 1 IE = 0x0A; //使能定時器1中斷//使能定時器0中斷
52 1 IP = 0x0A; //使定時器1,0優先級高
53 1 EIE1 = 0x08; //使能PCA0中斷
54 1 EIE2 = 0x20; //使能外部鍵盤中斷
55 1 EIP2 = 0x20; //使外部鍵盤優先級高
C51 COMPILER V8.02 TIMERAUTO 09/05/2007 11:19:18 PAGE 2
56 1
57 1 }
58
59 // Initialization function for device,
60 // Call Init_Device() from your main program
61 void Init_Device(void)
62 {
63 1 Reset_Sources_Init();
64 1 ADC_Init();
65 1 PCA_Init();
66 1 Timer_Init();
67 1 Oscillator_Init();
68 1 Voltage_Reference_Init();
69 1 Port_IO_Init();
70 1 Interrupts_Init();
71 1 }
72
73
74 void speedchange(uchar duty,uchar i)
75 {
76 1 if(i==0) PCA0CPH0 =(uchar)((100-duty)*2.56); //把duty值轉換,賦值給控制占空比的寄存器
77 1 if(i==1) PCA0CPH1=(uchar)((100-duty)*2.56);
78 1
79 1 }
80 ulong pingjun (void)
81 { uchar i;
82 1 ulong avgad1=0,avgad=0,state=0;
83 1 state=AD_IN();
84 1 for(i=0;i<15;i++)
85 1 {
86 2
87 2 data0[i]=state;
88 2 avgad+=data0[i];
89 2 //delayms(10);
90 2 }
91 1 avgad=avgad/15;
92 1 for(i=0;i<15;i++)
93 1 {
94 2
95 2 data0[i]=state;
96 2 avgad1+=data0[i];
97 2 //delayms(10);
98 2 }
99 1 avgad1=avgad1/15;
100 1 avge=(avgad+avgad1)/4;
101 1
102 1 //CH452_Write(CH452_DIG1|bb);
103 1 //CH452_Write(CH452_DIG0|c);
104 1 return(avge);
105 1 }
106
107
108
109 void stage_clk_start()
110 {
111 1
112 1 //CH452_Write(CH452_TWINKLE);
113 1 DELAY_1US;DELAY_1US;DELAY_1US;DELAY_1US;DELAY_1US;
114 1 stage_clk_flag=1;
115 1 stage_sec=0;
116 1 CH452_Write(CH452_DIG4);
117 1 CH452_Write(CH452_DIG5 | 16);
C51 COMPILER V8.02 TIMERAUTO 09/05/2007 11:19:18 PAGE 3
118 1 }
119 void stage_clk_stop()
120 {
121 1 stage_clk_flag=0;
122 1 //stage_sec_record[ t_n ]=stage_sec;
123 1 //CH452_Write(CH452_TWINKLE | 0x30);
124 1 //t_n ++;
125 1 }
126 /****精確秒延時****/
127
128 void delay_s(uchar n)
129 {
130 1 #pragma asm
131 1 //USING 0
132 1 n_:
133 1 MOV R2,#50 //系統時鐘如果分別是2M,4M,8M,16M
134 1 //則R2值分別為 25,50,100,200
135 1 R2_:
136 1 MOV R1,#40
137 1 R1_:
138 1 MOV R0,#50
139 1 R0_:
140 1 NOP
141 1 NOP
142 1 NOP
143 1 NOP
144 1
145 1 NOP
146 1 NOP
147 1 NOP
148 1 NOP
149 1
150 1 NOP
151 1 NOP
152 1 NOP
153 1 NOP
154 1
155 1 NOP
156 1 NOP
157 1 NOP
158 1 NOP
159 1
160 1 NOP
161 1 NOP
162 1 //NOP
163 1 //NOP
164 1 DJNZ R0,R0_
165 1 DJNZ R1,R1_
166 1 DJNZ R2,R2_
167 1 DJNZ n?746,n_
168 1 #pragma endasm
169 1 }
*** WARNING C280 IN LINE 128 OF TIMERAUTO.C: 'n': unreferenced local variable
170 /*void confirm(void)
171 //{
172 // uchar i;
173 for(i=5;i>0;i--)
174 {
175 CH452_Write(CH452_DIG7 | i);
176 SPOKER=1;
177 delay_s(1);
178 SPOKER=0;
C51 COMPILER V8.02 TIMERAUTO 09/05/2007 11:19:18 PAGE 4
179 delay_s(1);
180 }
181 CH452_Write(CH452_DIG7);
182
183 //}*/
184 void judgement (uchar modi,uchar modi1,uchar dem)
185 { uchar i;
186 1 if((a&&bb==0&&c==0)||(a&&bb&&c==0))
187 1 { left=1;
188 2 right=0;
189 2 speedchange(modi1,1);
190 2 speedchange(modi,0);
191 2 delayms(dem);
192 2 }
193 1 else if((a==0&&bb==0&&c)||(a==0&&bb&&c))
194 1 {
195 2 left=0;
196 2 right=1;
197 2 speedchange(modi1,0);
198 2 speedchange(modi,1);
199 2 delayms(dem);
200 2 }
201 1 else if(a==0&&bb&&c==0)
202 1 {
203 2 left=0;
204 2 right=0;
205 2 speedchange(modi,0);
206 2 speedchange(modi,1);
207 2 delayms(dem);
208 2 }
209 1 else if(a&&bb&&c) //停止&&(d||e)
210 1 {
211 2
212 2 START=0;
213 2 forward=0;
214 2 stage_clk_stop();//顯示平衡后前進的時間
215 2 for(i=5;i>0;i--)
216 2 {
217 3 CH452_Write(CH452_DIG7 | i);
218 3 SPOKER=1;
219 3 delay_s(1);
220 3 SPOKER=0;
221 3 delay_s(1);
222 3 }
223 2 CH452_Write(CH452_DIG7);
224 2 stage_clk_start();
225 2 backward=1;
226 2 }
227 1 else //if (a==0&&bb==0&&c==0)
228 1 {
229 2 if(left==1)
230 2 {
231 3 speedchange(modi1,0);
232 3 speedchange(modi,1); }
233 2 else if(right==1)
234 2 {
235 3 speedchange(modi,0);
236 3 speedchange(modi1,1);}
237 2 else
238 2 {
239 3 speedchange(modi,0);
240 3 speedchange(modi,1);}
C51 COMPILER V8.02 TIMERAUTO 09/05/2007 11:19:18 PAGE 5
241 2 delayms(dem);
242 2 }
243 1
244 1 }
245 void judgementback (uchar modi,uchar modi1,uchar dem)
246 {
247 1 if(f==1&&g==0)
248 1 {
249 2 speedchange(modi1,1);
250 2 speedchange(modi,0);
251 2
252 2 }
253 1 else if(f==0&&g==1)
254 1 {
255 2 speedchange(modi,1);
256 2 speedchange(modi1,0);
257 2
258 2 }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -