?? 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服務(wù)子程序 */
10 void time0() interrupt 1 using 1 // 用定時器0中斷來產(chǎn)生CLK時鐘
11 {
12 1 /* 定時10ms,產(chǎn)生20ms周期的時鐘,也就是50Hz的時鐘 */
13 1 TH0 = -T/256;
14 1 TL0 = -T%256;
15 1 CLK = ~CLK;
16 1 }
17
18 /* 鍵消抖延時函數(shù) */
19 void delay(void)
20 {
21 1 uchar i;
22 1 for (i=300;i>0;i--);
23 1 }
24
25 /* 鍵掃描函數(shù) */
26 uchar keyscan(void)
27 {
28 1 uchar scancode,tmpcode;
29 1 P1 = 0xf0; // 發(fā)全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 /* 返回特征字節(jié)碼,為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; // 設(shè)置定時器0工作模式
59 1
60 1 EA = 1;
61 1 ET0 = 1;
62 1
63 1 /* 設(shè)置為2相激勵 */
64 1 M1 = 0;
65 1 M2 = 0;
66 1
67 1 /* 設(shè)置為環(huán)形轉(zhuǎn)向軌跡 */
68 1 M4 = 1;
69 1 M5 = 1;
70 1
71 1 EN = 0; // 切斷驅(qū)動輸出
72 1 RET = 0; // 歸位輸入無效
73 1
74 1 CWB = 1; // 初始設(shè)置為順時針方向
75 1
76 1 while(1)
77 1 {
78 2 key = keyscan(); // 調(diào)用鍵盤掃描函數(shù)
79 2 switch(key)
80 2 {
81 3 case 0x11: // 0行0列,啟動鍵
82 3 EN = 1; // 打開驅(qū)動輸出
83 3 TH0 = -T/256; // 改變T可以改變步進電機轉(zhuǎn)動速度
84 3 TL0 = -T%256;
85 3 TR0 = 1; // 定時器0開始計數(shù)
86 3 break;
87 3 case 0x21: // 0行1列,停止鍵
88 3 TR0 = 0; // 定時器0停止計數(shù)
89 3 EN = 0; // 切斷驅(qū)動輸出
90 3 break;
91 3 case 0x41: // 0行2列,切換轉(zhuǎn)向按鍵
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 + -