微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于STC89C52单片机定时器产生PWM的一个问题,有赏!

关于STC89C52单片机定时器产生PWM的一个问题,有赏!

时间:10-02 整理:3721RD 点击:
周期10ms,占空比开始为5ms,晶振频率11.0592MHZ
输出LED常亮,无变化
求教啊
#include<reg52.h>            
#include<intrins.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sbit V_OUT=P1^0;
sbit V_OUT1=P1^4;
uint t1=56320,t2=60928;
void timer0_timer1_init(void)
{
        TMOD=0x11;
        TH0=0xDC;
        TL0=0x00;
        TR0=1;
        ET0=1;
        TH1=0xEE;
        TL1=0x00;
        TR0=1;
        ET0=1;
        EA=1;
}
void timer0()interrupt 1 using 0
{
        V_OUT=~V_OUT;
        TH0=t1/256;
        TL0=t1%256;
}
void timer1()interrupt 3 using 1
{
        V_OUT=~V_OUT;
        TH1=t2/256;
        TL1=t2%256;
}
void main(void)
{
        timer0_timer1_init();
        V_OUT=1;
        while(1)
        {
                if(t1<56320)t1=56320;
                if(t2<60928)t2=60928;
                t2+=1000;
        }       
}解决这个问题,并解决闪烁问题,以身相许!

自己先踢自己一脚

一般using 0是不能使用的,至少从using 1开始

闪烁的问题就是周期问题,周期10ms没问题

比较笨,再想想,谢谢您啦

谢谢啦谢谢啦谢谢啦谢谢啦谢谢啦

谢谢啦谢谢啦谢谢啦

重新写了一个,更改了一下中断服务程序里的定时初值,可以实现呼吸灯效果

using 0为什么不能用?求教

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top