📄 pwm.c
字号:
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define POWER_MIN 60
#define ms_waiteAA 1
#define ms_waite55 2
#define ms_waiteA5 3
#define ms_waiteD1 4
//#define ms_waiteD2 5
sbit pwm1=P1^5;
sbit pwm2=P1^6;
uchar power1,power2,recdata;
uchar message=0;
uchar receive=0;
void delay(uchar count)//延时
{
uchar i,k;
i=0;
k=0;
for (k=0;k<count;k++)
for (i=0;i<30;i++);
}
void Initial(void)
{
IT0=1;
IT1=1;
IE0=0;
IE1=0;
EX0=1;
EX1=1;
SCON=0X50;
TMOD=0x20;
TH1=0xF3;//0xF3;2400
TL1=0xF3;
TR1=1;
ES=1;
PS=1;
EA=1;
power1=61;//0~80
power2=61;
message=ms_waiteAA;
}
void pwm(void)
{
uchar k=0;
while(k<=POWER_MIN)
{
if (power1<POWER_MIN)
if (k>=power1)
pwm1=0;
if (power2<POWER_MIN)
if (k>=power2)
pwm2=0;
delay(1);
k++;
}
pwm1=1;
pwm2=1;
}
void int0 (void)interrupt 0
{
pwm();
}
void int1 (void)interrupt 2
{
pwm();
}
void receiveINT (void) interrupt 4
{
uchar d;
if (TI==1)
TI=0;
else
RI=0;
d=SBUF;
switch (message)
{
case ms_waiteAA:
if (d==0xAA)
message=ms_waite55;
else
message=ms_waiteAA;
break;
case ms_waite55:
if (d==0x55)
message=ms_waiteA5;
else
message=ms_waiteAA;
break;
case ms_waiteA5:
if (d==0xA5)
message=ms_waiteD1;
else
message=ms_waiteAA;
break;
case ms_waiteD1:
recdata=d;
receive=1;
message=ms_waiteAA;
break;
default : message=ms_waiteAA;
}
}
main()
{
Initial();
while(1)
{
if (receive==1)
{
receive=0;
switch (recdata)
{
case 0x0F://上
if (power1>20)
power1-=10;
break;
case 0x05://下
if (power1<POWER_MIN)
power1+=10;
break;
case 0x0A://左
if (power2<POWER_MIN)
power2+=10;
break;
case 0x09://右
if (power2>20)
power2-=10;
break;
default :
break;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -