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

📄 pwm电机调速.asm

📁 通过P2.4,P3.3实现电机转速控制,源码汇编语言编写,单定时器实现
💻 ASM
字号:
;51单片机  p2.5输出PWM,本程序用一个定时器配合软件延时现实,已调试过,按键调节太快需改进
;========================================================;========================================================
    TIAOSHU  EQU  25H
    PWM_EXT	BIT	P2.5
 
     PWM  EQU	9H
     JS1  EQU 10H
     WDT   DATA 0E1H
NAME  MAIN

EXTRN	CODE    (KEY)

;===============程序开始==================
 ORG	0000H		; 
	LJMP	START

	ORG	0003H		; 外部中断0入口
	reti			; undefined

	ORG	000BH		; 定时器0中断入口
	LJMP	INTI	;



;===============定时设置==================;

START: SETB P2.5    ;
       LCALL  DELAY ;
       LCALL  DELAY ;
       MOV JS1,#40
       MOV  PWM,#70
       MOV R1,#00H;

       MOV SP,#JS1
       MOV TMOD,#01H;    定时器工作方式样

       MOV TH0,#0FFH;
       MOV TIAOSHU,#0F6H;

       MOV TL0,TIAOSHU ;
       SETB   EA    ;
       SETB   ET0   ;
       SETB   TR0   ;

       MOV   R0,PWM
       MOV   R1, JS1
       MOV	R7,#0
       MOV	R6,#0


;==;===================================
MAIN:
	LCALL	PWMADJ
	LJMP	MAIN


 ;==;=============中断服务程序==========;
INTI:
       PUSH ACC
       PUSH PSW

       MOV   TH0,#0FFH                         ;DJNZ R0,NEXT;定时到
       MOV   TL0,#0F6H   ;

       JMP	INT_1


INT_1:
	LCALL	PWM_0
 ;==;===========重装初值=================
NEXT:  MOV TH0,#0FFH  ;
       MOV TIAOSHU,#0F6H;

       MOV TL0,TIAOSHU ;


;---------在这里加入我要做的工作---------
	LCALL	KEY
       POP PSW
        POP ACC

        RETI            ;中断返回
      

 ;=========================================================


 DELAY:
MOV	R5,#20
DELAY_1:
MOV	R4,#200
DELAY_2:
MOV	R3,#100
DJNZ	R3,$
DJNZ	R4,DELAY_2
DJNZ	R5,DELAY_1
RET

;---------------------------------------------------------------------
;---------------脉宽调节(按键实现)------------------------------------
;00H为P-ON增加标志
;01H为P-ON减少标志
PWMADJ:
	JNB	00H,PWMADJ_2
	CLR	00H
	CLR     C
	MOV	A,PWM
	ADD	A,#1
	MOV	PWM,A

	CLR	C
	MOV	A,#64
	SUBB	A,PWM
	MOV     JS1,A
	CLR	C

PWMADJ_2:
	JNB	01H,PWMADJ_1
	CLR	01H
	CLR      C
	MOV     A,PWM
	SUBB    A,#1
	MOV	PWM,A

	CLR     C
	MOV     A,#64H
	SUBB    A,#PWM;
	MOV     JS1,A
	CLR     C

PWMADJ_1:     MOV      A,PWM
           SETB     C
           SUBB     A,#63H
           JC      L08C3
           MOV      PWM,#01H

L08C3:     MOV      A,PWM
           CLR      C
           SUBB     A,#01H
           JNC     PWMADJ
           MOV      PWM,#63H;
          RET

		SETB	C
		SUBB	A,PWM
		JNC	L08F0
                CLR      P3.0


PWM_0:
	MOV	A,R7	;
	JZ	PWM_1
	JMP	PWM_3
PWM_1:
	MOV	A,R6
	JZ	PWM_2
	JMP	PWM_3
PWM_2:
	MOV	R7,PWM
	MOV	R6,JS1
PWM_3:
	CJNE	R7,#0,PWM_4
	JMP	PWM_6
PWM_4:
	MOV	C,PWM_EXT
	JC	PWM_5
	CPL	C
	MOV	PWM_EXT,C
PWM_5:
	DEC	R7
	LJMP	PWM_END
PWM_6:
	MOV	C,PWM_EXT
	JNC	PWM_7
	CPL	C
	MOV	PWM_EXT,C
PWM_7:
	DEC	R6
PWM_END:
	RET

       	END










































⌨️ 快捷键说明

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