📄 main.lst
字号:
C51 COMPILER V8.02 MAIN 09/05/2009 06:33:51 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <c8051f020.h>
2
3 #define uint8 unsigned char
4 #define uint16 unsigned int
5
6 #define FORWORD 0XC0
7 #define BACK 0XE0
8 #define STOP 0X00
9
10
11 void DELAY(uint16 time)//控制电机的延时 ,1为1.9us
12 {
13 1 while(time--);
14 1 }
15
16 void Init_PORT(void)
17 {
18 1 XBR0=0X06;
19 1 XBR2=0X40;
20 1 //P0MDOUT=0XFF;
21 1 //P0=0;
22 1
23 1
24 1
25 1 }
26
27
28
29 void Init_Spi(void)
30 {
31 1 SPI0CN=0X03;
32 1 SPI0CFG=0Xc7;
33 1 SPI0CKR=199;
34 1 }
35
36 void Write_spi(uint8 DATA)
37 {
38 1 while(TXBSY);
39 1 //CS=0;
40 1 SPI0DAT=DATA;
41 1 //CS=1;
42 1 }
43
44
45
46
47
48
49 //----------------------左电机初始化------------------//
50 void Init_Ch1Duty(uint8 duty) //7f为50%
51 {
52 1 Write_spi(0x53);
53 1 //DELAY(3000);
54 1
55 1 DELAY(200);
C51 COMPILER V8.02 MAIN 09/05/2009 06:33:51 PAGE 2
56 1 Write_spi(duty);
57 1 //DELAY(3000);
58 1 DELAY(200);
59 1 }
60
61
62 void Init_Ch1Mode(uint8 NUM)
63 {
64 1 Write_spi(0x50);
65 1 //DELAY(3000);
66 1 DELAY(200);
67 1 Write_spi(NUM);
68 1 //DELAY(3000);
69 1 DELAY(200);
70 1 }
71
72
73 //----------------------右电机初始化--------------------//
74 void Init_Ch2Duty(uint8 duty)
75 {
76 1 Write_spi(0x57);
77 1 //DELAY(3000);
78 1 DELAY(200);
79 1 Write_spi(duty);
80 1 //DELAY(3000);
81 1 DELAY(200);
82 1 }
83
84
85 void Init_Ch2Mode(uint8 NUM)
86 {
87 1 Write_spi(0x54);
88 1 //DELAY(3000);
89 1 DELAY(200);
90 1 Write_spi(NUM);
91 1 //DELAY(3000);
92 1 DELAY(200);
93 1 }
94
95
96 //----------------左电机状态控制-----------------------//
97 void Ch1_Forword(void)
98 {
99 1 Init_Ch1Duty(0xee);
100 1 DELAY(5000);
101 1 Init_Ch1Mode(FORWORD);
102 1 DELAY(5000);
103 1 }
104
105
106 void Ch1_Back(void)
107 {
108 1 Init_Ch1Duty(0xee);
109 1 DELAY(5000);
110 1 Init_Ch1Mode(BACK);
111 1 DELAY(5000);
112 1 }
113
114 void Ch1_Stop(void)
115 {
116 1 Init_Ch1Duty(0x00);
117 1 DELAY(5000);
C51 COMPILER V8.02 MAIN 09/05/2009 06:33:51 PAGE 3
118 1 Init_Ch1Mode(STOP);
119 1 DELAY(5000);
120 1 }
121
122
123
124 //-------------右电机状态控制--------------------------//
125 void Ch2_Forword(void)
126 {
127 1 Init_Ch2Duty(0xee);
128 1 DELAY(5000);
129 1 Init_Ch2Mode(FORWORD);
130 1 DELAY(5000);
131 1 }
132
133
134 void Ch2_Back(void)
135 {
136 1 Init_Ch2Duty(0xde);
137 1 DELAY(5000);
138 1 Init_Ch2Mode(BACK);
139 1 DELAY(5000);
140 1 }
141
142
143 void Ch2_Stop(void)
144 {
145 1 Init_Ch2Duty(0x00);
146 1 DELAY(5000);
147 1 Init_Ch2Mode(STOP);
148 1 DELAY(5000);
149 1 }
150
151
152 void Init_SYSCLK(void)
153 {
154 1 uint8 i;
155 1 OSCXCN = 0X67;//开始外部22.1184M晶振
156 1 for(i = 0;i < 128;i++); //等待外部起振
157 1 while(!(OSCXCN & 0X80)); //查询标志位
158 1 OSCICN = 0X88;//用外部晶振,并使能始终丢
159 1 }
160
161
162
163
164 //-----------------主函数---------------------------------//
165 void main(void)
166 {
167 1 WDTCN = 0xde;
168 1 WDTCN = 0xad;//关闭看门狗
169 1
170 1 Init_SYSCLK();
171 1 Init_PORT();
172 1
173 1
174 1 DELAY(27);//延时60us
175 1 Init_Spi();
176 1 //Init_Ch1Duty(0xEE);
177 1 //DELAY(2000);
178 1 // DELAY(10);//延时60us
179 1 //Init_Ch1Mode(BACK);
C51 COMPILER V8.02 MAIN 09/05/2009 06:33:51 PAGE 4
180 1
181 1
182 1 //DELAY(1000);
183 1 Ch2_Forword();
184 1 // DELAY(10000);
185 1 //DELAY(1000);
186 1 Ch1_Forword();
187 1 //EnableInterrupts;
188 1
189 1 while(1)
190 1 {
191 2 // Ch2_Forword();
192 2 // DELAY(15000);
193 2 //DELAY(1000);
194 2 //Ch1_Forword();
195 2 /*P0=~P0;
196 2 DELAY(1);*/
197 2 //DELAY(15);
198 2 } /* wait forever */
199 1 /* please make sure that you never leave this function */
200 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 266 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -