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

📄 cc.cpp

📁 c语言串口通讯大作业
💻 CPP
字号:
/*程序名:利用BiosCom串口通信                       */
/*功  能:接收来自串行口的数据字符,并显示之;     */
/*        把缩键入对应的字符由串行口送出          */
#include "dos.h"
#include "bios.h"
/*常数定义*/
#define PORT 0
#define	TRUE   1
#define FALSE  0
#define TIMEOUT		Ox8000
#define breakdet    Ox1000
#define	FRAMERR     Ox800
#define PARERR      Ox400
#define	OVERERR      Ox200
#define RCVDRDY      Ox100

#define B110        Ox00
#define B150        Ox20
#define B300        Ox40
#define B600        Ox60
#define B1200        Ox80
#define B2400        OxA0
#define B4800        OxC0
#define B9600        Oxe0

#define NONE         0
#define ODD          8
#define EVEN         Ox18
#define SB1           0
#define SB2           4
#define DB7           2
#define DB8           3
/*函数调用说明*/
unsigned SerInit2(int port,unsigned char config);
unsigned SerSend2(int port,unsigned char ch);
unsigned SerRecv2(int port );
unsigned SerStat2(int port);
void    Tty(unsigned ch);
/*全局变量*/
char  breakon;
void  interrupt(*oldhandle)();
/*1BH号中断处理程序*/
void interrupt ctrlbreak(void)
{  breakon=1;}
main()
{
	unsigned int key;
	unsigned char ch;
	oldhandle=getvect(Ox1b);
	breakon=0;
	setvect(Ox1b,ctrlbreak);
	SerInit2(PORT,B1200+DB8+SB1+NONE);
	while(true){
		if(breakon)break;
		if(bioskey(1)){
			key=bioskey(0);
			if(key&Oxff)
				if(SerSend2(PORT,key)&TIMEOUT)
					printf("时间溢出!\n");
				break;}
	}
	if(SerStat2(PORT)&RCVDRDY){
		key=SerRecv2(PORT);
		if(key&(BREAKDET|FRAMERR|PARERR|OVERERR)){
			if(key&BREAKDET) printf("Detect BREAK\N");
		if(key&FRAMERR)printf("Error:FRAME\N");
			if(key&PARERR)printf("Error:PARITY\n");
			if(key&OVERERR)printf("Error:OVERUN\n");
			break;
		}
		ch=key;
		Tty(ch)
	}
}
setvect(Ox1b,oldhandle);
exit(0);}
/*初始化串行口函数*/
unsigned SerSend2(int port,unsigned char ch)
{
	return (bioscom(0,config,port));
}
/*发送函数*/
unsigned SerSend2(int port,unsigned char ch)
{
	return(bioscom(1,ch,port));
}
/*接收函数*/
unsigned SerRecv2(int port)
{
	return(bioscom(2,0,port));
}
/*Tty方式显示函数*/
unsigned  Try(unsigned ch)
{
	union REGS r;
	r.h.ah=Ox0e;
	r.h.al=ch;
	r.h.bh=0;
	r.h.bl=Ox07;
	int86(Ox10,&r,&r);
}

⌨️ 快捷键说明

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