📄 step4.lst
字号:
C51 COMPILER V7.20 STEP4 03/15/2006 17:41:01 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE STEP4
OBJECT MODULE PLACED IN Step4.OBJ
COMPILER INVOKED BY: D:\Program Files\C51\BIN\C51.EXE Step4.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 实验接线:
3 1、P1口的P1.0---P1.3分别接模块上的A、B、C、D。
4 2、CS244接CS0,244的输入IN0--IN7接平推开关KK1--KK8的输入K1--K8
5 3、P1.7接单脉冲输出P-。
6 实验说明:
7 全速运行程序后,在数码管的左两位显示设定的步数(16进制),
8 此数值可通过与244输入端相连的7个平推开关kk1---kk7设定,kk8设定电机转动的方向,
9 当kk8在(L)侧时,电机将顺时针方向转动,否则将逆时针方向转动。在数码管的显示上,
10 如果显示的数值位的小数点点亮,表示将逆时针方向转动,否则如果没有点亮,
11 表示将顺时针方向转动。当设置完成后,按动单脉冲开关Pulse,步进电机开始按照设定
12 的步数和方向开始转动,同时在数码管的右两位显示电机此次已运行的步数,显示的格式同
13 左两位。
14 */
15 #include <reg51.h>
16 #include <absacc.h>
17
18 #define input XBYTE[0xcfa0]
19 #define Led_dat XBYTE[0xcfe8]
20 #define Led_ctl XBYTE[0xcfe9]
21
22 bit dir;
23 void Display_byte(unsigned char loc,unsigned char dat)
24 {
25 1 unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,
-0x40};
26 1 loc &=0xf;
27 1 Led_ctl = loc|0x80;
28 1 if(dat==0xaa) Led_dat = table[16];
29 1 else if(dir) Led_dat = table[dat>>4]|0x80; /*显示高4位*/
30 1 else Led_dat = table[dat>>4];
31 1 loc++;
32 1 Led_ctl = loc|0x80;
33 1 if(dat==0xaa) Led_dat = table[16];
34 1 else if(dir) Led_dat = table[dat&0xf]|0x80; /*显示低4位*/
35 1 else Led_dat = table[dat&0xf];
36 1 }
37 void delay(unsigned int time)
38 {
39 1 for(;time>0;time--);
40 1 }
41 void drv(void)
42 {
43 1 unsigned char table[]={6,7,3,11,9,13,12,14};
44 1 unsigned char num;
45 1 for(num=0;num<63;num++)
46 1 {
47 2 if(!dir) P1=table[num%8];
48 2 else P1=table[7-(num%8)];
49 2 delay(100);
50 2 }
51 1 }
52 void main(void)
53 {
54 1 unsigned char dat,tmp;
C51 COMPILER V7.20 STEP4 03/15/2006 17:41:01 PAGE 2
55 1 Led_ctl = 0xd1;
56 1 while((Led_ctl&0x80)==0x80);
57 1 Led_ctl = 0x31;
58 1 Display_byte(2,0xaa);
59 1 while(1)
60 1 {
61 2 P1=0xff;
62 2 while((P1&0x80)==0x80)
63 2 {
64 3 dat = input;
65 3 if((dat&0x80)==0x80) dir=1;
66 3 else dir=0;
67 3 dat &=0x7f;
68 3 Display_byte(0,dat);
69 3 }
70 2 tmp=0;
71 2 while(tmp<=dat)
72 2 {
73 3 Display_byte(4,tmp);
74 3 drv();
75 3 delay(6000);
76 3 tmp++;
77 3 }
78 2 }
79 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 270 ----
CONSTANT SIZE = 25 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 29
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -