社区
C语言
帖子详情
我现在需要做的用Borland c3.1开发DOS下的软件,我想知道,在这样的环境下,如何通过RS232串口进行通讯??在线等待!!!!
wardwind
2004-04-30 02:04:07
我现在需要做的用Borland c3.1开发DOS下的软件,我想知道,在这样的环境下,如何通过RS232串口进行通讯??
我听说可以用BIOSCOM函数也可以直接用OUTPUT函数,请问该如何使用?哪有这方面的实例?????
...全文
234
3
打赏
收藏
我现在需要做的用Borland c3.1开发DOS下的软件,我想知道,在这样的环境下,如何通过RS232串口进行通讯??在线等待!!!!
我现在需要做的用Borland c3.1开发DOS下的软件,我想知道,在这样的环境下,如何通过RS232串口进行通讯?? 我听说可以用BIOSCOM函数也可以直接用OUTPUT函数,请问该如何使用?哪有这方面的实例?????
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Thie
2004-04-30
打赏
举报
回复
《C高级程序设计》
王士元
清华大学出版社
own
2004-04-30
打赏
举报
回复
BIOSCOM函数用起来简单,他已经屏蔽了对寄存器的操作,output函数则是直接对川口芯片的寄存器操作,这有利于对川口通信的理解
HellotoYou
2004-04-30
打赏
举报
回复
别人的一个小例子:
#include <dos.h>
#include <stdio.h>
#include <conio.h>
#define PORT1 0x2E8 /* Port Address Goes Here */
/* Defines Serial Ports Base Address */
/* COM1 0x3F8 */
/* COM2 0x2F8 */
/* COM3 0x3E8 */
/* COM4 0x2E8 */
#define INTVECT 0x0B /* Com Port's IRQ here */
/* (Must also change PIC setting) */
int bufferin = 0;
int bufferout = 0;
char ch;
char buffer[1025];
void interrupt (*oldport1isr)();
void interrupt PORT1INT() /* Interrupt Service Routine (ISR) for PORT1 */
{
int c;
do {
c = inportb(PORT1 + 5);
if (c & 1) {
buffer[bufferin] = inportb(PORT1);
bufferin++;
if (bufferin == 1024)
bufferin = 0;
}
}while (c & 1);
outportb(0x20,0x20);
}
void main(void)
{
int c;
outportb(PORT1 + 1 , 0); /* Turn off interrupts - Port1 */
oldport1isr = getvect(INTVECT); /* Save old Interrupt Vector for */
/* later recovery */
setvect(INTVECT, PORT1INT); /* Set Interrupt Vector Entry */
/* COM1 - 0x0C */
/* COM2 - 0x0B */
/* COM3 - 0x0C */
/* COM4 - 0x0B */
/* PORT 1 - Communication Settings */
outportb(PORT1 + 3 , 0x80); /* SET DLAB ON */
outportb(PORT1 + 0 , 0x03); /* Set Baud rate - Divisor Latch Low Byte */
/* Default 0x03 = 38,400 BPS */
/* 0x01 = 115,200 BPS */
/* 0x02 = 56,700 BPS */
/* 0x06 = 19,200 BPS */
/* 0x0C = 9,600 BPS */
/* 0x18 = 4,800 BPS */
/* 0x30 = 2,400 BPS */
outportb(PORT1 + 1 , 0x00); /* Set Baud rate - Divisor Latch High Byte */
outportb(PORT1 + 3 , 0x03); /* 8 Bits, No Parity, 1 Stop Bit */
outportb(PORT1 + 2 , 0xC7); /* FIFO Control Register */Interfacing the Serial / RS232 Port V5.0 http://www.senet.com.au/~cpeacock
outportb(PORT1 + 4 , 0x0B); /* Turn on DTR, RTS, and OUT2 */
outportb(0x21,(inportb(0x21) & 0xF7)); /* Set Programmable Interrupt */
/* Controller */
/* COM1 (IRQ4) - 0xEF */
/* COM2 (IRQ3) - 0xF7 */
/* COM3 (IRQ4) - 0xEF */
/* COM4 (IRQ3) - 0xF7 */
outportb(PORT1 + 1 , 0x01); /* Interrupt when data received */
printf("\nSample Comm's Program. Press ESC to quit \n");
do {
if (bufferin != bufferout){
ch = buffer[bufferout];
bufferout++;
if (bufferout == 1024) bufferout = 0;
printf("%c",ch);
}
if (kbhit()){
c = getch();
outportb(PORT1, c);
}
} while(c !=27);
outportb(PORT1 + 1 , 0); /* Turn off interrupts - Port1 */
outportb(0x21,(inportb(0x21) | 0x08)); /* MASK IRQ using PIC */
/* COM1 (IRQ4) - 0x10 */
/* COM2 (IRQ3) - 0x08 */
/* COM3 (IRQ4) - 0x10 */
/* COM4 (IRQ3) - 0x08 */
setvect(INTVECT, oldport1isr); /* Restore old interrupt vector */
}
bor
lan
d c 3.1
dos
Bor
lan
d C++ 3.1允许
开发
者在
DOS
环境
下创建、编译和运行C++程序,这在当时的
软件
开发
领域非常重要,因为很多应用都是基于
DOS
的。 2. **
Bor
lan
d C++编译器**:
Bor
lan
d C++ 3.1包含了
Bor
lan
d自己的C++编译器,它具有...
Bor
lan
dc 3.1 集成
环境
在
DOS
环境
下,鼠标支持是相对罕见的,但
Bor
lan
d C++ 3.1通过"mouse"文件可能提供了这一功能,使用户可以通过鼠标
进行
操作,增加了用户友好性,尤其是在浏览和选择代码时。 4. **学习C语言的价值**: - C语言是...
Bor
lan
d C++3.1 for
DOS
安装程序
1. **集成
开发
环境
**:
Bor
lan
d C++ 3.1首次在
DOS
环境
下提供了图形化的IDE,使得代码编写、编译、链接和调试都可在同一界面下完成,极大地简化了
开发
流程。 2. **Turbo Pascal兼容**:
Bor
lan
d C++ 3.1采用了类似...
Bor
lan
d C 3.1 精简版
这款编译器在当时的个人计算机
环境
下表现出色,尽管经过精简,但依然保留了大部分核心功能,使得用户能够在较低配置的计算机上
进行
C语言的程序
开发
。
Bor
lan
d C++ 3.1 包含了集成
开发
环境
(IDE)、编译器、调试器等...
Bor
lan
d C/C++ 3.1 完整版(B
C3
.1)
【
Bor
lan
d C/C++ 3.1 完整版(B
C3
.1)】是一款经典的集成
开发
环境
(IDE),由
Bor
lan
d公司发布,专为编写16位应用程序而设计。这款编译器在20世纪90年代初期非常流行,尤其在
DOS
和Windows 3.x时代,是许多
开发
者首选的C...
C语言
70,022
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章