⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad_serial.txt

📁 基于c51单片机的数据采集以及通过串口发送数据到pc机的c语言程序
💻 TXT
字号:
AD+串口程序
#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;
  }
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -