⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tiaoshi.asm

📁 控制电机转动的程序
💻 ASM
字号:
   ORG  0000H
       LJMP MAIN
       ORG 0023H    ;串行中断
       LJMP INT
       ORG 0030H
      
MAIN:  MOV SP,#70H
       CLR P2.0            
       MOV IE,#90H   ;允许串行中断
       MOV SCON,#0C0H ;设置串行口方式3
       MOV TMOD,#20H 
       MOV TH1,#0E8H   ;设置波特率200B/S
       MOV TL1,#0E8H
       SETB TR1       ;启动定时器1
       SETB REN          ;允许串行接收
       SETB ES        ;启动串行中断
       SJMP $
     
    ;串行中断子程序
INT:    CLR EA    ;关中断
        PUSH ACC
        PUSH PSW
        MOV PSW,#08H
        MOV A,SBUF    ; 接收一个数据        
        CLR RI
        CJNE A,#33H,LP1  ; 是否收到询问信号"1"   
         LCALL LP2
        LCALL PMOVE
        SJMP LP3
LP1:    CJNE A,#34H,LP3       
        LCALL LP2
        LCALL NMOVE
            
LP3:    JMP OUT

LP2:    MOV A,#37H          ;发送回答信号"A"   
        LCALL SIOO           ;调发一字节数据子程序
        RET
LP12:   MOV A,#39H          ;发送回答"   
        LCALL SIOO           ;调发一字节数据子程序
        RET        

PMOVE:  MOV A,SBUF
        CLR RI
        LCALL LP6        
        CJNE A,#35H,LP4      ;是否收到"3"        
        MOV A,SBUF
        CLR RI
        LCALL LP12
        MOV R1,A               
        LCALL PMOVE2
        JMP LP5
        
LP4:    CJNE A,#36H,LP5
        LCALL LP6
        MOV A,SBUF
        CLR RI
        MOV R1,A       
        MOV A,SBUF
        CLR RI
        LCALL LP12
        MOV R2,A
        
        LCALL PMOVE1

LP5:    JMP OUT 
       
LP6:    MOV A,#38H          ;发送回答信号"B"   
        LCALL SIOO           ;调发一字节数据子程序
        RET 
         

PMOVE1: MOV R0,#00H ;反转子程序
LP71:   MOV A,R0
        MOV DPTR,#TABLE
        MOVC A,@A+DPTR
        JZ PMOVE1
        CPL A
        MOV P1,A
        LCALL DELAY1
        INC R0
        DJNZ R1,LP71
        DJNZ R2,PMOVE1              
        RET
        
PMOVE2: MOV R0,#00H ;反转子程序
LP72:   MOV A,R0
        MOV DPTR,#TABLE
        MOVC A,@A+DPTR
        JZ PMOVE2
        CPL A
        MOV P1,A
        LCALL DELAY1
        INC R0
        DJNZ R1,LP72
        RET        
        
        
       

        
NMOVE:  MOV A,SBUF
        CLR RI
        CJNE A,#35H,LP8      ;是否收到"3"
        LCALL LP6
        MOV A,SBUF
        CLR RI
        LCALL LP12
        MOV R1,A
        
        LCALL NMOVE2
        JMP LP9
        
LP8:    CJNE A,#36H,LP9
        LCALL LP6
        MOV A,SBUF
        CLR RI
        MOV R1,A     
        MOV A,SBUF
        CLR RI
        MOV R2,A
        LCALL LP12
        LCALL NMOVE1

LP9:    RET 
       


NMOVE1: MOV R0,#05H ;反转子程序
LP11:   MOV A,R0
        MOV DPTR,#TABLE
        MOVC A,@A+DPTR
        JZ PMOVE1
        CPL A
        MOV P1,A
        LCALL DELAY1
        INC R0
        DJNZ R1,LP11
        DJNZ R2,NMOVE1              
        RET
        
NMOVE2: MOV R0,#05H ;反转子程序
LP10:   MOV A,R0
        MOV DPTR,#TABLE
        MOVC A,@A+DPTR
        JZ NMOVE2
        CPL A
        MOV P1,A
        LCALL DELAY1
        INC R0
        DJNZ R1,LP10
        RET        

OUT:    POP PSW
        POP ACC
        SETB EA                ;开中断 
        SETB REN          ;允许串行接收
        SETB ES        ;启动串行中断
        RETI

 
        
SIOO:   CLR ES
        MOV SBUF,A         
        JNB TI,$      ;1 帧是否发送完
        CLR TI
        LCALL DELAY1 
        SETB ES
        RET
             
DELAY1:  MOV R6,#74        ;延时20MS
D1:     MOV R7,#248
        DJNZ R7,$
        DJNZ R6,D1
        RET

             
TABLE:  DB  03H,06H,0CH,09H
        DB  00
        DB  03H,09H,0CH,06H
        DB  00
        END 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -