关于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;
}
}解决这个问题,并解决闪烁问题,以身相许!
输出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为什么不能用?求教