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

📄 serial.c

📁 一个keilc51的例子--飞机小游戏,游戏运行在单片机里
💻 C
字号:
//串口中断服务程序,仅需做简单调用即可完成串口输入输出的处理
//出入均设有缓冲区,大小可任意设置。
//可供使用的函数名:
//char getbyte(void);从接收缓冲区取一个byte,如不想等待则在调用前检测inbufsign是否为1。
//putbyte(char c);放入一个字节到发送缓冲区
//putbytes(unsigned char *outplace,j);放一串数据到发送缓冲区,自定义长度
//putstring(unsigned char code *puts);发送一个定义在程序存储区的字符串到串口
//puthex(unsigned char c);发送一个字节的hex码,分成两个字节发。
//putchar(uchar c,uchar j);发送一个字节数据的asc码表达方式,需要定义小数点的位置
//putint(uint ui,uchar j);发送一个整型数据的asc码表达方式,需要定义小数点的位置
//delay(unsigned char d); 延时n x 100ns
//getline(char idata *line, unsigned char n); 获取一行数据回车结束,必须定义最大输入字符数 
//CR;发送一个回车换行
//*************************************************************************
#include <w77e58.h>  
#define  uchar  unsigned char
#define  uint   unsigned int
#define  OLEN  10                      /* 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  2                     /* size of serial receiving buffer      */
idata   unsigned char  inbuf[ILEN];  
unsigned char idata *inlast=inbuf;  //最后由中断进入接收缓冲区的字节位置
unsigned char idata *getlast=inbuf;  //最后取走的字节位置                  
bit   outbufsign;     //输出缓冲区非空标志   有=1                
bit   inbufsign;      //接收缓冲区非空标志   有=1
bit   inbufful;       //输入缓冲区满标志  满=1
#define CR putstring("\r\n")   //CR=回车换行
unsigned char code comready[]="com is ready!";
//*****************************
//延时n x 100ns
void delay(unsigned char d)  //在源程序开头定义是否用w77e58或22。1184M晶振
{unsigned char j;
do{ d--; 

//110592 & 89c52
#ifndef cpuw77e58 
   	#ifndef xtal221184 
	j=21;              //k=38 cpu80320  100us k=21 cpu 8052
	#else              
	j=42;  
	#endif
#else
	#ifndef xtal221184
	j=38;
	#else
	j=76;   
	#endif
#endif

do {j--;} while(j!=0);
}while(d!=0);
} 
//***************************** 
//放入一个字节到发送缓冲区

putbyte(char c)       
{uchar i,j;
  ES=0;            /*暂停串行中断,以免数据比较时出错

⌨️ 快捷键说明

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