📄 cont.lst
字号:
A51 MACRO ASSEMBLER CONT 11/24/2007 20:11:21 PAGE 1
MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN cont.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\Bin\a51.exe cont.asm DB GENONLY RB(0) XREF
LOC OBJ LINE SOURCE
1 ;步进电机控制程序
2 ;**************************************************************************
3 ;主程序
0000 4 ORG 0000H
0000 7B00 5 MOV R3,#00H
0002 908FFF 6 START: MOV DPTR,#8FFFH ;8279初始化清除命令
0005 74D1 7 MOV A,#0D1H
0007 F0 8 MOVX @DPTR,A
0008 E0 9 WAIT: MOVX A,@DPTR ;等8279清除结束
0009 20E7FC 10 JB ACC.7,WAIT
000C 7400 11 MOV A,#00 ;8279送方式命令
000E F0 12 MOVX @DPTR,A
000F 7434 13 MOV A,#34H ;fosc=12Mhz时钟编程命令
0011 F0 14 MOVX @DPTR,A
0012 908FFF 15 LOOP1: MOV DPTR,#8FFFH ;指向命令 状态口
0015 E0 16 LOOP2: MOVX A,@DPTR ;读8279状态字
0016 540F 17 ANL A,#0FH ;读状态字低字位
0018 60FB 18 JZ LOOP2 ;FIFO中无键时等待键输入
001A 7440 19 MOV A,#40H ;读FIFORAM命令
001C F0 20 MOVX @DPTR,A
001D 908FFE 21 MOV DPTR,#8FFEH ;指向数据口地址
0020 E0 22 MOVX A,@DPTR ;读入键值
0021 F8 23 MOV R0,A ;暂存键值
0022 B4000D 24 LOOP3: CJNE A,#00H,LOOP4 ;是正转键吗?否转LOOP4
0025 90004C 25 MOV DPTR,#TABLE ;控制字首地址
0028 EB 26 LP1: MOV A,R3 ;查表偏移量送A
0029 93 27 MOVC A,@A+DPTR ;查表取控制字
002A F590 28 MOV P1,A ;控制字送P1口
002C 1143 29 ACALL DELAY ;延时
002E 0B 30 INC R3 ;偏移量+1(拍数加1)
002F 0128 31 AJMP LP1
0031 22 32 RET
0032 E6 33 LOOP4: MOV A,@R0 ;取出键值
0033 B40106 34 CJNE A,#01H,LOOP5 ;是反转键吗?非转LOOP5
0036 EB 35 LP2: MOV A,R3 ;查表偏移量送A
0037 2408 36 ADD A,#08H ;修正偏移量,查反向控制字
0039 FB 37 MOV R3,A ;偏移量保存在R3中
003A 0128 38 AJMP LP1
003C E6 39 LOOP5: MOV A,@R0 ;取出键值
003D B403D5 40 CJNE A,#03H,LOOP2 ;是停止键吗?否转LOOP2
0040 759000 41 MOV P1,#00H ;是则停转
0043 7F20 42 DELAY: MOV R7,#20H ;延时子程序
0045 7EF8 43 D1: MOV R6,#248
0047 DEFE 44 DJNZ R6,$
0049 DFFA 45 DJNZ R7,D1
004B 22 46 RET
004C 10302060 47 TABLE: DB 10H,30H,20H,60H,40H,0C0H,80H,90H ;正转
0050 40C08090
0054 109080C0 48 DB 10H,90H,80H,0C0H,40H,60H,20H,30H ;反转
0058 40602030
49 END
A51 MACRO ASSEMBLER CONT 11/24/2007 20:11:21 PAGE 2
XREF SYMBOL TABLE LISTING
---- ------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES / REFERENCES
ACC. . . . . . . . D ADDR 00E0H A 10
D1 . . . . . . . . C ADDR 0045H A 43# 45
DELAY. . . . . . . C ADDR 0043H A 29 42#
LOOP1. . . . . . . C ADDR 0012H A 15#
LOOP2. . . . . . . C ADDR 0015H A 16# 18 40
LOOP3. . . . . . . C ADDR 0022H A 24#
LOOP4. . . . . . . C ADDR 0032H A 24 33#
LOOP5. . . . . . . C ADDR 003CH A 34 39#
LP1. . . . . . . . C ADDR 0028H A 26# 31 38
LP2. . . . . . . . C ADDR 0036H A 35#
P1 . . . . . . . . D ADDR 0090H A 28 41
START. . . . . . . C ADDR 0002H A 6#
TABLE. . . . . . . C ADDR 004CH A 25 47#
WAIT . . . . . . . C ADDR 0008H A 9# 10
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -