|
这是楼主高一编的程序,如果那里不对的地方望大家指出批评
#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;
///*=======================================================================
//【函数原形】:void pwm0_1()
//【功能说明】:PCA时钟源 控制寄存器 计数初值 的初始化设置
//【编写日期】:2014年2月25日
//========================================================================*/
void pwm0_1()
{
CCON=0x00;
CL=0;
CH=0;
CMOD=0x00;
//选择PCA/PWM时钟源=系统时钟/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位数
PCA_PWM1=0x00;
//在PWM模式下与CCAP1H组成9位数
}
/*=======================================================================
【函数原形】:void PWM_R(unsigned char Fosc_1)
【功能说明】:PWM_R控制寄存器设置
【参数说明】:Fosc_0 Fosc_0为占空比设置形参
========================================================================*/
void PWM_L(unsigned int Fosc_0)
{
CCAP0H=CCAP0L=Fosc_0;
}
/*=======================================================================
【函数原形】:void PWM_L(unsigned char Fosc_1)
【功能说明】:PWM_L控制寄存器设置
【参数说明】:Fosc_1 Fosc_1为占空比设置形参
========================================================================*/
void PWM_R(unsigned int Fosc_1)
{
CCAP1H=CCAP1L=Fosc_1;
//此代码用于控制输出的占空比
}
void S_T()
{
P1M1=0x00;
P1M0=0x00;
pwm0_1();
//PWM的初始化设置
// TMOD=0x01;
// TH0=0x8a;
// TL0=0xd0;
// ET0=1;
// TH1=0X3C;
// TL1=0X01;
// ET1=1;
AUXR=0x80;
//定时器初始化
EA=1;
}
/*=======================================================================
【函数原形】:void delay_ms(unsigned int T)
【参数说明】:T 延时时间设定 T 0~65535
【函数功能】:ms级延时函数
【编写日期】: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;
}
}
}
|
评分
-
查看全部评分
|