📄 pwm电机调速.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 + -