怎样用TC写串口通讯方面的程序啊?能不能给个例子!谢谢!
怎样用TC写串口通讯方面的程序啊?能不能给个例子!谢谢! 问题点数:20、回复次数:2Top
1 楼falcon23()回复于 2006-07-03 17:08:43 得分 2
百度搜嘛.很多的!!Top
2 楼jixingzhong(瞌睡虫·星辰)回复于 2006-07-03 18:33:55 得分 18
串口通讯:
void OpenPort()
{
unsigned char ucTemp;
InitCOM();
asyncoldvect=getvect(0x0c);
disable();
inportb(0x3f8);
inportb(0x3fe);
inportb(0x3fb);
inportb(0x3fa);
outportb(0x3fc,0x08|0x0b);
outportb(0x3f9,0x01);
ucTemp=inportb(0x21)&0xef;
outportb(0x21,ucTemp);
setvect(0x0c,asyncint);
enable();
}
void interrupt far asyncint()
{
Buffer[buffin++] = inportb(0x3f8);
if(buffin >= BUFFLEN )
{
buffin = 0;
}
outportb(0x20,0x20);
}
void ClosePort(void)
{
disable();
outportb(0x3f9,0x00);
outportb(0x3fc,0x00);
outportb(0x21,inportb(0x21)&0x10);
enable();
setvect(0x0c,asyncoldvect);
}
void InitCOM()
{
outportb(0x3fb,0x80);
outportb(0x3f8,0x0c);
outportb(0x3f9,0x00);
outportb(0x3fb,0x03);
outportb(0x3fc,0x08|0x0b);
outportb(0x3f9,0x01);
}
char read_char(void)
{
char unch;
if(buffout != buffin)
{
unch = Buffer[buffout];
buffout++;
if(buffout >= BUFFLEN)
{
buffout = 0;
}
return(unch);
}
else
{
return(0xff);
}
}
void main()
{
char unChar;
short bExit_Flag = 0;
OpenPort();
fprintf(stdout,"\n\nReady to Receie DATA , press [ESC] to quit ...\n\n");
do
{
if(kbhit())
{
unChar = getch();
switch(unChar) //ESC退出
{
case 0x1B:
bExit_Flag = 1;
break;
}
}
unChar = read_char();
if(unChar != 0xff)
{
fprintf(stdout,"%c",unChar);
}
}while(!bExit_Flag);
ClosePort();
}
Top




