怎么用80c51产生PWM信号?用C语言怎么编程,我这里有个汇编的,我自己编的不好使,不知道怎么回事。
來源:互聯網 2010-01-13 23:08:29 評論
分類: 電腦/網絡 >> 程序設計 >> 其他編程語言
問題描述:
这是我编得程序:用80c52通过L298控制电机转速
下面是程序:
#include
#define uchar unsigned char
#define uint unsigned int
uchar Dat,time,percent;
sbit v1=P2^5;//v1,v2,v3,v4控制转速,p1p2其它口控制方向
sbit v2=P2^6;
sbit v3=P1^5;
sbit v4=P1^6;
void serials(void) interrupt 4 using 0{
if(RI)
{
Dat=SBUF;
P2=Dat;
P1=Dat;
RI=0;
SBUF=0x51;
}
else if(TI)
{
TI=0;
}
}
void setspeed(uchar x)
{
if(x>63)
if(x>126) percent=99;
else percent=60;
else if(x>31) percent=30;
else percent=1;
}
void pulse(void) interrupt 1 using 1
{
setspeed(Dat);
TH0=0xFD;
TL0=0xFD;
ET0=1;
if(time==percent) {v1=v2=v3=v4=0;time++;}
else if(time==100) {time=0;v1=v2=v3=v4=1;time++;}
}
void main()
{
P1=0;P2=0;
PT1=1;
PS=1;
IE=0X9a;
TMOD=0x22;
TL0=0xFD;TH0=0xFD;
TL1=0xFD;TH1=0xFD;
TCON=0x54;
SCON=0xd8;
PCON=0x00;
}
參考答案:
实现PWM两个基本点:
1. 根据你想要的开关频率计算循环周期(如1kHz);
2. 每个循环中根据调制公式计算占空比,并输出方波。
[b]分类:[/b] 电脑/网络 >> 程序设计 >> 其他编程语言[br][b]问题描述:[/b][br]这是我编得程序:用80c52通过L298控制电机转速
下面是程序:
#include
#define uchar unsigned char
#define uint unsigned int
uchar Dat,time,percent;
sbit v1=P2^5;//v1,v2,v3,v4控制转速,p1p2其它口控制方向
sbit v2=P2^6;
sbit v3=P1^5;
sbit v4=P1^6;
void serials(void) interrupt 4 using 0{
if(RI)
{
Dat=SBUF;
P2=Dat;
P1=Dat;
RI=0;
SBUF=0x51;
}
else if(TI)
{
TI=0;
}
}
void setspeed(uchar x)
{
if(x>63)
if(x>126) percent=99;
else percent=60;
else if(x>31) percent=30;
else percent=1;
}
void pulse(void) interrupt 1 using 1
{
setspeed(Dat);
TH0=0xFD;
TL0=0xFD;
ET0=1;
if(time==percent) {v1=v2=v3=v4=0;time++;}
else if(time==100) {time=0;v1=v2=v3=v4=1;time++;}
}
void main()
{
P1=0;P2=0;
PT1=1;
PS=1;
IE=0X9a;
TMOD=0x22;
TL0=0xFD;TH0=0xFD;
TL1=0xFD;TH1=0xFD;
TCON=0x54;
SCON=0xd8;
PCON=0x00;
}[br][b]参考答案:[/b][br]实现PWM两个基本点:
1. 根据你想要的开关频率计算循环周期(如1kHz);
2. 每个循环中根据调制公式计算占空比,并输出方波。