📄 cp驱动.lst
字号:
A51 MACRO ASSEMBLER CP驱动 02/27/2007 13:36:59 PAGE 1
MACRO ASSEMBLER A51 V1.10
OBJECT MODULE PLACED IN CP驱动.OBJ
ASSEMBLER INVOKED BY: C:\MANLEY\PMEDWIN\A51.EXE CP驱动.ASM DB
LOC OBJ LINE SOURCE
1 ; AT89C2051步进电机驱动程序
2
0020 3 state EQU 20H
0017 4 xadd equ 17h
0018 5 yadd equ 18h
0010 6 step equ 10h
00E1 7 dogcontr equ 0e1h
00B1 8 p3m0 equ 0b1h
00B2 9 p3m1 equ 0b2h
0091 10 p1m0 equ 91h
0092 11 p1m1 equ 92h
12
007F 13 bit1s bit 2fh.7
0010 14 dirbit bit 22h.0
00B4 15 outcp bit p3.4
0012 16 dabit bit 22h.2
0016 17 xiaobit bit 22h.6
00B3 18 baojin bit p3.3
0050 19 dataram equ 50h
0010 20 time01s equ 10h
0011 21 time1s equ 11h
0012 22 time2s equ 12h
0013 23 time5s equ 13h
24
0000 25 ORG 0000H ;程序执行开始地址
0000 020030 26 LJMP START ;跳到标号START执行
000B 27 ORG 000bH
000B 020000 F 28 LJMP time0int
29
0030 30 org 0030h
0030 31 START:
0030 759100 32 mov p1m0,#00h
0033 759200 33 mov p1m1,#00h
0036 75B100 34 mov p3m0,#00h
0039 75B200 35 mov p3m1,#00h
003C 7590FF 36 mov p1,#0ffh ;非回位状态和开机时,系统读键
003F 00 37 nop
0040 75100A 38 mov time01s,#10
0043 75110A 39 mov time1s,#10
0046 75130A 40 mov time5s,#10
0049 C2B4 41 clr outcp
004B C2B3 42 clr baojin
004D 7850 43 mov r0,#dataram
004F 7600 44 mov @r0,#00h
0051 08 45 inc r0
0052 7680 46 mov @r0,#80h
0054 755200 47 mov dataram+2,#0
48
0057 758901 49 mov TMOD, #01h ;置T0中断方式1
005A 758AB0 50 MOV TL0,#0B0H ;20毫秒定时用初值
005D 758CFC 51 MOV TH0,#0fCH ;
0060 D2A9 52 SETB ET0
0062 D2AF 53 sETB EA ;开总中断允许
0064 D28C 54 setb tr0 ;开中断
55
56
0066 D297 57 main: setb p1.7
0068 75E13C 58 mov dogcontr,#00111100b
A51 MACRO ASSEMBLER CP驱动 02/27/2007 13:36:59 PAGE 2
59
006B A297 60 mov c,p1.7 ;clk脉冲上升沿判定
006D 9201 61 mov state.1,c
006F B000 62 anl c,/state.0
0071 500F 63 jnc clklp1
64
0073 A296 65 mov c,p1.6 ;dir
0075 9210 66 mov dirbit,c
67
0077 12008B 68 lcall xy ; 加减计数
007A 1200A6 69 lcall com ;比较判断
70
007D C2B3 71 clr baojin
007F 751301 72 mov time5s,#01h
73
0082 A201 74 clklp1: mov c, state.1 ;clk
0084 9200 75 mov state.0,c
0086 80DE 76 jmp main
0088 80DC 77 jmp main
008A 22 78 ret
79
008B 7850 80 xy: mov r0,#dataram
008D E6 81 mov a,@r0
008E D3 82 setb c
008F 301009 83 jnb dirbit,sublp
0092 3400 84 addc a,#0
0094 F6 85 mov @r0,a
0095 08 86 inc r0
0096 E6 87 mov a,@r0
0097 3400 88 addc a,#0
0099 F6 89 mov @r0,a
009A 22 90 ret
009B 91 sublp :
009B 9400 92 subb a,#0
009D F6 93 mov @r0,a
009E 08 94 inc r0
009F E6 95 mov a,@r0
00A0 9400 96 subb a,#0
00A2 F6 97 mov @r0,a
00A3 22 98 ret
00A4 80C0 99 jmp main
100
00A6 7902 101 com: mov r1,#02
00A8 7852 102 mov r0,#dataram+2
00AA 9000D2 103 mov dptr,#tab
00AD D913 104 loop1: djnz r1,lop
00AF C216 105 clr xiaobit
00B1 C212 106 clr dabit
107
00B3 D2B4 108 setb outcp
00B5 751203 109 mov time2s,#3
110
00B8 7850 111 mov r0,#dataram
00BA 7600 112 mov @r0,#00h
00BC 08 113 inc r0
00BD 7680 114 mov @r0,#80h
00BF 0552 115 inc dataram+2
00C1 22 116 ret
00C2 117 lop :
00C2 E9 118 mov a,r1
00C3 93 119 movc a,@a+dptr
00C4 18 120 dec r0
00C5 96 121 subb a,@r0
00C6 60E5 122 jz loop1
00C8 5003 123 jnc loop2
00CA D212 124 setb dabit
A51 MACRO ASSEMBLER CP驱动 02/27/2007 13:36:59 PAGE 3
00CC 22 125 ret
00CD D216 126 loop2:setb xiaobit
00CF C212 127 clr dabit
00D1 22 128 ret
00D2 E983 129 tab: db 0E9h,83h
130
00D4 8090 131 jmp main
132 ;to intT0 subprog
133 ;使用1区寄存器,R5,R6,R7进出不可变化
---- 134 CSEG AT 0BH ;time/cnt-1服务子程
000B 020000 F 135 LJMP time0int ;TIME判断R4-1=0,时间T=N*R4*T0
136 intT0a SEGMENT CODE ;R4X需初始化
137
---- 138 RSEG intT0A ;CNT计数脉冲来自P1口,其高电平T>T0*3
139 USING 0 ;其低电平T>T0
0000 C0D0 140 time0int: PUSH PSW
0002 C0E0 141 puSH ACC
0004 C0F0 142 push b
0006 C000 143 push 00h
0008 C28C 144 clr TR0
000A 74EC 145 MOV a, #0ech ;fch ; 主频12M,5MS时间常数
000C 258C 146 add a,th0
000E F58C 147 mov th0,a
0010 74EF 148 MOV a, #0EFh
0012 258A 149 add a,tl0
0014 F58A 150 mov tl0,a
0016 75E13C 151 mov dogcontr,#00111100b
152
153 ; lcall intdisplay ;显示,5键扫描
0019 A210 154 mov c,dirbit
001B 92B5 155 mov p3.5,c
001D 92B7 156 mov p3.7,c
157
001F 1510 158 dec time01s
0021 E510 159 mov a,time01s
0023 7026 160 jnz loopp32
0025 75100A 161 mov time01s,#10
162
163 ; cpl bit01s ;100ms标识位2f.0
0028 1511 164 dec time1s
165 ; cpl p3.2
002A E511 166 mov a,time1s ;time1s放1S常数,time8s放8S常数
002C 701D 167 jnz loopp32
002E 75110A 168 mov time1s,#10
0031 B27F 169 cpl bit1s ;1s标识位2f.1h
0033 B2B2 170 cpl p3.2
171
0035 E512 172 mov a,time2s
0037 6005 173 jz loopp22
0039 1512 174 dec time2s ;TIME8S不为零。LED不亮,SETKEY闭合,写入EPRO
003B 020000 F 175 jmp loopp21
003E C2B4 176 loopp22 : clr outcp
0040 E513 177 loopp21:mov a,time5s
0042 6005 178 jz loopp2
0044 1513 179 dec time5s ;TIME8S不为零。LED不亮,SETKEY闭合,写入EPRO
0046 020000 F 180 jmp loopp32
0049 D2B3 181 loopp2 : setb baojin
004B D28C 182 loopp32: SETB TR0 ;开中断
004D D000 183 pop 00h
004F D0F0 184 pop b
0051 D0E0 185 POP ACC
0053 D0D0 186 POP PSW
0055 32 187 RETI
188
189
0056 020066 190 jmp main
A51 MACRO ASSEMBLER CP驱动 02/27/2007 13:36:59 PAGE 4
0200 191 org 200h
0200 00 192 nop
0201 00 193 nop
0202 00 194 nop
0203 020066 195 jmp main
196
0300 197 org 300h
0300 00 198 nop
0301 00 199 nop
0302 00 200 nop
0303 020066 201 jmp main
202
203 end
A51 MACRO ASSEMBLER CP驱动 02/27/2007 13:36:59 PAGE 5
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
B. . . . . . . . . D ADDR 00F0H A
BAOJIN . . . . . . B ADDR 00B0H.3 A
BIT1S. . . . . . . B ADDR 002FH.7 A
CLKLP1 . . . . . . C ADDR 0082H A
COM. . . . . . . . C ADDR 00A6H A
DABIT. . . . . . . B ADDR 0022H.2 A
DATARAM. . . . . . N NUMB 0050H A
DIRBIT . . . . . . B ADDR 0022H.0 A
DOGCONTR . . . . . N NUMB 00E1H A
EA . . . . . . . . B ADDR 00A8H.7 A
ET0. . . . . . . . B ADDR 00A8H.1 A
INTT0A . . . . . . C SEG 0306H REL=UNIT
LOOP1. . . . . . . C ADDR 00ADH A
LOOP2. . . . . . . C ADDR 00CDH A
LOOPP2 . . . . . . C ADDR 0049H R SEG=INTT0A
LOOPP21. . . . . . C ADDR 0040H R SEG=INTT0A
LOOPP22. . . . . . C ADDR 003EH R SEG=INTT0A
LOOPP32. . . . . . C ADDR 004BH R SEG=INTT0A
LOP. . . . . . . . C ADDR 00C2H A
MAIN . . . . . . . C ADDR 0066H A
OUTCP. . . . . . . B ADDR 00B0H.4 A
P1 . . . . . . . . D ADDR 0090H A
P1M0 . . . . . . . N NUMB 0091H A
P1M1 . . . . . . . N NUMB 0092H A
P3 . . . . . . . . D ADDR 00B0H A
P3M0 . . . . . . . N NUMB 00B1H A
P3M1 . . . . . . . N NUMB 00B2H A
PSW. . . . . . . . D ADDR 00D0H A
START. . . . . . . C ADDR 0030H A
STATE. . . . . . . N NUMB 0020H A
STEP . . . . . . . N NUMB 0010H A
SUBLP. . . . . . . C ADDR 009BH A
TAB. . . . . . . . C ADDR 00D2H A
TH0. . . . . . . . D ADDR 008CH A
TIME01S. . . . . . N NUMB 0010H A
TIME0INT . . . . . C ADDR 0000H R SEG=INTT0A
TIME1S . . . . . . N NUMB 0011H A
TIME2S . . . . . . N NUMB 0012H A
TIME5S . . . . . . N NUMB 0013H A
TL0. . . . . . . . D ADDR 008AH A
TMOD . . . . . . . D ADDR 0089H A
TR0. . . . . . . . B ADDR 0088H.4 A
XADD . . . . . . . N NUMB 0017H A
XIAOBIT. . . . . . B ADDR 0022H.6 A
XY . . . . . . . . C ADDR 008BH A
YADD . . . . . . . N NUMB 0018H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -