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

📄 kqtt.asm

📁 C51驱动电机PID控制转速的汇编和C51代码.
💻 ASM
字号:
     ;2;程序清单:(12MHz)

       ORG  0000H
       AJMP START
       ORG  0003H
       AJMP  PINT1

       ORG  000BH
       AJMP  T0Int


       ORG  0200H
       PwmData0H  DATA  20H
       PwmData0L  DATA  21H
       PwmData1H  DATA  22H
       PwmData1L  DATA  23H




            ;PwmData0      ;T0定时t1所需的定时初值(字)
            ;PwmData1      ;T0定时t2所需的定时初值(字)
            ;PwmF          ;PWM输出标志

     START:   MOV SP ,#70H
            SETB IT0;开中断
            SETB EA
            SETB EX0

            MOV PCON, #00H
            MOV SCON, #52H
            MOV TMOD, #20H
            MOV TH1,#0E8H
            MOV TL1,#0E8H
            SETB TR1




            MOV DPTR,#1B31H ;初始化
            MOV A,#0D1H
            MOVX @DPTR,A

LP1:   MOVX A,@DPTR
       JB Acc.7,LP1
       MOV A,#00H
       MOVX @DPTR,A
       MOV A,#32H       ;18分频
       MOVX @DPTR,A


WAIT:  JMP WAIT    ;等待中断









KEY:

      MOV   A,#01H
      MOV   PwmData0H,  #3CH
      MOV   PwmData0L,  #0B0H
      MOV   PwmData1H,  #3CH
      MOV   PwmData1L,  #0B0H


      NEXT: MOV P1,A
            MOV TMOD,#01H
            MOV R0,00H
             
            Mov TH0, PwmData1H         ;High(PwmData1)
             
            Mov TL0, PwmData1L         ;Low(PwmData1)
            SETB ET0
            SETB EA
            SETB TR0     ;启动T0
            SJMP $
       T0Int:     ;T0中断服务程序
            DJNZ   R0,PwmOutH        ;PWM输出未完成返回
             
            Mov TH0, PwmData0H         ;High(PwmData0)
             
            Mov TL0, PwmData0L         ;Low(PwmData0)
            SETB TR0
            MOV R0,01H             ;PwmF
            Clr   p1.0   ;PWM输出脚
            Reti
     PwmOutH:
            Setb p1.0
            Clr tr0
             
            Mov TH0, PwmData1H         ;High(PwmData1)
             
            Mov TL0, PwmData1L       ;Low(PwmData1)
            SETB TR0
            MOV R0,00H              ;PwmF
            reti         ;说明在主程序中计算PwmData0、PwmData1

PINT1: PUSH PSW
       PUSH DPH
       PUSH DPL
       PUSH Acc         ;现场保护
       MOV DPTR,#1B31H
       MOV A,#40H       ;读键值
       MOVX @DPTR,A
       MOV DPTR,#1B30H
       MOVX A,@DPTR
       MOV R7,A
       CALL cxz
       POP Acc
       POP DPL
       POP DPH
       POP PSW      ;恢复现场
       RETI

;以下为对FIFO存储器中数据的处理
cxz:   MOV A,R7
       ANL A,#07H
       MOV R5,A    ;将列信号送入R5
       MOV R4,A
       MOV A,R7
       RR A
       RR A
       RR A        ;A循环右移三位
       ANL A,#07H
       MOV R6,A    ;将列信号送入R1
       MOV R3,A

;将R1,R0的值输出
DIR:   MOV A,R5
       MOV DPTR,#TAB
       MOVC A,@A+DPTR
       MOV R5,A         ;

       MOV A,R6
       MOV DPTR,#TAB        ;
       MOVC A,@A+DPTR
       MOV R6,A
; ADD A,DPTR        ;
       MOV DPTR, #1B31H   ;
       MOV A, #90H        ;
       MOVX @DPTR,A        ;

       MOV DPTR,#1B30H     ;
       MOV A,R5           ;
       MOVX @DPTR,A      ;将R0输出

       MOV A,R6        ;
       MOVX @DPTR,A      ;将R0输出

       MOV A,R7
       ANL A,#3FH
       CJNE A,#09H,LLL
       JMP KEY
 LLL:  Clr   p1.0  
       LJMP WAIT











       RET              ;


TAB:   DB 3FH,06H,5BH,4FH,66H,6DH
       DB 7DH,07H,7FH,6FH,77H,7CH
       DB 39H,5EH,79H,71H,73H,3EH
       DB 31H,6EH,1CH,23H,40H,03H
       DB 18H,38H,00H

END

⌨️ 快捷键说明

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