Tình hình là em có đang làm mạch tạo xung vuông có thay đổi f(1-100hz) đồng thời có điều biến độ rồng xung nữa. Cái điều biến PWM thì em cũng làm được rồi, nhưng còn thay đổi f nữathì khó quá. Bác nào giúp em với:
code;
#include <REGX51.H>
sbit PWM = P2^3;
sbit TANG = P1^2;
sbit GIAM = P1^5;
unsigned char dem=0,tocdo=50;
bit TANG1=1,TANG0=1,GIAM0=1,GIAM1=1;
//========================================
void timer0(void) interrupt 1
{
TR0 = 0;
TF0 = 0;
dem++;
if(dem > 100)
dem = 0;
if(dem<tocdo)
PWM = 1;
else
PWM = 0;
TR0 = 1;
}
void phimnhan()
{
TANG0=TANG1;TANG1=TANG;
if((TANG0==1)&&(TANG1==0))
tocdo=tocdo+10;
if(tocdo==110)tocdo=100;
GIAM0=GIAM1;GIAM1=GIAM;
if((GIAM0==1)&&(GIAM1==0))
tocdo=tocdo-10;
if(tocdo==-10)tocdo=0;
}
void main(void)
{
TMOD = 0x02;
IE = 0x82;
TH0=TL0=-100; // tao tan so 0.1 ms
TR0 = 1;
PWM=0;
while(1)
{
phimnhan();
}
}