?? cc.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 + -