📄 laststop.lst
字号:
C51 COMPILER V8.02 LASTSTOP 09/05/2007 15:15:53 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE LASTSTOP
OBJECT MODULE PLACED IN laststop.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE laststop.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /////////////////////////////////////
2 // COPYRIGHT RERVERED BY BUANDXIA //
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 sbit LASTS = P1^4;
26 sbit LASTB = P1^5;
27
28 //定义全局变量
29 ulong xdata data0[15];
30 ulong avge=0,avge0=0;
31 uchar time1=0,time2=0,counter1=0,counter2=0;
32 uchar a,bb,c,d,e,f,g,right,left;
33 uchar forward=0,black=0,keykey=0,backward=0,xianshi=1;
34 uchar T0_OF=0,min=0,sec=0; //T0_OF时T0溢出次数 ,t_n=0
35 uchar stage_sec=0,stage_clk_flag=0; //stage_clk_flag为1是阶段计时标志位.不用stage_min
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 = 0x02; //使定时器1,0优先级高
53 1 EIE1 = 0x08; //使能PCA0中断
54 1 EIE2 = 0x20; //使能外部键盘中断
55 1 EIP2 = 0x20; //使外部键盘优先级高
C51 COMPILER V8.02 LASTSTOP 09/05/2007 15:15:53 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 void speedchange(uchar duty,uchar i)
73 {
74 1 if(i==0) PCA0CPH0 =(uchar)((100-duty)*2.56); //把duty值转换,赋值给控制占空比的寄存器
75 1 if(i==1) PCA0CPH1=(uchar)((100-duty)*2.56);
76 1 }
77 ulong pingjun (void)
78 { uchar i;
79 1 ulong avgad1=0,avgad=0,state=0;
80 1 state=AD_IN();
81 1 for(i=0;i<15;i++)
82 1 {
83 2 data0[i]=state;
84 2 avgad+=data0[i];
85 2 }
86 1 avgad=avgad/15;
87 1 for(i=0;i<15;i++)
88 1 {
89 2 data0[i]=state;
90 2 avgad1+=data0[i];
91 2 }
92 1 avgad1=avgad1/15;
93 1 avge=(avgad+avgad1)/4;
94 1 return(avge);
95 1 }
96 void stage_clk_start()
97 {
98 1 CH452_Write(CH452_TWINKLE);
99 1 DELAY_1US;DELAY_1US;DELAY_1US;DELAY_1US;DELAY_1US;
100 1 stage_clk_flag=1;
101 1 stage_sec=0;
102 1 CH452_Write(CH452_DIG4);
103 1 CH452_Write(CH452_DIG5 | 16);
104 1 }
105 /****精确秒延时****/
106 void delay_s(uchar n)
107 { unsigned char i,j;
108 1 for(i=0;i<200;i++)
109 1 for(j=0;j<25*n;j++)
110 1 {
111 2 DELAY_10US;
112 2 DELAY_10US;
113 2 DELAY_10US;
114 2 DELAY_10US;
115 2 DELAY_10US;
116 2 DELAY_10US;
117 2 DELAY_10US;
C51 COMPILER V8.02 LASTSTOP 09/05/2007 15:15:53 PAGE 3
118 2 DELAY_10US;
119 2 DELAY_10US;
120 2 DELAY_10US; //100us
121 2 }
122 1
123 1
124 1 }
125 void judgement (uchar modi,uchar modi1,uchar dem)
126 { uchar i;
127 1 if((a&&bb==0&&c==0)||(a&&bb&&c==0))
128 1 { left=1;
129 2 right=0;
130 2 speedchange(modi1,1);
131 2 speedchange(modi,0);
132 2 delayms(dem);
133 2 }
134 1 else if((a==0&&bb==0&&c)||(a==0&&bb&&c))
135 1 {
136 2 left=0;
137 2 right=1;
138 2 speedchange(modi1,0);
139 2 speedchange(modi,1);
140 2 delayms(dem);
141 2 }
142 1 else if(a==0&&bb&&c==0)
143 1 {
144 2 left=0;
145 2 right=0;
146 2 speedchange(modi,0);
147 2 speedchange(modi,1);
148 2 delayms(dem);
149 2 }
150 1 else if(a&&bb&&c) //停止&&(d||e)
151 1 {
152 2
153 2 START=0;
154 2 LASTS=1;
155 2 forward=0;
156 2 stage_clk_flag=0;//stage_clk_stop();显示平衡后前进的时间
157 2 CH452_Write(CH452_TWINKLE | 0x30);
158 2 for(i=5;i>0;i--)
159 2 {
160 3 CH452_Write(CH452_DIG7 | i);
161 3 SPOKER=1;
162 3 delay_s(1);
163 3 SPOKER=0;
164 3 delay_s(1);
165 3 }
166 2 CH452_Write(CH452_DIG7);
167 2 stage_clk_start();
168 2 backward=1;
169 2 }
170 1 else //if (a==0&&bb==0&&c==0)
171 1 {
172 2 if(left==1)
173 2 {
174 3 speedchange(modi1,0);
175 3 speedchange(modi,1); }
176 2 else if(right==1)
177 2 {
178 3 speedchange(modi,0);
179 3 speedchange(modi1,1);}
C51 COMPILER V8.02 LASTSTOP 09/05/2007 15:15:53 PAGE 4
180 2 else
181 2 {
182 3 speedchange(modi,0);
183 3 speedchange(modi,1);}
184 2 delayms(dem);
185 2 }
186 1 }
187 void judgementback (uchar modi,uchar modi1,uchar dem)
188 {
189 1 if(f==1&&g==0)
190 1 {
191 2 speedchange(modi1,1);
192 2 speedchange(modi,0);
193 2
194 2 }
195 1 else if(f==0&&g==1)
196 1 {
197 2 speedchange(modi,1);
198 2 speedchange(modi1,0);
199 2
200 2 }
201 1 else //if(f==0&&g==0)
202 1 {
203 2 speedchange(modi,1);
204 2 speedchange(modi,0);
205 2 }
206 1 if(stage_sec>29)
207 1 {
208 2 START=0;
209 2 LASTS=1;
210 2 stage_clk_flag=0;//stage_clk_stop();
211 2 CH452_Write(CH452_TWINKLE | 0x30);
212 2 TR0=0;
213 2 }
214 1 delayms(dem);
215 1 }
216
217
218 void main(void)
219 {
220 1 uchar chazhi=4;
221 1 uchar chazhi1;
222 1 Init_Device();
223 1 CH452_Init(); /* CH452初始化 */
224 1 LEDG=0;
225 1 SPOKER=0;
226 1 IN0=1;
227 1 IN1=1;
228 1 IN2=1;
229 1 //IN3=1;
230 1 //IN4=1;
231 1 IN5=1;
232 1 IN6=1;
233 1 START=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -