📄 stepper.lst
字号:
C51 COMPILER V8.05a STEPPER 10/20/2008 10:28:25 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE STEPPER
OBJECT MODULE PLACED IN Stepper.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Stepper.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "Stepper.h"
2
3 /* 定时器0服务子程序 */
4 void time0() interrupt 1 using 1 // 用定时器0中断来产生CLK时钟
5 {
6 1 /* 定时10ms,产生20ms周期的时钟,也就是50Hz的时钟 */
7 1 TH0 = -T/256;
8 1 TL0 = -T%256;
9 1 CLK = ~CLK;
10 1 }
11
12 /* 键消抖延时函数 */
13 void delay(void)
14 {
15 1 uchar i;
16 1 for (i=300;i>0;i--);
17 1 }
18
19 /* 键扫描函数 */
20 uchar keyscan(void)
21 {
22 1 uchar scancode,tmpcode;
23 1 P1 = 0xf0; // 发全0行扫描码
24 1 if ((P1&0xf0)!=0xf0) // 若有键按下
25 1 {
26 2 delay(); // 延时去抖动
27 2 if ((P1&0xf0)!=0xf0) // 延时后再判断一次,去除抖动影响
28 2 {
29 3 scancode = 0xfe;
30 3 while((scancode&0x10)!=0) // 逐行扫描
31 3 {
32 4 P1 = scancode; // 输出行扫描码
33 4 if ((P1&0xf0)!=0xf0) // 本行有键按下
34 4 {
35 5 tmpcode = (P1&0xf0)|0x0f;
36 5
37 5 /* 返回特征字节码,为1的位即对应于行和列 */
38 5 return((~scancode)+(~tmpcode));
39 5 }
40 4 else scancode = (scancode<<1)|0x01; // 行扫描码左移一位
41 4 }
42 3 }
43 2 }
44 1 return(0); // 无键按下,返回值为0
45 1 }
46
47 /* 主程序 */
48 void main()
49 {
50 1 uchar key;
51 1
52 1 TMOD = 0x01; // 设置定时器0工作模式
53 1
54 1 EA = 1;
55 1 ET0 = 1;
C51 COMPILER V8.05a STEPPER 10/20/2008 10:28:25 PAGE 2
56 1
57 1 /* 设置为2相激励 */
58 1 M1 = 0;
59 1 M2 = 0;
60 1
61 1 /* 设置为环形转向轨迹 */
62 1 M4 = 1;
63 1 M5 = 1;
64 1
65 1 EN = 0; // 切断驱动输出
66 1 RET = 0; // 归位输入无效
67 1
68 1 CWB = 1; // 初始设置为顺时针方向
69 1
70 1 while(1)
71 1 {
72 2 key = keyscan(); // 调用键盘扫描函数
73 2 switch(key)
74 2 {
75 3 case 0x11: // 0行0列,启动键
76 3 EN = 1; // 打开驱动输出
77 3 TH0 = -T/256; // 改变T可以改变步进电机转动速度
78 3 TL0 = -T%256;
79 3 TR0 = 1; // 定时器0开始计数
80 3 break;
81 3 case 0x21: // 0行1列,停止键
82 3 TR0 = 0; // 定时器0停止计数
83 3 EN = 0; // 切断驱动输出
84 3 break;
85 3 case 0x41: // 0行2列,切换转向按键
86 3 CWB = ~CWB;
87 3 break;
88 3 case 0x81: // 0行3列,归位键
89 3 RET = 1;
90 3 delay();
91 3 RET = 0;
92 3 break;
93 3 default:break;
94 3 }
95 2 }
96 1 }
97
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 148 ----
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 + -