📄 serial.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 + -