|
本帖最后由 1967440623 于 2018-6-23 14:28 编辑
以下是程序:
#include<reg51.h>
typedef unsigned char u8 ;
typedef unsigned int u16 ;
sbit PWM=P1^1; //P1.0?????????
void uartsentdata(u8 num);
//void numdeal();
u8 receiveData;
u8 num;
u8 code pct[20] ={5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100};
u8 n[] ={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
u16 freq = 0xff06;
u8 m = 0;
void Timer0Init()
{
TL0=freq;
TH0=freq>>8;
// TL0=0x06;
// TH0=0xff; //?????ж????????γ?????????ε?????ж????????
TR0=1; //????????0
}
void initaluart()
{
TMOD=0X21; //T1???????2??T0???????1
SCON=0x50;
PCON=0x80;
TH1=0xf3;
TL1=0xf3;
TR1=1; //????????
Timer0Init(); //T0?????????
EA=1; //?????ж?
ES=1; //???????ж?
ET0=1; //???????0?ж?
}
void main()
{
initaluart();
while(1);
}
void Usart() interrupt 4//?ж????
{
u8 i;
u8 a;
m=SBUF;
receiveData=SBUF;//??????????????
RI = 0;//????????ж???
SBUF=m;//????????????????????????
while(!TI);//??????????????
TI=0;//????????????
uartsentdata(m);
for(i=0;i<21;i++)
{
if(m == n)
{
uartsentdata(n);
}
}
for(a=0;a<21;a++)
{
if(m == n[a])
{
num=pct[a];
}
}
}
void uartsentdata(u8 num)
{
SBUF=num;//????????????????????????
while(!TI);//??????????????
TI=0;//????????????
}
void Time0() interrupt 1 using 1 //?????0???ж?????1
{
u16 tempfreq;
tempfreq = freq;
if(PWM == 0)
{
PWM = 1;
tempfreq = freq - num;
TL0=tempfreq;
TH0=tempfreq>>8; //?????ж????????γ?????????ε?????ж????????
}
else
{
PWM = 0;
tempfreq = freq + num;
TL0=tempfreq;
TH0=tempfreq>>8; //?????ж????????γ?????????ε?????ж????????
}
// PWM=!PWM; //?????????2KHZ????
}
|
|