📄 smartcar_9.lst
字号:
C51 COMPILER V8.02 SMARTCAR_9 05/09/2008 06:31:15 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE SMARTCAR_9
OBJECT MODULE PLACED IN smartcar_9.OBJ
COMPILER INVOKED BY: D:\keil uVersion 3\C51\BIN\C51.EXE smartcar_9.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #define temp P0 //光电管接入口
3 #define middleline 0xe7 //光电检测中间线
4 #define startline 0x24 //起跑线
5 #define outline 0xff //检测不到黑线
6 unsigned char num0=0; //计数初值
7 unsigned char round=14; //舵机参数初值,设置为中间位置
8 unsigned char speedup=8; //电机参数初值,设置为最大速度
9 unsigned char num1=0; //计数初值
10 sbit servopwm=P2^0; //舵机PWM输出口
11 sbit motorpwm1=P2^6; //电机PWM1输出口
12 sbit motorpwm2=P2^7; //电机PWM2输出口
13 void init() //中断初始化
14 {
15 1 TMOD=0x11; //定时器方式1
16 1 EA=1; //开总中断
17 1 ET0=1; //允许定时器0中断
18 1 ET1=1; //允许定时器1中断
19 1 TH0=(65536-100)/256; //装入初值,高八位取模,100在定时器中12M下表示100us
20 1 TL0=(65536-100)%256; //装入初值,低八位取余
21 1 TH1=(65536-50)/256;
22 1 TL1=(65536-50)%256;
23 1 TR0=1; //启动中断
24 1 TR1=1; //启动中断
25 1 servopwm=1; //舵机初始为高电平
26 1 motorpwm1=0; //IN1初始为低电平
27 1 motorpwm2=1; //IN2初始为高电平
28 1 }
29 void timer0() interrupt 1 //定时器0方式1
30 {
31 1 TH0=(65536-100)/256; //读初值
32 1 TL0=(65536-100)%256;
33 1 num0++;
34 1 if(num0==round) //高电平持续时间为round
35 1 servopwm=0;
36 1 if(num0==200) //舵机周期为10ms
37 1 {
38 2 servopwm=1;
39 2 num0=0;
40 2 }
41 1 }
42 void timer1() interrupt 3 //定时器1方式3
43 {
44 1 TH1=(65536-50)/256;
45 1 TL1=(65536-50)%256;
46 1 num1++;
47 1 if(num1==speedup)
48 1 {
49 2 motorpwm1=1;
50 2 motorpwm2=0;
51 2 }
52 1 if(num1==100) //电机周期为1ms
53 1 {
54 2 motorpwm1=0;
55 2 motorpwm2=1;
C51 COMPILER V8.02 SMARTCAR_9 05/09/2008 06:31:15 PAGE 2
56 2 num1=0;
57 2 }
58 1 }
59 void main() //主函数
60 {
61 1 init(); //初始化
62 1 while(1)
63 1 {
64 2 if(temp==0xe7) //检测为中间线
65 2 {
66 3 round=14;
67 3 speedup=8;
68 3 }
69 2
70 2 else
71 2 {
72 3 switch(temp)
73 3 {
74 4 case 0xf7:{round=11;speedup=12;};break; //P0:11110111
75 4 case 0xf3:{round=11;speedup=16;};break; //P0:11110011
76 4 case 0xfb:{round=10;speedup=20;};break; //P0:11111011
77 4 case 0xf9:{round=9;speedup=24;};break; //P0:11111001
78 4 case 0xfd:{round=8;speedup=28;};break; //P0:11111101
79 4 case 0xfc:{round=7;speedup=36;};break; //P0:11111100
80 4 case 0xfe:{round=6;speedup=55;};break; //P0:11111110
81 4 case 0x7f:{round=19;speedup=55;};break; //P0:01111111
82 4 case 0x3f:{round=17;speedup=36;};break; //P0:00111111
83 4 case 0xbf:{round=16;speedup=28;};break; //P0:10111111
84 4 case 0x9f:{round=15;speedup=24;};break; //P0:10011111
85 4 case 0xdf:{round=14;speedup=20;};break; //P0:11011111
86 4 case 0xcf:{round=13;speedup=16;};break; //P0:11001111
87 4 case 0xef:{round=13;speedup=12;};break; //P0:11101111
88 4 default: break;
89 4 }
90 3 }
91 2 }
92 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 270 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 ----
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 + -