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