最近做了个小东西,使用的是很简单的一个单片机STC15F104W,但是功能很好用。这里简单介绍下本人使用STC15F104W实现的PWM脉冲高电平方式。
本人要捕获的PWM脉冲周期是20ms,高电平介于1~2ms。
主要使用的是外部中断和定时器,STC15F104W有4个外部中断,这里采用外部中断0,可以响应上升沿和下降沿。
(P3.2)外部中断0捕获引脚P3.2的上升沿和下降沿:上升沿开启定时器0计时,下降沿终止定时器0计时,这样读取计时寄存器的值即可获得高电平时间:TH0*256+TL0;
具体程序段:
//*******************************************************
//函数名称:void exint0() interrupt 0
//函数功能:外部中断0;上升沿和下降沿触发中断
void exint0() interrupt 0 //INT0中断入口(P3.2)
{
if(P32 == BIT001) //上升沿
{
TL0 = 0x00; //设置定时初值;0 0x00=0=(65536-65536)%256
TH0 = 0x00;