这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 物联网技术 » AD+串口程序 (ZT)

共1条 1/1 1 跳转至

AD+串口程序 (ZT)

助工
2008-08-14 16:27:41     打赏

#i nclude<pic.h>
__CONFIG(0x1832);

union adres
{int y1;
unsigned char adre[2];
}adresult;

int AD_Value;
bit sci_Sign,js=0;
int Order[3];
int buf[4];

void adinitial(void);
void sciint(void);
void ad_Collect(void);
void sci(int);

//*SCI部件接收初始化子程序*/
void sciint()
{
 TRISC7= 1 ;// |= 0xc0;//设置为输入 
    TRISC6= 1 ;
 BRGH = 1 ;    //高波特率选择位
 SPBRG = 25 ; //((20000000/9600)/16)-1
 SYNC = 0 ;//异步
 SPEN = 1 ;//串口使能
 RCIE = 1 ;// USART数据接收中断使能位
 TXIE = 0 ;//USART数据发送中断使能位
 TXEN = 1 ;//发送
 CREN = 1 ;//连续接收使能位
 PEIE= 1 ;  //开中断

//A/D 转换初始化子程序
void adinitial()
{
 ADCON0=0X41;//
 ADCON1=0X8E;
 TRISA0=1;
}
void ad_Collect()
{
 float temp;
 ADGO=1;
 while(!ADIF);
 ADIF=0;
 adresult.adre[0]=ADRESL;//读取AD转换的结果到联合体数组.
  adresult.adre[1]=ADRESH;
// AD_value="/ADRESH;//
 temp=(float)adresult.y1;//*5)/1023)*1000;
 temp=((temp*5)/1023)*100;
 AD_Value=(int)(temp*5);//adresult.y1;//(int)temp;
}
void" sci(int tran)
{
 while(!TXIF);
 TXREG=tran;  //*发出一个字符*/
 TXIF=0;
 }
void interrupt SCI_Admit(void)
{
// sci_Sign=1;
 int temp;
 if(RCIF)   //判断是否是接收中断
 {
  if(js)
  {
   if(Order[0]=='$')
   {
    temp++;
    Order[temp]=RCREG;
    if(temp==2)
    {
     js=0;
     sci_Sign=1;
     temp=0;
    }
   }
   else
    js=0; 
  // RCIF=0;
  }
  else
  {
   Order[0]=RCREG;
   js=1;
   temp=0;
  }
  RCIF=0;
 }
}
 /* if(js)
  {
   if(Order[1]=='R')
   {
    Order[2]=RCREG;
    sci_Sign=1;
    js=0;
   }
   else
   {
    Order[1]=RCREG;
   }
   temp++;
   Order[temp]=RCREG;
   if(temp==2)
    js=0;
  }*/

void int_to_asc(int dat)
{
 int temp;
 buf[0]=(dat/1000)+'0';
 temp=dat%100;
 buf[1]=((dat%1000)/100)+'0';
 buf[2]=((dat%1000)%100)/10+'0';
 buf[3]=((dat%1000)%100)%10+'0';
}

void main()
{
 int temp='V';
 adinitial();
 sciint();     //*SCI部件初始化*/
 sci_Sign=0;
 ei();
 TXEN = 1 ;//发送
 CREN = 1 ;//连续接收使能位
 while(1)
 {
 // ad_Collect();
  if(sci_Sign)
  {
   if(Order[0]=='$')
   {
    if(Order[1]=='R'&&Order[2]=='V')
    {    
     ad_Collect();
    //AD_value="/123;
    //sci(AD_Value);
     int_to_asc(AD_Value);
     sci(temp);
     if(buf[0]!='0')
      sci(buf[0]);
      sci(buf[1]);
      sci('."');
      sci(buf[2]);
     sci(buf[3]);
     Order[0]=0;
     Order[1]=0;
     Order[2]==0;
    }
   // sci(temp);
   }
   sci_Sign=0;
  }
 }
}




关键词: 串口     程序     Order    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]