📄 ynew.lst
字号:
A51 MACRO ASSEMBLER YNEW 12/11/2007 21:41:53 PAGE 1
MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN ynew.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\Bin\a51.exe ynew.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 020160 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 B40014 25 CJNE A,#00H,LOOP2 ;是正转键吗?非转LOOP2
0122 7B00 26 LP0: MOV R3,#00H
0124 900186 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 3157 32 ACALL DELAY ;延时
012F 0B 33 INC R3
0130 E8 34 MOV A,R0 ;取出键值
0131 B40002 35 CJNE A,#00H,LOOP2 ;偏移量+1(拍数加1)
0134 2124 36 AJMP LP1
0136 E8 37 LOOP2: MOV A, R0 ;取出键值
0137 B40114 38 CJNE A,#01H,LOOP3 ;是反转键吗?非转LOOP3
013A 7B09 39 LP2: MOV R3,#09H
013C EB 40 LP3: MOV A,R3 ;查表偏移量送A
013D 900186 41 MOV DPTR,#TABLE
0140 93 42 MOVC A,@A+DPTR
0141 60F7 43 JZ LP2
0143 F590 44 MOV P1,A
0145 3157 45 ACALL DELAY
0147 0B 46 INC R3
0148 E8 47 MOV A, R0 ;取出键值
0149 B40102 48 CJNE A,#01H,LOOP3
014C 213C 49 AJMP LP3
014E E8 50 LOOP3: MOV A, R0 ;取出键值
014F B402C9 51 CJNE A,#02H,LOOP ;是停止键吗?
0152 759000 52 MOV P1,#00H ;是则停转
0155 2100 53 AJMP MAIN
0157 7F20 54 DELAY: MOV R7,#20H ;延时子程序
0159 7EF8 55 D1: MOV R6,#248
015B DEFE 56 DJNZ R6,$
015D DFFA 57 DJNZ R7,D1
015F 22 58 RET
A51 MACRO ASSEMBLER YNEW 12/11/2007 21:41:53 PAGE 2
59 ;**************************键输入中断服务程序*********************************
0160 C2AF 60 PINT1: CLR EA ;关中断
0162 C0E0 61 PUSH ACC
0164 C0D0 62 PUSH PSW ;入栈保护
0166 C083 63 PUSH DPH
0168 C082 64 PUSH DPL
016A D2AF 65 SETB EA
016C 908FFF 66 MOV DPTR,#8FFFH ;向命令口写入读键盘RAM
016F 7440 67 MOV A,#40H
0171 F0 68 MOVX @DPTR,A
0172 908FFE 69 MOV DPTR,#8FFEH ;读入键值
0175 E0 70 MOVX A,@DPTR
0176 F8 71 MOV R0,A ;键值暂存入R0
0177 C2AF 72 CLR EA
0179 D082 73 PRI1: POP DPL ;出栈恢复
017B D083 74 POP DPH
017D D0D0 75 POP PSW
017F D0E0 76 POP ACC
0181 D2D5 77 SETB F0 ;置中断标志
0183 D2AF 78 SETB EA ;开中断
0185 32 79 RETI
80 ;/////////////////////////////////////////////////////////////////////////////
0186 109080C0 81 TABLE: DB 10H,90H,80H,0C0H,40H,60H,20H,30H,00H ;正转
018A 40602030
018E 00
018F 30206040 82 DB 30H,20H,60H,40H,0C0H,80H,90H,10H,00H ;反转
0193 C0809010
0197 00
83 END
A51 MACRO ASSEMBLER YNEW 12/11/2007 21:41:53 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 61 76
D1 . . . . . . . . C ADDR 0159H A 55# 57
DELAY. . . . . . . C ADDR 0157H A 32 45 54#
DPH. . . . . . . . D ADDR 0083H A 63 74
DPL. . . . . . . . D ADDR 0082H A 64 73
EA . . . . . . . . B ADDR 00A8H.7 A 21 60 65 72 78
EX1. . . . . . . . B ADDR 00A8H.2 A 22
F0 . . . . . . . . B ADDR 00D0H.5 A 9 23 77
IT1. . . . . . . . B ADDR 0088H.2 A 20
LOOP . . . . . . . C ADDR 011BH A 23# 23 51
LOOP1. . . . . . . C ADDR 011EH A 24#
LOOP2. . . . . . . C ADDR 0136H A 25 35 37#
LOOP3. . . . . . . C ADDR 014EH A 38 48 50#
LP0. . . . . . . . C ADDR 0122H A 26# 30
LP1. . . . . . . . C ADDR 0124H A 27# 36
LP2. . . . . . . . C ADDR 013AH A 39# 43
LP3. . . . . . . . C ADDR 013CH A 40# 49
MAIN . . . . . . . C ADDR 0100H A 5 9# 53
P1 . . . . . . . . D ADDR 0090H A 31 44 52
PINT1. . . . . . . C ADDR 0160H A 7 60#
PRI1 . . . . . . . C ADDR 0179H A 73#
PSW. . . . . . . . D ADDR 00D0H A 62 75
SP . . . . . . . . D ADDR 0081H A 10
TABLE. . . . . . . C ADDR 0186H A 27 41 81#
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 + -