📄 bjmd.lst
字号:
C51 COMPILER V8.12 BJMD 03/30/2008 11:14:53 PAGE 1
C51 COMPILER V8.12, COMPILATION OF MODULE BJMD
OBJECT MODULE PLACED IN bjmd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE bjmd.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <STC89C51RC.h>
2 #include <intrins.h>
3 // *******************************************************
4 // 管脚定义
5 // 由P1输出驱动信息
6 // *******************************************************
7 // 变量定义
8 unsigned char temes; // 定时器 定时时间延长变量
9 unsigned char phase; // 马达驱动方式
10 unsigned char steps; // 设定步数
11 unsigned char dw; // 定位开始变量
12 unsigned char lr; // 定位正转或反转变量
13 unsigned char dw_no; // 定位时执行多少个驱动信号
14
15 // *******************************************************
16 // 函数声明
17 void init_mcu (void);
18
19 // *******************************************************
20 // 主函数
21 void main (void)
22 {
23 1 init_mcu ();
24 1 while (1)
25 1 {
26 2 //程序是在 定时器中断中完成的
27 2 }
28 1 }
29
30 // *******************************************************
31 // 单片机初始化 子函数
32 // 设定 寄存器、变量初值
33
34 void init_mcu (void)
35 {
36 1 TMOD = 0x01; //T0 工作在方式1 16位计数器
37 1 TH0 = 0x3C; // 预先 设定定时器 初值50ms
38 1 TL0 = 0xB0;
39 1 EA = 1; // 开启 总中断
40 1 ET0 = 1; // 开启定时器0的中断功能
41 1 TR0 = 1; // 启动定时器0
42 1
43 1 temes = 0; // 时间计数初值从0开始
44 1 phase=0x33; // 电机驱动方式为2相
45 1 P1=phase; // 初始化P1接口数据
46 1 steps=200; // 设定走200步为一个周期
47 1 dw=0; // dw=0表示定位处理,dw=1表示非定位处理
48 1 lr=0; // lr=0表示正转,lr=1表示反转
49 1 dw_no=4; // dw_no=4表示定位时先送出4个驱动信号
50 1 }
51
52 // *******************************************************
53 // 定时器0中断 子函数,产生50ms定时
54 void timer0 (void) interrupt 1
55 {
C51 COMPILER V8.12 BJMD 03/30/2008 11:14:53 PAGE 2
56 1 TH0 =0x3C; //重新设置定时器初值为50ms
57 1 TL0 =0xB0;
58 1
59 1 if (++temes==10) //够了500ms就开始处理过程
60 1 {
61 2 TR0=0; //关闭定时器0
62 2 temes = 0; //计数器 清零
63 2
64 2 if (dw == 0) //程序开始先执行定位程序
65 2 {
66 3 if (dw_no-->0)
67 3 {
68 4 phase=_crol_(phase,1); //循环左移一位转到下一个信号
69 4 P1=phase; //输出驱动信号
70 4 }
71 3 else
72 3 {
73 4 dw=1; //设为非定位处理
74 4 }
75 3 }
76 2 else //开始正转或反转
77 2 {
78 3 if (lr==0) // 开始正转处理
79 3 {
80 4 if (steps-->0) //正转200步
81 4 {
82 5 phase=_crol_(phase,1); //循环左移一位转到下一个信号
83 5 P1=phase; //输出驱动信号
84 5 }
85 4 else
86 4 {
87 5 lr=1; // 设为反转处理
88 5 steps=200; // 重设步数
89 5 }
90 4 }
91 3 else // 开始反转处理
92 3 {
93 4 if (steps-->0) //反转200步
94 4 {
95 5 phase=_cror_(phase,1); //循环右移一位转到下一个信号
96 5 P1=phase; //输出驱动信号
97 5 }
98 4 else
99 4 {
100 5 lr=0; // 设为正转处理
101 5 steps=200; // 重设步数
102 5 }
103 4 }
104 3 }
105 2 TR0=1; //启动定时器0
106 2 }
107 1 }
108
109 // *******************************************************
110
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 177 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
C51 COMPILER V8.12 BJMD 03/30/2008 11:14:53 PAGE 3
DATA SIZE = 6 ----
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 + -