STC12C5204AD_DSP2812_handle_program.rar

  • PUDN用户
    了解作者
  • C/C++
    开发工具
  • 18KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 17
    下载次数
  • 2011-01-11 09:20
    上传日期
基于STC12C5204AD的机器人手柄程序设计,通过该单片机的手柄程序,与DSP2812微处理器通信实现手柄控制机器人运动。
STC12C5204AD_DSP2812_handle_program.rar
  • STC12C5204AD_DSP2812_handle_program
  • stc5204new.LST
    10.8KB
  • stc5204ad_Opt.Bak
    1KB
  • stc5204ad.lnp
    36B
  • stc5204ad.hex
    2.2KB
  • stc5204ad.plg
    226B
  • stc5204ad.Uv2
    2.1KB
  • stc5204new.c
    3.8KB
  • stc5204new.OBJ
    9.3KB
  • STC12C5204AD.H
    17.3KB
  • stc5204ad_Uv2.Bak
    2KB
  • stc5204ad.Opt
    816B
  • stc5204ad.M51
    11.6KB
内容介绍
#include <STC12C5204AD.H> #define uchar unsigned char #define uint unsigned int void Delay(uint nTime); //void send_flag(uint flag); void send_byte(uint res); unsigned int i = 0xFF,i0=0xFF,j=0x01,j0=0x01; uint ADC_COUNT = 0x80; sbit p37 = P3^7; sbit p35 = P3^5; sbit p34 = P3^4; sbit p33 = P3^3; sbit p32 = P3^2; // sbit p17 = P1^7; sbit p16 = P1^6; sbit p15 = P1^5; sbit p14 = P1^4; sbit p13 = P1^3; sbit p12 = P1^2; sbit p11 = P1^1; sbit p10 = P1^0; void main (void) { EA = 0; PT0 = 0; ET0 = 0; IT0 = 0;IT1 = 0; EX0 = 0;EX1 = 0; TCON = 0X08; TMOD = 0X21; TL1 = 0XC4; TH1 = 0XC4; p10=0; p11=0; p12=0; p13=0; p14=0; p15=0; p16=0; // p17=0; p32=0; p33=0; p34=0; p35=0; p37=0; //串口设置 AUXR = 0xFF; SCON = 0x50; PCON = 0x80; IE = 0; IP = 0; //开定时器 TR1 = 1; TR0 = 1; TI = 1; //ADC_POWER_ON: ADC_CONTR = 0x80; Delay(32); //设io为开漏 P1M1 = ADC_COUNT; P1M0 = ADC_COUNT; //设置adc通道 ADC_CONTR =0xE7; Delay(5); //p32=0 快速 p32=1 慢速 p33=0 默认功能 p33=1 第二功能 while(1) { //获取ad的转化值 ADC_RES = 0 ; ADC_CONTR |= 0x08; // WAI_AD_FINISH: while((ADC_CONTR & 0x10) == 0){} ADC_CONTR &= 0xE7; j = ADC_RES; j = j>> 2; j += 0xC0; // p17=j; if(j0!=j) { j0=j; send_byte(j0); } //发送数据 if(p11==0&&p12==0&&p13==0&&p14==0&&p15==0&&p16==0&&p34==0&&p35==0&&p37==0&&p10==0) i=0xFF; //-------------------->>>>>>>>>>>>>>默认功能 手动<<<<<<<<<<---------------------- if(p33==0) { if(p12==1) {if(p32 ==1) i=0x21; //第二层推板前进 else i = 0x12; //前进 } if(p10==1) { if(p32 == 1) i=0x22; //第二层推板后退 else i = 0x10; //后退 } /* if(p37==1) {if(p32 ==1) i=0x73; //横向左 else i = 0x37; //向左旋转 } if(p11==1) { if(p32 == 1) i=0x88; //横向右 else i = 0x11; //向右旋转 } */ if(p13==1) { if(p32 == 1) i=0x31; //第一层 else i = 0x13; // } /* if(p16==1) { if(p32 == 1) i=0x61; //第二层 else i = 0x16; // } if(p34==1) { if(p32 == 1) i=0x43; //第三层 else i = 0x34; // } if(p35==1) { if(p32 == 1) i=0x53; //金顶层 else i = 0x35; // } */ if(p14==1) { if(p32 == 1) i=0x41; //下降 else i = 0x14; //上升 } /*if(p15==1) { if(p32 == 1) i=0x51; //倾倒 else i = 0x15; // } */ if(i0!=i) { i0=i; send_byte(i0); } //发送数据 } //--------------------->>>>>>>>>>>>>>>>切换自动功能<<<<<<<<<<<<<<<<------------------------------------------- if(p33==1) //第二功能 { if(p13==1) //执行第一步 i=0x1; if(p16==1) //执行第二步 i=0x2; if(p34==1) // i=0x3; if(p35==1) // i=0x4; if(p14==1) i=0x5; if(p15==1) i=0x6; if(p12==1) i=0x7; if(p37==1) i=0x8; if(p11==1) i=0x9; if(p10==1) i=0xA; if(i0!=i) { i0=i; send_byte(i0); } //发送数据 } } } void Delay(uint nTime) { int ii,jj,kk; for ( ii=0;ii<nTime;ii++ ) for ( jj=0;jj<200;jj++ ) for ( kk=0;kk<249;kk++ ) ; } /*void send_flag(uint flag) { SBUF = flag; while(TI == 0); TI = 0; SBUF = flag; while(TI == 0); TI = 0; } */ void send_byte(uint res) { SBUF = res; while(TI == 0); TI = 0; }
评论
    相关推荐