📄 common.lst
字号:
C51 COMPILER V8.09 COMMON 09/23/2008 08:34:17 PAGE 1
C51 COMPILER V8.09, COMPILATION OF MODULE COMMON
OBJECT MODULE PLACED IN common.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE src\common.c LARGE OPTIMIZE(7,SPEED) BROWSE DEBUG OBJECTEXTEND PRINT(.\comm
-on.lst) OBJECT(common.obj)
line level source
1 #include <reg52.h>
2 #include "inc/EXT_PUBLIC_VARIABLE.H"
3 #include "inc/CPUIO_DEF.H"
4 #include "inc/timer_pwm.h"
5 #include "inc/candul.H"
6
7
8 void Delay(uchar timer)
9 {
10 1 uchar i;;
11 1 for(;timer>0;timer--)
12 1 {
13 2 for(i=0;i<250;i++);
14 2 }
15 1 }
16 /**************************************************************************************
17 ;;函数原型: void Mot(uchar ucWay,uchar ucSpeed)
18 ;;函数功能: 电机底层驱动程序(电机正转,电机反转,电机停止转动,电机转速,)
19 ;;函数输入: ucWay,POSITIVE电机正转,NEGATIVE电机反转,STOPTIVE电机停止. ucSpeed ,电机转速
20 ;; SP100-SP10(10-1)
21 ;;函数输出: 无
22 ;;函数返回值: 无
23 ;;被调用函数: 任意
24 ***************************************************************************************/
25 uchar Mot(uchar ucWay,uchar ucSpeed)
26 {
27 1 switch (ucWay)
28 1 {
29 2 case STOPTIVE:
30 2 MOTONOFF = 1;
31 2 break;
32 2 case POSITIVE:
33 2 PwmTime0_int(500,ucSpeed);//1khz的PWM信号
34 2 MOTDIR = 0;
35 2 MOTONOFF = 0;
36 2 break;
37 2 case NEGATIVE:
38 2 PwmTime0_int(500,ucSpeed);
39 2 MOTDIR = 1;
40 2 MOTONOFF = 0;
41 2 break;
42 2 default:
43 2 return (FAILED);
44 2 }
45 1 return (SUCCEED);
46 1
47 1 }
48
49 /**************************************************************************************
50 ;;函数原型: void MotControl()
51 ;;函数功能: 电机控制程序
52 ;;函数输入: 无
53 ;;函数输出: 无
54 ;;函数返回值: 无
C51 COMPILER V8.09 COMMON 09/23/2008 08:34:17 PAGE 2
55 ;;被调用函数: main
56 ***************************************************************************************/
57 void MotControl(void)
58 { uchar ucTxdBuf[8];
59 1 if( bitSysAllowWork )
60 1 {
61 2 if((StopCar.sta == START)||(StopCar.sta == RUN))
62 2 {
63 3 switch( StopCar.cmd )
64 3 {
65 4 case MS_REST_STOP_CAR:
66 4 if(HUOER_REST)//判断是否在复位霍尔位置
67 4 {
68 5 if(StopCar.sta == START)//首次执行
69 5 {
70 6 StopCar.sta = RUN;
71 6 Mot(NEGATIVE,P10WM); //执行复位操作电机反转
72 6 bitRstFlg = 1; //标记复位操作电机启动
73 6 TimerNo[7] = CVERTIME;//启动超时定时器
74 6 fTimer &= ~(0x01<<7);
75 6 }
76 5 else
77 5 {
78 6 if(fTimer&(0x01<<7))//判断超时
79 6 {
80 7 ucTxdBuf[0] = 0x03;//00000011回复相应结果(电机故障或者复位霍尔故障)
81 7 CAN_TXD( MADDRESS,SM_REST_STOP_CAR,UN_ACK,1,ucTxdBuf );
82 7 StopCar.sta = STOP;
83 7 }
84 6 }
85 5 }
86 4 else
87 4 {
88 5 ucTxdBuf[0] = 0;//回复复位成功
89 5 CAN_TXD( MADDRESS,SM_REST_STOP_CAR,UN_ACK,1,ucTxdBuf );
90 5 StopCar.sta = STOP;
91 5 }
92 4 break;
93 4 case MS_STOP_CAR50_SLOW:
94 4 case MS_STOP_CAR50_FAST:
95 4 if(HUOER_MIDO)//判断中卫霍尔位置
96 4 {
97 5 if(StopCar.sta == START)//首次执行
98 5 {
99 6 if( HUOER_REST )//判断不在复位霍尔位置
100 6 {
101 7 Mot(NEGATIVE,P10WM); //执行复位操作电机快反转
102 7 bitRstFlg = 1; //标记复位操作电机启动
103 7 //电机慢速反转复位
104 7 }
105 6 else //判断在复位霍尔位置
106 6 {
107 7 if(StopCar.cmd == MS_STOP_CAR50_FAST)
108 7 Mot(POSITIVE,P10WM); //执行电机快正转
109 7 else
110 7 Mot(POSITIVE,P7WM); //执行电机快正转
111 7 bitMidoFlg = 1; //标记中位操作电机启动
112 7 }
113 6 StopCar.sta = RUN;
114 6 TimerNo[7] = CVERTIME;//启动超时定时器
115 6 fTimer &= ~(0x01<<7);
116 6 //启动超时定时器
C51 COMPILER V8.09 COMMON 09/23/2008 08:34:17 PAGE 3
117 6 }
118 5 else
119 5 {
120 6 if(!HUOER_REST)//在复位位置
121 6 {//电机调整为正传
122 7 if(StopCar.cmd == MS_STOP_CAR50_FAST)
123 7 Mot(POSITIVE,P10WM); //执行电机快正转
124 7 else
125 7 Mot(POSITIVE,P7WM); //执行电机快正转
126 7 bitMidoFlg = 1; //标记中位操作电机启动
127 7 }
128 6 if(fTimer&(0x01<<7))//判断超时
129 6 {
130 7
131 7 ucTxdBuf[0] = 0x05;//00000101回复相应结果(电机故障或者中卫霍尔故障)
132 7 CAN_TXD( MADDRESS,StopCar.cmd,UN_ACK,1,ucTxdBuf );
133 7 //刹车强制复位
134 7 StopCar.sta = STOP;
135 7 }
136 6 }
137 5 }
138 4 else
139 4 {
140 5 if( !bitRstFlg )
141 5 {
142 6 ucTxdBuf[0] = 0;//回复成功
143 6 CAN_TXD( MADDRESS,StopCar.cmd,UN_ACK,1,ucTxdBuf );
144 6 StopCar.sta = STOP;
145 6 }
146 5 }
147 4 break;
148 4 case MS_STOP_CAR100_SLOW:
149 4 case MS_STOP_CAR100_FAST:
150 4 if(HUOER_LAST)//判断结尾霍尔位置
151 4 {
152 5 if(StopCar.sta == START)//首次执行
153 5 {
154 6 //电机慢速正转
155 6 if(StopCar.cmd == MS_STOP_CAR100_FAST)
156 6 Mot(POSITIVE,P10WM); //执行电机快正转
157 6 else
158 6 Mot(POSITIVE,P7WM); //执行电机快正转
159 6 bitLastFlg = 1; //标记结位操作电机启动
160 6 StopCar.sta = RUN;
161 6 //启动超时定时器
162 6 TimerNo[7] = CVERTIME;//启动超时定时器
163 6 fTimer &= ~(0x01<<7);
164 6 }
165 5 }
166 4 else
167 4 {
168 5 StopCar.sta = STOP;
169 5 if(fTimer&(0x01<<7))//判断超时
170 5 {
171 6 ucTxdBuf[0] = 0x09;//00001001回复相应结果(电机故障或者中卫霍尔故障)
172 6 CAN_TXD( MADDRESS,StopCar.cmd,UN_ACK,1,ucTxdBuf );
173 6 //刹车强制复位
174 6 }
175 5 else
176 5 {
177 6 ucTxdBuf[0] = 0;//回复成功
178 6 CAN_TXD( MADDRESS,StopCar.cmd,UN_ACK,1,ucTxdBuf );
C51 COMPILER V8.09 COMMON 09/23/2008 08:34:17 PAGE 4
179 6 StopCar.sta = STOP;
180 6 }
181 5 }
182 4
183 4 break;
184 4 default:
185 4 break;
186 4 }
187 3 }
188 2 }
189 1 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -