|
這是樓主高一編的程序,如果那里不對的地方望大家指出批評
#include<STC12C5A60S2.H>
sbit shang=P1^0;
sbit xia=P1^1;
sbit zuo=P1^2;
sbit you=P1^5;
sbit jiasu=P1^6;
sbit jiansu=P1^7;
sbit ENA=P3^2;
sbit ENB=P3^3;
sbit deng=P2^0;
///*=======================================================================
//【函數(shù)原形】:void pwm0_1()
//【功能說明】:PCA時鐘源 控制寄存器 計數(shù)初值 的初始化設(shè)置
//【編寫日期】:2014年2月25日
//========================================================================*/
void pwm0_1()
{
CCON=0x00;
CL=0;
CH=0;
CMOD=0x00;
//選擇PCA/PWM時鐘源=系統(tǒng)時鐘/12
CCAP0H = CCAP0L =0;
//賦初值
CCAP1H = CCAP1L =0;
//賦初值
CCAPM0 = 0x42;
//P1.3 8位PWM輸出,無中斷
CCAPM1 = 0x42;
//P1.4 8位PWM輸出,無中斷
PCA_PWM0=0x00;
//在PWM模式下與CCAP0H組成9位數(shù)
PCA_PWM1=0x00;
//在PWM模式下與CCAP1H組成9位數(shù)
}
/*=======================================================================
【函數(shù)原形】:void PWM_R(unsigned char Fosc_1)
【功能說明】:PWM_R控制寄存器設(shè)置
【參數(shù)說明】:Fosc_0 Fosc_0為占空比設(shè)置形參
========================================================================*/
void PWM_L(unsigned int Fosc_0)
{
CCAP0H=CCAP0L=Fosc_0;
}
/*=======================================================================
【函數(shù)原形】:void PWM_L(unsigned char Fosc_1)
【功能說明】:PWM_L控制寄存器設(shè)置
【參數(shù)說明】:Fosc_1 Fosc_1為占空比設(shè)置形參
========================================================================*/
void PWM_R(unsigned int Fosc_1)
{
CCAP1H=CCAP1L=Fosc_1;
//此代碼用于控制輸出的占空比
}
void S_T()
{
P1M1=0x00;
P1M0=0x00;
pwm0_1();
//PWM的初始化設(shè)置
// TMOD=0x01;
// TH0=0x8a;
// TL0=0xd0;
// ET0=1;
// TH1=0X3C;
// TL1=0X01;
// ET1=1;
AUXR=0x80;
//定時器初始化
EA=1;
}
/*=======================================================================
【函數(shù)原形】:void delay_ms(unsigned int T)
【參數(shù)說明】:T 延時時間設(shè)定 T 0~65535
【函數(shù)功能】:ms級延時函數(shù)
【編寫日期】:2014年2月26日
========================================================================*/
void ys1ms(unsigned int u) //1ms
{
unsigned char x,ccc;
unsigned int bbb;
for (bbb=0;bbb<u;bbb++)
{
x=12;
ccc=169;
do
{
while (--ccc);
}
while (--x);
}
}
int main()
{
unsigned char qjsd;
qjsd=185;
S_T();
ENA=0;
ENB=0;
PWM_R(128);
PWM_L(128);
CR=1;
while(1)
{
if(shang==0) //上
{
PWM_L(qjsd);
ENA=1;
PWM_R(qjsd);
ENB=1;
if(shang==1)
{
ENA=1;
ENB=1;
}
}
else if(xia==0) //下
{
PWM_L(20);
ENA=1;
PWM_R(20);
ENB=1;
}
else if(zuo==0) //左
{
PWM_L(19);
ENA=1;
PWM_R(235);
ENB=1;
}
else if(you==0) //
{
PWM_L(235);
ENA=1;
PWM_R(19);
ENB=1;
}
else if(jiasu==0)
{
if((qjsd>=160)&&(qjsd<=240))
{
qjsd=qjsd+2;
ys1ms(200);
}
else if(qjsd<160||qjsd>240)
{
if(qjsd<160)
{
qjsd=160;
}
else
{
qjsd=240;
}
}
}
else if(jiansu==0)
{
if((qjsd>=160)&&(qjsd<=240))
{
qjsd=qjsd-2;
ys1ms(200);
}
else if(qjsd<160||qjsd>240)
{
if(qjsd<160)
{
qjsd=160;
}
else
{
qjsd=240;
}
}
}
else
{
PWM_R(127);
PWM_L(127);
ENA=0;
ENB=0;
}
}
}
|
評分
-
查看全部評分
|