📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 12/04/2005 13:11:26 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #include "absacc.h"
3
4 //定义每分钟的最大和最小的转速
5 #define max_speed 240
6 #define min_speed 20
7 //按键对应的值
8 #define START 0xFE
9 #define STOP 0xFD
10 #define TURN 0xFC
11 #define UP 0xFB
12 #define DOWN 0xFA
13 //电机用变量和常量
14 int index_speed=100;
15 int time_inteval=0;
16 unsigned int current_times=0;
17 char current_step=0;
18 char code motor_step[]={0x05,0x07,0x06,0x0e,0x0a,0x0b,0x09,0x0d};
19 //================================================================
20 //================================================================
21 unsigned char method=STOP;//按键参数
22 unsigned char expect_speed;
23 bit dir=0;//方向 0为顺时针 1为逆逆时针
24 //================================================================
25 //=================================================================
26 main()
27 {
28 1 expect_speed=index_speed;
29 1 time_inteval=60000/8;
30 1 time_inteval=time_inteval/index_speed;
31 1 EA=1;
32 1 ET0=1;
33 1 TMOD=0x01;//定时器0工作在方式1
34 1 //设置定时器0的参数
35 1 TH0=0xFC;
36 1 TL0=0x17;
37 1 TR0=0;
38 1 //开启外部中断
39 1 EX0=1;
40 1 IT0=1; //设置为低电平触发
41 1 P2=0xff;
42 1 P1=motor_step[current_step];
43 1 while(1)
44 1 {
45 2 };
46 1 }
47
48 void timeon() interrupt 1
49 {
50 1 TH0=0xFC;//重新载入频率
51 1 TL0=0x17;
52 1 if (current_times<time_inteval)
53 1 current_times++;
54 1 else
55 1 {
C51 COMPILER V7.50 MAIN 12/04/2005 13:11:26 PAGE 2
56 2 if(dir==0)
57 2 {
58 3 if(current_step==0)current_step=7;
59 3 else current_step--;
60 3 }
61 2 else if(dir==1)
62 2 {
63 3 if(current_step==7)current_step=0;
64 3 else current_step++;
65 3 }
66 2 P1=motor_step[current_step];
67 2 current_times=0;
68 2 }
69 1 }
70
71
72 void intter() interrupt 0
73 {
74 1 method=P2;//扫描端口P2的值
75 1 if(method==TURN)
76 1 {
77 2 dir=~dir;
78 2 }
79 1 //加速设置
80 1 else if(method==UP)
81 1 {
82 2 if(expect_speed<=(max_speed-20))
83 2 {
84 3 expect_speed=expect_speed+20;
85 3 time_inteval=60000/8;
86 3 time_inteval=time_inteval/expect_speed;
87 3 }
88 2 }
89 1 //减速设置
90 1 else if(method==DOWN)
91 1 {
92 2 if(expect_speed>=(min_speed+20))
93 2 {
94 3 expect_speed=expect_speed-20;
95 3 time_inteval=60000/8;
96 3 time_inteval=time_inteval/expect_speed;
97 3 }
98 2 }
99 1 //停止中断
100 1 else if(method==STOP)//不是STOP键,则启动时钟中断
101 1 TR0=0;
102 1 //启动中断
103 1 else if(method==START)
104 1 {
105 2 current_step=0;//重新初始化初值
106 2 current_times=0;
107 2 time_inteval=60000/8;
108 2 time_inteval=time_inteval/index_speed;
109 2 expect_speed=index_speed;
110 2 TR0=1;
111 2 }
112 1
113 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 335 ----
C51 COMPILER V7.50 MAIN 12/04/2005 13:11:26 PAGE 3
CONSTANT SIZE = 8 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 9 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -