MMA7260的STC12C5410AD单片机程序
#include "STC12C5410AD.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 for(k=0;k<12000;k++); } //--------------------------------------- //名称: 串口数据发送函数 //----------------------------------------- void uart_putchar(byte ch) { TI=0; if (ch == ) { SBUF= 0x0d; //outputCR 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) { ADC_DATA = 0; //清A/D转换结果寄存器 ADC_CONTR = 0xF8|ch; //0000,1000ADCS = 1,启动转换 delay1ms(); do{;} while((ADC_CONTR&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] = ; 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 TL1=0xfd; //0xff,57600 PCON=0x00; TR1=1; SCON=0xd0; } void init_dev(void) { init_ad(); init_uart(); } //--------------------------------------- //名称: 主函数 //----------------------------------------- void main() { char txtbuf[17]="ADC Val: "; byte adbuf; init_dev(); putstr("MMA7260 starts working!"); 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); } }
MMA7260STC12C5410AD单片 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)