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