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

📄 com.c

📁 这是一个时钟的程序
💻 C
字号:
#include <reg52.h>
#include <absacc.h>
#include <intrins.h>
#include <string.h>
#include "define.h"

unsigned char  idata  pint_buf[MAX_RINTL];   /* 串口接收缓冲区       */
unsigned char  idata  pint_buf1[MAX_RINTL];

unsigned char  data  pint_read;             /* 串口缓冲区读指针     */
unsigned char  data  pint_write;            /* 串口缓冲区写指针     */
unsigned char  data  psend_int;             /* 串口发送允许标志     */

unsigned char  psend_int;
unsigned char  flag;
unsigned char  rece_flag;
unsigned char  flag_axes;
unsigned char  start;
unsigned char  enter;
unsigned char  back;

bit            rece_time;
bit            rece_axes;
bit            rece_start;

/********************************************************************
函 数 名:com_int_proc()
功    能:串口中断服务程序
***********************************************************************/
void com_int_proc(void) interrupt 4 using 3
{
  uchar temp;
  uchar temp1;

  if (TI == 1)                      /* 是发送中断       */
  {
    TI = 0;
    psend_int = 1;                  /* 可以发送         */
  }

  if (RI == 1)                      /* 是接收中断       */
  {

    RI = 0;                         /* 清串口接收中断   */
    temp1 = SBUF;
    temp  = pint_write + 1;         /* 判断是否可以写入 */
    if (temp == MAX_RINTL)


    {
      temp=0;
    }
    if(temp==3)
    {
      rece_start=1;
    }
    if(rece_start)
    {
      rece_start=0;
      switch(temp1)
      {
        case 0x12:
        rece_time=1;
        break;
        case 0x37:
        rece_axes=1;
        break;
        default:
        break;
      }
    }
    if(rece_time)
    {
      pint_buf[pint_write] = temp1; /* 读取数据 */
    }
    if(rece_axes)
    {
      pint_buf1[pint_write] = temp1; /* 读取数据 */
    }
    pint_write = temp;
    if(temp1==0xA5)
    {
      rece_flag++;
    }
    if((temp1==0xF0)&&(rece_flag==1))
    {
      if(rece_flag)
      {
        flag_axes++;
      }
      rece_flag  = 0;
      pint_write = 0;
      rece_time  = 0;
      rece_axes  = 0;
      flag       = 1;
    }
  }
}
//串口发送一个字节
void com_send_command(unsigned char onebyte)
{
  psend_int = 0;
  SBUF = onebyte;
  while (psend_int != 1);
}
//初始化子程序
void system_init(void)
{

  EA    = 0;         /* CPU关中断      */
  SCON  = 0x48;
  PCON  = 0x00;
  TMOD  = 0x20;
  TCON  = 0x50;
  TH1   = 0xFD;    /* 波特率为9600  晶振22.1184MHZ,11.0592MHZ的TH1=TL1=0xFD*/
  TL1   = 0xFD;
  TR1   = 1;       /* 定时器1启动计数*/
  ES    = 1;       /* 串口开中断     */
  PX1   = 1;       /* 串口低优先级   */
  REN   = 1;       /* 串口接收允许   */
  EX1   = 1;
  EA    = 1;       /* 开CPU中断      */
  start = 1;
  enter = 1;
  back  = 1;
}

⌨️ 快捷键说明

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