/*
占空比可調方波 晶振為12MHz:
P2^7和P2^6;接2個按鈕,
P2^7控制頻率10HZ到50HZ,按壓改變
P2^6控制占比10%到90%,按壓改變
*/
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
typedef int int16;
typedef char int8;
typedef unsigned int uint16;
typedef unsigned char uint8;
uint16 t=0,f=100,w=50;
sbit OUT=P0^0; // 輸出端
sbit KF=P2^7; // 改變頻率按鈕
sbit KW=P2^6; // 改變占寬按鈕
void init()
{
TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
ET0=1;
TR0=1;
EA=1;
}
void time0() interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
t++; //t為1ms
if(t>=f) t=0;
}
void main()
{
init();
while(1)
{
if(KF==0) //改變頻率
{
f=f-10;
if(f<=10) f=100;
while(KF==0);
w=f/10;
}
if(KW==0) //改變占比
{
w=w+f/10;
if(w>=f) w=f/10;
while(KW==0);
}
if(t<w) OUT=1; //單個周期
else OUT=0;
}
}