大部分单片机都有pwm功能直接配置寄存器使能就可以输出对应的频率方波。
#includesbit wave=P1^0
void SetupTimer0()
{
TMOD &= 0XF0//仅保留T1信息
TMOD |= 0X02//设置T0: 定时功能,方式2,自动重载8位定时器/计数器
TH0 = 256-250//定时每0.25ms中断一次
TL0 = 256-250
TR0 = 1 //开启定时器
ET0 = 1 //定时器0中断打开
}
data unsigned char us250
data unsigned int ms
bit WAVE //用以记住当前wave的状态
void Timer0_ISR() interrupt 1 //定时中断服务程序,为按键消抖服务
{
if (++us250<4) return
us250=0++ms
if (ms<10) return
//每10ms波形变化一次,20ms完成一个波形,所以波形是50Hz的
ms=0
WAVE=~WAVEwave=WAVE //方波输出
}
void main()
{
us250=ms=0
wave=WAVE=0
SetupTimer0()
EA = 1 //全局中断打开
while(1) //在中断函数中实现方波输出
}