心率传感器c语言函数定义 心率传感器arduino( 二 )


{
putchar(ucStr2[i]);
}
for(i=0;i3;i++)
{
putchar(DisBuff[i]);}
for(i = 0;i16;i++)//依次执行写入操作
{
putchar(ucStr3[i]);
}
for(i = 0;i16;i++)//依次执行写入操作
{
putchar(ucStr4[i]);
}
for(i=0;i4;i++)
{
putchar(DisBuff2[i]);}
}
}
//void ledFadeToBeat(){
//fadeRate -= 15;//set LED fade value
//fadeRate = constrain(fadeRate,0,255);//keep LED fade value from going into negative numbers!
//analogWrite(fadePin,fadeRate);//fade LED
//}
/******************************************************************************
函数名称心率传感器c语言函数定义:GetADCResult
函数功能:获取AD转换结果函数
入口参数:BYTE ch(通道选择)
返回值:result(A/D转换结果)
备注:无
*******************************************************************************/
unsigned int GetADCResult(BYTE ch)
{ unsigned int result;//AD转换结果result
ADC_CONTR=0xf8;//清除ADC控制寄存器ADC CONTR的CHS2、CHS1、CHS0(清除通道选择)
_nop_();//设置ADC CONTR控制寄存器后心率传感器c语言函数定义,要加4个空操作延时才可以正确读到ADC CONTR寄存器的值
_nop_();
_nop_();
_nop_();
ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START; //开ADC电源心率传感器c语言函数定义,选择AD转换速率,并选择AD通道,开始AD转换
_nop_();//设置ADC CONTR控制寄存器后,要加4个空操作延时才可以正确读到ADC CONTR寄存器的值
_nop_();
_nop_();
_nop_();
while (!(ADC_CONTRADC_FLAG));//等待AD转换结束
ADC_CONTR = ~ADC_FLAG;//关闭ADC
result=ADC_RES;//将AD转换结果的高两位赋给result
result=result8;//将result循环左移8位
result+=ADC_RESL;//将AD转换结果的底8位加高两位共10位给result
return result;//返回10位AD转换结果
}
void sendDataToProcessing(char symbol, int dat ){
putchar(symbol);// symbol prefix tells Processing what type of data is coming
printf("%d\r\n",dat);// the data to send culminating in a carriage return
}
void UART_init(void)
{
TMOD = 0x20;//定时器工作在定时器1的方式2
PCON = 0x00;//不倍频
SCON = 0x50; //串口工作在方式1,并且启动串行接收
TH1 = 0xFd; //设置波特率 9600
TL1 = 0xFd;
TR1 = 1;//启动定时器1
}
char putchar(unsigned char dat)
{
TI=0;
SBUF=dat;
while(!TI);
TI=0;
return SBUF;
}
void_nop_(void)
{}
void T0_init(void){
// Initializes Timer0 to throw an interrupt every 2mS.
TMOD |= 0x01; //16bit TIMER
TL0=T0MS;
TH0=T0MS8;
TR0=1;//start Timer 0
ET0=1;//enable Timer Interrupt
EA=1;// MAKE SURE GLOBAL INTERRUPTS ARE ENABLED
}
void T1_init(void){
// Initializes Timer0 to throw an interrupt every 2mS.
TMOD |= 0x01; //16bit TIMER
TL1=T0MS2;
TH1=T0MS28;
TR1=1;//start Timer 0
ET1=1;//enable Timer Interrupt
EA=1;// MAKE SURE GLOBAL INTERRUPTS ARE ENABLED
}
void ADC_init(unsigned char channel)
{
P1ASF=ADC_MASKchannel; //选择P1. channel作为A/D输入来用
ADC_RES=0; //清除ADC结果寄存器RES
ADC_RESL=0; //清除ADC结果寄存器RESL
AUXR1 |= 0x04; //调整ADC格式的结果
}
void Timer1_rountine(void) interrupt 1
{}
unsigned int analogRead(unsigned char channel)
{
unsigned int result;
while (!(ADC_CONTRADC_FLAG));//Wait complete flag
ADC_CONTR =!ADC_FLAG; //clear ADC FLAG
result=ADC_RES;
result=result8;
result+=ADC_RESL;
//ADC_CONTR|=channel|ADC_POWER|ADC_SPEEDLL|ADC_START;

推荐阅读