📄 xnew.lst
字号:
A51 MACRO ASSEMBLER XNEW 11/28/2007 10:51:00 PAGE 1
MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN xnew.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\Bin\a51.exe xnew.asm DB GENONLY RB(0) XREF
LOC OBJ LINE SOURCE
1 ;步进电机控制程序
2 ;**************************************************************************
3 ;主程序
0000 4 ORG 0000H
0000 020100 5 LJMP MAIN
0013 6 ORG 0013H ;INT1的中断入口
0013 02015C 7 LJMP PINT1
0100 8 ORG 0100H
0100 C2D5 9 MAIN: CLR F0 ;清中断发生标志
0102 758160 10 MOV SP,#60H
0105 908FFF 11 MOV DPTR,#8FFFH ;8279初始化清除命令
0108 74D1 12 MOV A,#0D1H
010A F0 13 MOVX @DPTR,A
010B E0 14 WAIT: MOVX A,@DPTR ;等8279清除结束
010C 20E7FC 15 JB ACC.7,WAIT
010F 7400 16 MOV A,#00 ;8279送方式命令
0111 F0 17 MOVX @DPTR,A
0112 7434 18 MOV A,#34H ;fosc=12Mhz时钟编程命令
0114 F0 19 MOVX @DPTR,A
0115 D28A 20 SETB IT1 ;外部中断,下降沿触发
0117 D2AF 21 SETB EA ;开总中断
0119 D2AA 22 SETB EX1 ;允许外部中断1中断
011B 30D5FD 23 LOOP: JNB F0,LOOP ;判中断是否发生?
011E E8 24 LOOP1: MOV A,R0 ;取出键值
011F B40011 25 CJNE A,#00H,LOOP2 ;是正转键吗?非转LOOP2
0122 7B00 26 LP0: MOV R3,#00H
0124 90017E 27 LP1: MOV DPTR,#TABLE ;控制字首地址
0127 EB 28 MOV A,R3 ;查表偏移量送A
0128 93 29 MOVC A,@A+DPTR ;查表取控制字
0129 60F7 30 JZ LP0 ;转完八拍
012B F590 31 MOV P1,A ;控制字送P1口
012D 3153 32 ACALL DELAY ;延时
012F 0B 33 INC R3 ;偏移量+1(拍数加1)
0130 2124 34 AJMP LP1
0132 22 35 RET
0133 E8 36 LOOP2: MOV A, R0 ;取出键值
0134 B40111 37 CJNE A,#01H,LOOP3 ;是反转键吗?非转LOOP3
0137 7B09 38 LP2: MOV R3,#09H
0139 EB 39 LP3: MOV A,R3 ;查表偏移量送A
013A 90017E 40 MOV DPTR,#TABLE
013D 93 41 MOVC A,@A+DPTR
013E 60F7 42 JZ LP2
0140 F590 43 MOV P1,A
0142 3153 44 ACALL DELAY
0144 0B 45 INC R3
0145 2139 46 AJMP LP3
0147 22 47 RET
0148 E8 48 LOOP3: MOV A, R0 ;取出键值
0149 B402CF 49 CJNE A,#02H,LOOP ;是停止键吗?否转PINT1
014C 759000 50 MOV P1,#00H ;是则停转
014F C2D5 51 CLR F0
0151 211B 52 AJMP LOOP
0153 7F20 53 DELAY: MOV R7,#20H ;延时子程序
0155 7EF8 54 D1: MOV R6,#248
0157 DEFE 55 DJNZ R6,$
0159 DFFA 56 DJNZ R7,D1
015B 22 57 RET
58 ;**************************键输入中断服务程序*********************************
A51 MACRO ASSEMBLER XNEW 11/28/2007 10:51:00 PAGE 2
015C C2AF 59 PINT1: CLR EA ;关中断
015E C0E0 60 PUSH ACC
0160 C0D0 61 PUSH PSW ;入栈保护
0162 C083 62 PUSH DPH
0164 C082 63 PUSH DPL
0166 908FFF 64 MOV DPTR,#8FFFH ;向命令口写入读键盘RAM
0169 7440 65 MOV A,#40H
016B F0 66 MOVX @DPTR,A
016C 908FFE 67 MOV DPTR,#8FFEH ;读入键值
016F E0 68 MOVX A,@DPTR
0170 F8 69 MOV R0,A ;键值暂存入R0
0171 D082 70 PRI1: POP DPL ;出栈恢复
0173 D083 71 POP DPH
0175 D0D0 72 POP PSW
0177 D0E0 73 POP ACC
0179 D2D5 74 SETB F0 ;置中断标志
017B D2AF 75 SETB EA ;开中断
017D 32 76 RETI
77 ;/////////////////////////////////////////////////////////////////////////////
017E 10302060 78 TABLE: DB 10H,30H,20H,60H,40H,0C0H,80H,90H,00H ;正转
0182 40C08090
0186 00
0187 109080C0 79 DB 10H,90H,80H,0C0H,40H,60H,20H,30H,00H ;反转
018B 40602030
018F 00
80 END
A51 MACRO ASSEMBLER XNEW 11/28/2007 10:51:00 PAGE 3
XREF SYMBOL TABLE LISTING
---- ------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES / REFERENCES
ACC. . . . . . . . D ADDR 00E0H A 15 60 73
D1 . . . . . . . . C ADDR 0155H A 54# 56
DELAY. . . . . . . C ADDR 0153H A 32 44 53#
DPH. . . . . . . . D ADDR 0083H A 62 71
DPL. . . . . . . . D ADDR 0082H A 63 70
EA . . . . . . . . B ADDR 00A8H.7 A 21 59 75
EX1. . . . . . . . B ADDR 00A8H.2 A 22
F0 . . . . . . . . B ADDR 00D0H.5 A 9 23 51 74
IT1. . . . . . . . B ADDR 0088H.2 A 20
LOOP . . . . . . . C ADDR 011BH A 23# 23 49 52
LOOP1. . . . . . . C ADDR 011EH A 24#
LOOP2. . . . . . . C ADDR 0133H A 25 36#
LOOP3. . . . . . . C ADDR 0148H A 37 48#
LP0. . . . . . . . C ADDR 0122H A 26# 30
LP1. . . . . . . . C ADDR 0124H A 27# 34
LP2. . . . . . . . C ADDR 0137H A 38# 42
LP3. . . . . . . . C ADDR 0139H A 39# 46
MAIN . . . . . . . C ADDR 0100H A 5 9#
P1 . . . . . . . . D ADDR 0090H A 31 43 50
PINT1. . . . . . . C ADDR 015CH A 7 59#
PRI1 . . . . . . . C ADDR 0171H A 70#
PSW. . . . . . . . D ADDR 00D0H A 61 72
SP . . . . . . . . D ADDR 0081H A 10
TABLE. . . . . . . C ADDR 017EH A 27 40 78#
WAIT . . . . . . . C ADDR 010BH A 14# 15
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -