我用P3^4連了一個紅外熱釋傳感器,用P1^7連接了一個LED燈觀察效果,我想達到的效果是,有人來高亮,無人來微亮,老師能看看我的程序嗎,請問你說的占空比頻率和占空比大小控制是在哪部分改動呢/*設置一個定時器,控制P20口輸出PWM,頻率為100HZ,占空比可調,熱釋檢測有無人控制占空比*/
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit PWM=P1^7;
sbit LED1=P1^3;//LED1常亮作為跟PWM輸出時的亮度對比
sbit reshi=P3^4;//控制占空比
uchar time;
uint num;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
num=0;
TMOD=0x01;//定時器0工作方式1
TH0=(65536-100)/256;
TL0=(65536-100)%256;//賦值定時0.1ms
EA=1;
ET0=1;
TR0=1;
while(1)
{
LED1=0;
while(reshi==0)//無人高亮
{
delay(5);
while(reshi==0)
{
num=20;
}
}
while(reshi==1)//有人微亮
{
delay(5);
while(reshi==1)
{
num=0;
}
}
}
}
void timer0() interrupt 1
{
TR0=0;//賦值時先關閉定時器
TH0=(65536-100)/256;
TL0=(65536-100)%256;//賦值定時0.1ms
TR0=1;//再從新打開定時器
time++;
if(time>=100) time=0;//0.1ms*100=10ms,即100HZ;
if(time<=num) PWM=0;
else PWM=1;
} |