;定时器1初始化
MOV TMOD,#00010000B ;方式1,16位定时器模式
MOV PWM_HIGH_L,#LOW(65536 - cycle_high)
MOV PWM_HIGH_H,#HIGH(65536 - cycle_high)
MOV PWM_LOW_L,#LOW(65536 - (cycle - cycle_high))
MOV PWM_LOW_H,#HIGH(65536 - (cycle - cycle_high))
SETB P_PWM1 ;先输出高
MOV TL1,PWM_HIGH_L
MOV TH1,PWM_HIGH_H
SETB ET1 ;T1开中断
SETB EA ;开总中断
SETB TR1 ;开定时器1
MAIN_LOOP:
;主循环
SJMP $
;**********************************************************************
;**********************************************************************
;定时器1中断服务程序
TIMER1_ISR:
USING 1 ; register bank 1
PUSH ACC
PUSH PSW
JB P_PWM1,PWM_OUT_LOW ;如果输出为高则,输出低
SETB P_PWM1
MOV TL1,PWM_HIGH_L
MOV TH1,PWM_HIGH_H
JMP TIMER_ISR_RET
PWM_OUT_LOW:
CLR P_PWM1
MOV TL1,PWM_LOW_L
MOV TH1,PWM_LOW_H
TIMER_ISR_RET:
POP PSW
POP ACC
RETI
;*********************************************************************
;
END
本文关键字:子程序 51单片机,单片机-工控设备 - 51单片机
上一篇:C 语言在单片机开发中的应用