找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4666|回复: 0
打印 上一主题 下一主题
收起左侧

无线发射模块控制遥控车程序

[复制链接]
跳转到指定楼层
楼主
这是楼主高一编的程序,如果那里不对的地方望大家指出批评
#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;

                }
        }
}

288主图.jpg (450.59 KB, 下载次数: 142)

288主图.jpg

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表