📄 h21.asm
字号:
; DC motor
; ASM for MCS51
mode equ 082h
STATUS equ 08001h
PORTA equ 08000h
CTL equ 08003h
CS0832 equ 09000h
DC_P equ 0
count0 equ 40
count1 equ 41
org 0h
jmp start
delay:
mov r5,#10
mov r6,#0
mov r7,#0
ddd:
djnz r7,ddd
djnz r6,ddd
djnz r5,ddd
ret
read:
mov TMOD, #01 ; 16位计时
clr TR0
mov TH0, #0
mov TL0, #0
mov dptr, #STATUS
r_0: movx a,@dptr
jnb acc.DC_P, r_0 ; 等待低电平完
r_1: movx a,@dptr
jb acc.DC_P, r_1 ; 等待高电平完
setb TR0
r_2: movx a,@dptr
jnb acc.DC_P, r_2 ; 等待低电平完
r_3: movx a,@dptr
jb acc.DC_P, r_3 ; 等待高电平完
clr TR0
mov count0,TH0
mov count1,TL0
ret
start:
mov dptr, #CS0832
mov a, #0ffh
movx @dptr, a
call delay ; 等待电机运转稳定
call read ; 读取时间
mov dptr, #CS0832 ; 设断点,观察上次时间
mov a, #0c0h
movx @dptr, a
call delay ; 等待电机运转稳定
call read
mov dptr, #CS0832 ; 设断点,观察上次时间
mov a, #040h ; 电机反转
movx @dptr, a
call delay ; 等待电机运转稳定
call read ; 读取时间
mov dptr, #CS0832 ; 设断点,观察上次时间
mov a, #00h ; 电机反转加速
movx @dptr, a
call delay ; 等待电机运转稳定
call read
ljmp $ ; 设断点,观察上次时间
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -