假设单片机的晶振是12MHz,利用T0和P1.6输出矩形脉冲,波形图如下
分析:假设高电平维持时间是 td=40μs,低电平维持时间是5td,则可设置一个基本定时单元td,实现占空比不为50%的周期矩形脉冲输出。
选择T0模式0,13位定时器,初值X=8152=1111 1110 11000,高八位送TH0,低5位送TL0,TL0高三位默认0,故TH0 = #0FEH,TL0 = 18H
程序实现:
MAIN:MOV R5,#05H;输出5次低电平
MOV TMOD,#00H;定时器初始化
MOV TH0,#0FEH
MOV TL0,#18H
SETB TR0;定时器启动
CLR P1.6;初始输出为低电平
CLR 20H.0;输出低电平标志位
CONT:JBC TF0,OVFL;等待查询,此时波形输出中
AJMP CONT
OVFL:MOV TH0,#0FEH;定时器重装
MOV TL0,#18H
JB 20H.0,LOW;若20H.0=1,跳转到LOW输出5次低电平
SETB P1.6;否则输出1次高电平,置20H.0=1,使得下次跳转到LOW
SETB 20H.0
LOW:CLR P1.6;输出5次低电平
DJNZ R5,CONT
MOV R5,#05H;记得重装寄存器
CLR 20H.0
GOON:SJMP CONT
总结 :占空比不是一半,可设置基本定时单元,控制高低电平输出的时间。