首页 » 技术SOS » 汽车电子 » 传感器/执行器 » 求STC12C5A60S2的内部A/D转换程序!

求STC12C5A60S2的内部A/D转换程序!

助工
2014-07-23 09:13:07     悬赏5分
之前一直用STC12C5A60S2的内部A/D将采集的温度转换成数据!可是写了好多次都没有成功!请用这个芯片写过A/D程序的大神贴个程序!以便参考学习!
分享
关键词: A/D, STC12C5A60S2  
高工
2014-07-28 10:50:17
1楼

stc的下载软件里有,版本6以上的

高工
2014-07-28 11:24:16
2楼

其实STC12C5A60S2手册中都有参考例程的

菜鸟
2014-07-31 14:55:48
3楼

void AD0_CY()//端口0电压采样 { ADC_CONTR=0x88;//start=1,启动转换AD0路 delay(); delay(); do{ i=ADC_CONTR; i&=0x10; i=4;} while(!i); TMP=ADC_RES; ADC_CONTR =0x80; //send_char(TMP); } void AD1_CY()//端口1电压采样 { ADC_CONTR=0x89;//start=1,启动转换AD1路 delay(); delay(); do{ i=ADC_CONTR; i&=0x10; i=4;} while(!i); TMP=ADC_RES; ADC_CONTR =0x80; //send_char(TMP); }

菜鸟
2014-07-31 14:58:34
4楼

void SYS_INIT()//系统初始化 { AUXR=0x10;//EXTRAM位不能置0,否则引起地址冲突(0x0000--0x0400) AUXR1=0x10;//S2_P4=1 XCS=0; // P3M0=0xfb; //1111 1001 // P3M0&=0x39;//0011 1001 P32 P33 P34 P35设定为强推挽输出 P3M0=0x30; //0011 0000 P34 P35设定为强推挽输出(P_GF P_BAT) P3M1=0;// //P2M0=0xff; P2M0=0; P2M1=0; P0M0=0xff; P0M1=0; P4SW=0x70;//把P4口P4^6,P4^5,P4^4管脚设置为I/O口 P4M0=0x03;//把p40 p41口设置为强推挽输出 P4M1=0; P0=0; // P2=0xff; // IE = 0x0; //中断使能位,0关闭所有中断 //*****串口1**模式1**波发*9600// AUXR &= 0xf7; //波特率不倍速 // S2CON = 0x50; //8位数据,可变波特率 BRT = 0xFD; //设定独立波特率发生器重装值 //AUXR &= 0xfb; //独立波特率发生器时钟为Fosc/12,即12T //AUXR |= 0x10; //启动独立波特率发生器 IE2=0X01; //开启串口1中断 TMOD = 0x21; // 定时器1工作于8位自动重载模式, 用于产生波特率 TH1 = 0xFA; // 波特率 9600 11.0592MHz TL1 = 0xFA; SCON = 0x50; // 设定串行口工作方式 PCON = 0x80; // 波特率不倍增 IE=0X90; TR1 = 1; //启动定时器1 IT0=0; //外部中断0-低电平触发 1-下降沿触发 IE0=0; //外部中断0标志位 EX0=0; //外部中断使能位,1时有效 // TMOD=0x21; TL0=T1MS; TH0=T1MS8; TR0=1; //启动定时器0(计时开始) ET0=1; //定时器0中断使能位 EA=0;//关总中断 TMP=WDT_CONTR; //读取看门狗控制器值,冷启动时WDT_FLAG=0; TMP&=0x80;//提取WDT_CONTR.7位,即溢出标志位 if(TMP==0x80) //即WDT_FLAG=1,则是看门狗复位启动 ,须 { //send_char('f'); //恢复看门狗复位前各电源板状态,前端输入状态,充电板状态 } //看门狗控制器应在主程序循环中重新设置该值,且主循环中重设置 //最长时间不能超过看门狗溢出时间,否则将溢出,进入看门狗中断 //WDT_CONTR=0x3e;//watch dog set 4.55s溢出 }