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

📄 serial.c

📁 基于USB接口的GPS驱动程序.gps后段接受以及输出,及usp驱动读写
💻 C
字号:
/*********************************************************************************
Module description:
  This file is used to debug purpose only,  
  It is used to print out some info bytes to serial port
  which is very useful for debugging

Author : Yu Lu ,
         luyu1974@gmail.com

*********************************************************************************/
#include "reg420.h"
#include "gbl_macro.h"


extern volatile unsigned char xdata  gp2021_reg_buf[];
extern volatile unsigned char xdata  gp2021_reg_write[];
extern unsigned char data start_sending;

void init_ser(char baud)
{
 SCON0 = 0X50;
 REN_0 = 1;
 TMOD |= 0x20;
 TH1 = baud;
 TL1 = baud;
 TR1 =1;
 TI_0 = 0;
 PCON |= 0X80;
}

void puthex_char(char ch)
{
 char tp;
 tp = (ch>>4)&0x0f;
 if(tp < 10)
 SBUF0 = tp + 0x30;
 else
 SBUF0 = tp + 'A' -10;

 while(!TI_0);
 TI_0 = 0;

 tp = ch&0x0f;
 if(tp < 10)
 SBUF0 = tp + 0x30;
 else
 SBUF0 = tp + 'A' -10;

 while(!TI_0);
 TI_0 = 0;
}
/*  for debug use only  */
/*
void puthex_int(unsigned int a)
{
	unsigned char ch,cl;
	ch = (a >> 8) & 0xff;
	cl = a&0xff;
	puthex_char(ch);
	puthex_char(cl);
}

void put_char(char ch)
{
 SBUF0 = ch;
 while(!TI_0);
 TI_0 = 0;
}
*/

/********************************************************************
 * initialize and test xram subroutine
 *******************************************************************/
#if XRAM_DBG==1

void init_xram(void)
{
 unsigned int i;
 for( i=0; i<2*ONE_FRM_SIZE; i++)
 {
  gp2021_reg_buf[i] = (unsigned char)i;
 }
}
void test_xram(void)
{
  unsigned int i;
 if(SBUF0 == 'a')   // send the xram0 to check;
  {
   for(i=0; i<2*ONE_FRM_SIZE; i++)
   {
   SBUF0 = '|';
   while(!TI_0);
   TI_0 = 0;
   puthex_char(i);
   puthex_char(gp2021_reg_buf[i]);
   }
  }// end of else if 'a'
  else if(SBUF0 == 'c')  // send write-buffer to check
  {
   for(i=0; i<130;i++)
   {
    SBUF0 = '|';
	while(!TI_0);
	TI_0 = 0;
	puthex_char(i);
	puthex_char(gp2021_reg_write[i]);
   }
  }
  
  SBUF0 = 0X0D;  // send cr 
  while(!TI_0);
  TI_0 = 0;
  SBUF0 = 0X0A;
  while(!TI_0);
  TI_0 = 0;
  RI_0 = 0;

}
#endif

/*******************************************
 * interrupt routine for serial port
 ******************************************/
 void ser_isr(void) interrupt 4
{
 if(RI_0)  // if receive
 {
#if XRAM_DBG == 1
	test_xram();
#else 
  if(SBUF0 == 'a')
   start_sending = 1; 
  if(SBUF0 == 'b')
   start_sending = 0;
  if(SBUF0 == 'c')
   put_debuginfo();
#endif
  SBUF0 = SBUF0;
  while(!TI_0);
  TI_0 = 0;
  SBUF0 = 0X0D;
  while(!TI_0);
  TI_0 = 0;
  SBUF0 = 0X0A;
  while(!TI_0);
  TI_0 = 0;
  RI_0 = 0;
 }
 if(TI_0)  // if send
 {}
}

⌨️ 快捷键说明

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