#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
#define zhouqi 2180
uchar order;
uint PWM[8]={1308,1308,1308,1308,1308,1308,1308,1308};
void initPWM();
void main()
{
initPWM();
P1=-PWM[0]/256;
P2=-PWM[0]%256;
while(1);
}
void t0() interrupt 1
{
switch(order)
{
case 1: P0=0x01;
TH0=-PWM[0]/256;
TL0=-PWM[0]%256;
break;
case 2: P0=0x00;
TH0=-(zhouqi-PWM[0])/256;
TL0=-(zhouqi-PWM[0])%256;
break;
case 3: P0=0x02;
TH0=-PWM[1]/256;
TL0=-PWM[1]%256;
break;
case 4: P0=0x00;
TH0=-(zhouqi-PWM[1])/256;
TL0=-(zhouqi-PWM[1])%256;
break;
case 5: P0=0x04;
TH0=-PWM[2]/256;
TL0=-PWM[2]%256;
break;
case 6: P0=0x00;
TH0=-(zhouqi-PWM[2])/256;
TL0=-(zhouqi-PWM[2])%256;
break;
case 7: P0=0x08;
TH0=-PWM[3]/256;
TL0=-PWM[3]%256;
break;
case 8: P0=0x00;
TH0=-(zhouqi-PWM[3])/256;
TL0=-(zhouqi-PWM[3])%256;
break;
case 9: P0=0x10;
TH0=-PWM[4]/256;
TL0=-PWM[4]%256;
break;
case 10:P0=0x00;
TH0=-(zhouqi-PWM[4])/256;
TL0=-(zhouqi-PWM[4])%256;
break;
case 11:P0=0x20;
TH0=-PWM[5]/256;
TL0=-PWM[5]%256;
break;
case 12:P0=0x00;
TH0=-(zhouqi-PWM[5])/256;
TL0=-(zhouqi-PWM[5])%256;
break;
case 13:P0=0x40;
TH0=-PWM[6]/256;
TL0=-PWM[6]%256;
break;
case 14:P0=0x00;
TH0=-(zhouqi-PWM[6])/256;
TL0=-(zhouqi-PWM[6])%256;
break;
case 15:P0=0x80;
TH0=-PWM[7]/256;
TL0=-PWM[7]%256;
break;
case 16:P0=0x00;
TH0=-(zhouqi-PWM[7])/256;
TL0=-(zhouqi-PWM[7])%256;
order=0;
break;
default:order=0;
}
order++;
}
void initPWM()
{
order=1;
TMOD=0X11;
TH0=(65536-1500)/256;
TL0=(65536-1500)%256;
EA=1;
TR0=1;
ET0=1;
}
我自己的程序,简单看看。顺便再提提建议。
|