资讯详情

MMA7260的STC12C5410AD单片机程序

头文件可以在本站的软件下载区下载 在51hei.com上搜索即可找到

#include "C12C5410AD.H"

sbit MMA7260sleep=P1^0; //MMA7260休眠与否,0-休眠;1-正常工作 //--------------------------------------- //名称: 延时约1毫秒函数

//----------------------------------------- void delay1ms() { word k; for(k=0;k<12000;k++); } void delayms(word ms) { word k,j; for(j=0;j<ms;j++) for(k=0;k<12000;k++); }

//--------------------------------------- //名称: 串口数据发送函数

//----------------------------------------- void uart_putchar(byte ch) { =0; if (ch == '\n') { SBUF= 0x0d; //output'CR' while(!TI); return; } SBUF=ch; while(!TI); } //--------------------------------------- //名称: 串口数据接收函数

//----------------------------------------- byte uart_getchar(void) { if(RI) { RI=0; return SBUF; //有数据接收到,返回1 } else { return 0; //无数据接收到,返回0 } }

void putstr(char ch[]) { byte ptr=0; while(ch[ptr]) { uart_putchar((byte)ch[ptr++]); } } //--------------------------------------- //名称: 模数转换函数(8位)

//----------------------------------------- byte ReadAD(byte ch) { A_DATA = 0; //清A/D转换结果寄存器 ADC_COR = 0xF8|ch; //0000,1000ADCS = 1,启动转换 delay1ms(); do{;} while((ADC_CTR&0x10)==0); //0001,0000等待A/D转换结束 ADC_CONTR = ADC_CONTR&0xE7; //1110,0111清ADC_FLAG位,停止A/D转换 return ADC_DATA; } /*************************************************** 把0--255的数值转化为3位字符串格式 ****************************************************/ void Byte2Str3(char zifu[],byte val,byte StartPtr) { char characters[11]="0123456789"; byte tv=0; tv=val/100; zifu[StartPtr++] = characters[tv]; tv=(val%100)/10; zifu[StartPtr++] = characters[tv]; tv=val%10; zifu[StartPtr] = characters[tv]; //zifu[3] = '\0'; return; }

//--------------------------------------- //名称: 初始化函数函数

//----------------------------------------- void init_ad(void) { P1M0=0x07; //设置P1.012为高阻输入,以准备AD P1M1=0x00; ADC_CONTR = 0xf8; //1000,0000打开A/D转换电源 delay1ms(); ADC_CONTR = ADC_CONTR&0xe0; //1110,0000 清ADC_FLAG,ADC_START位和低3位

}

void init_uart(void) //P3.0,3.1 { TMOD=0x20; //TH1=256-INT(22118400/32/12/baud+0.5) TH1=0xfa; //0xfa,9600 =0xfd; //0xff,57600 PCON=0x00; TR1=1; SCON=0xd0; } void init_dev(void) { init_ad(); init_uart(); }

//--------------------------------------- //名称: 主函数

//----------------------------------------- void main() { char txtbuf[17]="\n ADC Val: "; byte adbuf; init_dev(); putstr("\n MMA7260 starts working!\n"); MMA7260sleep=1;//MMA7260开始工作 while(1) { //ADC adbuf=ReadAD(0); //X AXIS Byte2Str3(txtbuf,adbuf,11); putstr(txtbuf); adbuf=ReadAD(1); //Y AXIS Byte2Str3(txtbuf,adbuf,11); putstr(txtbuf); adbuf=ReadAD(2); //Z AXIS Byte2Str3(txtbuf,adbuf,11); putstr(txtbuf); delayms(300); } }

-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台