h21.asm

来自「单片机程序集合」· 汇编 代码 · 共 79 行

ASM
79
字号
; 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 + =
减小字号Ctrl + -
显示快捷键?