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

📄 serial.h

📁 ADuC848BS32-5驱动ZLG7290键盘控制芯片
💻 H
字号:
//本函数集来自“51单片机世界”,作者斑竹丁丁(聂小猛)。
//主页地址http://www.mcu51.com
//串口中断服务程序,仅需做简单调用即可完成串口输入输出的处理
//出入均设有缓冲区,大小可任意设置。
//可供使用的函数名:
//char getbyte(void);从接收缓冲区取一个byte,如不想等待则在调用前检测inbufsign是否为1。
//getline(char idata *line, unsigned char n); 获取一行数据回车结束,必须定义最大输入字符数
//putbyte(char c);放入一个字节到发送缓冲区
//putbytes(unsigned char *outplace,j);放一串数据到发送缓冲区,自定义长度
//putstring(unsigned char code *puts);发送一个定义在程序存储区的字符串到串口
//puthex(unsigned char c);发送一个字节的hex码,分成两个字节发。
//putchar(uchar c,uchar j);输出一个无符号字符数的十进制表示,必须标示小数点的位置,自动删除前面无用的零
//putint(uint ui,uchar j);输出一个无符号整型数的十进制表示,必须标示小数点的位置,自动删除前面无用的零
//delay100ns(unsigned char d); 延时n x 100ns
//putinbuf(uchar c);人工输入一个字符到输入缓冲区
//CR;发送一个回车换行
//===============================================================================
//#include <w77e58.h>  
//#include <src51rd.h>
//#include <c8051F350.h>

#define  uchar  unsigned char
#define  uint   unsigned int
#define  OLEN  32                     /* size of serial transmission buffer   */
idata   unsigned char  outbuf[OLEN];          /* storage for transmission buffer      */
unsigned char idata  *outlast=outbuf;    //最后由中断传输出去的字节位置            
unsigned char idata  *putlast=outbuf;    //最后放入发送缓冲区的字节位置         
#define  ILEN  12                     /* size of serial receiving buffer      */
idata   unsigned char  inbuf[ILEN];  
unsigned char idata *inlast=inbuf;  //最后由中断进入接收缓冲区的字节位置
unsigned char idata *getlast=inbuf;  //最后取走的字节位置                  
bit   outbufsign0;     //最后一个数据覵BUF0发完标志  发完=0
bit   outbufsign;     //输出缓冲区非空标志   有=1              
bit   inbufsign;      //接收缓冲区非空标志   有=1
bit   inbufful;       //输入缓冲区满标志  满=1
#define CR putstring("\r\n")   //CR=回车换行

//===============================================================================
//延时n x 100ns 
void delay100ns(unsigned char d);  //在源程序开头定义是否用w77e58或22.1184M晶振

//===============================================================================
//放入一个字节到发送缓冲区

putbyte(char c);
//===============================================================================
//放一串数据到发送缓冲区

putbytes(unsigned char *outplace,unsigned char j);
//===============================================================================
//输出一个无符号字符数的十进制表示,必须标示小数点的位置,自动删除前面无用的零
//例如putchar(0x32,2),输出"4.8".
//putchar(0x32,3),输出"0.48".
//putchar(0x32,1),输出"48".

putchar(uchar c,uchar j);
//===============================================================================
//输出一个无符号整型数的十进制表示,必须标示小数点的位置,自动删除前面无用的零

putint(uint ui,uchar j);
//===============================================================================
//发送一个定义在程序存储区的字符串到串口

putstring(unsigned char  *puts);
//===============================================================================
//发送一个字节的hex码,分成两个字节发。

unsigned char code hex_[]={"0123456789ABCDEF"}; 
puthex(unsigned char c);
//===============================================================================
//从接收缓冲区取一个byte,如不想等待则在调用前检测inbufsign是否为1。

uchar getbyte (void);
//===============================================================================
//接收一行数据,必须定义放数据串的指针位置和大小    del=0x7f,backspace=0x08,cr=0x0d,lf=0x0a

void getline (uchar idata *line, unsigned char n);
//===============================================================================
//人工输入一个字符到输入缓冲区

putinbuf(uchar c);
//===============================================================================
//串口中断处理
//serial () interrupt 4
//===============================================================================
//串口初始化                0xfd=19200,0xfa=9600,0xf4=4800,0xe8=2400,0xd0=1200
serial_init ();
//===============================================================================
//测试用主函数  
/*
void main(void)
{
	char c;
	idata  unsigned  char  free[16];  
	unsigned char idata *freep=free; 
	serial_init();


	putstring("jdioptuejls;j;klj");
	delay100ns(10);
	
	while(1) 
 	{
 		//putstring("com is ready! ");
 	//}
 	
 	c=getbyte();
 	//putbyte(0x20);	//空格
	//puthex(c);
        switch(c)
 	{
 		case 'r':
          		putbytes(inbuf,ILEN);
	            	break;
                case 'g':
                	getline(freep,10);
                	//putbyte(0x20);		//空格
                	putbyte(0x32);
                	putstring(freep);  
                    	break;
                default:
 			//putbyte(c);
 			putbyte(0x31);
 			break;
 	}
 	}
}
*/

⌨️ 快捷键说明

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