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

📄 serial9600.c

📁 用labview和pic单片机打造虚拟示波器下位机源程序.rar
💻 C
字号:
#include <pic16f7x.h>

void usart_init();
void ad_init();
void long_delay();
void delay();
void ad();

unsigned int data[2];
unsigned int count = 0;
unsigned int flag = 0;
unsigned int start = 0;
unsigned int k = 0;
/*************************************************/
//主程序
void main()
{
  usart_init(); //调用串口初始化
  ad_init(); //调用AD初始化
  TRISB = 0xFC; //RB0&1输出
  data[1] = 0;
  while (1)
  //主循环
  {
    PORTB = 0x01; //空闲
    while (start)
    {
      long_delay();
      ad();
    }
  }
}

/*************************************************/
//串口初始化
void usart_init()
{
  TRISC = 0xFF; //设置C口方向全为输入
  RCSTA = 0x90; //使能串口工作,连续接收
  TXSTA = 0x24; //设定TXSTA寄存器。
  SPBRG = 0x19; //4MHZ, BRGH=1, 9600BPS
  INTCON = 0xC0; //开放全局中断,使能外部中断
  RCIE = 0x1; //使能USART接收中断
}

/*************************************************/
//ad模块初始化
void ad_init()
{
  TRISA = 0x01; //设置RA0为输入,其他为输出
  ADCON1 = 0x02; //转换结果左对齐,RA0做模拟输入口,其它做普通I/O
  ADCON0 = 0x41; //系统时钟Fosc/8,选择RA0通道,允许ADC工作
  delay(); //等待一段时间(a/d采样)
}

/*************************************************/
//ad转换子程序
void ad()
{
  PORTB = 0x03; //正在转换
  ADGO = 0x1; //开启转换过程
  while (ADGO)
  //等待转换完成
    TXREG = ADRES;
  //发送转换结果
}

/*************************************************/
//串口接收中断处理
void interrupt usart()
{
  if (RCIE && RCIF)
  //判断是否为串口接收中断
  {
    data[k] = RCREG; //保存接收到的数据
    k+=1;
    if (k > 1)
    {
      k = 0;
      flag = 1;
    }
    while (flag)
    {
      flag = 0;
      if (data[0] == 0x07)
        start = 0x1;
      if (data[0] == 0x09)
        start = 0x0;
    }
  }
}

/*************************************************/
//短延时程序
void delay() //延时程序
{
  unsigned int d = 100;
  while (--d)
  {
    ;
  }
}

/*************************************************/
//长延时程序
void long_delay()
{
  if (data[1] != 0)
  {
    count = data[1];
    while (--count)
      delay();
  }
}

⌨️ 快捷键说明

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