📄 脉冲发生.asm
字号:
;晶振12M 89S51由低到高最高到低
PWM EQU 7FH ;PWM赋初始值
PWM_5 EQU 71H
SEC EQU 56H ;秒计数单元
Min EQU 55H ;分计数单元
PWM_1 EQU 80H ; 次数6
PWM_2 BIT 00H ;加减标志位
PWM_3 BIT 01H;3分计数标志位
SEC_5 EQU 6FH ;5秒计数
PWM_4 BIT 02H;输出脚停止位
;----------------------------
ORG 0000H
SJMP START
ORG 000BH
SJMP INTT0
ORG 0030H
;----------------------------
;主程序
;定时器0工作在模式1
;----------------------------
START:
MOV SP,#30H;
MOV TMOD,#11H;
MOV PWM,#62H;(62FFH,D2FFH)
MOV TH0, PWM ; ;频率调节
MOV TL0,#0FFH ; ;
SETB EA;
SETB ET0;
SETB TR0;
MOV PWM_1,#0;
MOV PWM_5,#0;
MOV SEC,#0;
MOV SEC_5,#0;
MOV Min,#0;
clr PWM_4;
clr PWM_3;
clr PWM_2;
MOV P1,#0FFH
MOV P3,#0FFH
MOV P2,#0FFH
MOV P0,#0FFH
LOOP:
SJMP LOOP;
;------------------------------
;T0中断服务子程序 (频率)
;------------------------------
INTT0:PUSH ACC ;ACC 入栈
PUSH PSW ;PSW 入栈
JB PWM_4 ,D_4
CPL P1.0 ;输出脚
INC PWM_1 ; ;同频率下脉冲个数6个
MOV A,PWM_1;
CJNE A,#6,D_1;
mov PWM_1,#0;
CPL P1.2
INC PWM_5 ; ;同频率下脉冲个数6个
MOV A,PWM_5;
CJNE A,#5,D_6
CPL P1.4
mov PWM_5,#0;
D_6: JB PWM_2 ,D_2;
INC PWM ; 频率调节 加
MOV A,PWM ;
CJNE A,#0D2H,D_1;到最高了吗
setb PWM_2;
D_2: JB PWM_3 ,D_3;
INC SEC
MOV A,SEC
CJNE A,#15, D_1
mov SEC,#0;
INC Min
MOV A, Min
CJNE A,#180, D_1
mov Min,#0;
setb PWM_3;
D_3: DEC PWM ; 频率调节减
MOV A,PWM;
CJNE A,#62H,D_1 ; 到最低了吗
setb PWM_4
D_4: setb P1.0
setb P1.2
setb P1.4
INC SEC_5
MOV A, SEC_5
CJNE A,#125, D_1
MOV SEC_5,#0
clr PWM_2;
clr PWM_3
clr PWM_4
D_1: MOV TH0, pwm ; ;
MOV TL0,#0FFH ;
POP PSW
POP ACC
RETI;
END ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -