lxcomcn
驱动老牛
驱动老牛
  • 注册日期2002-07-31
  • 最后登录2010-12-10
  • 粉丝0
  • 关注0
  • 积分110分
  • 威望43点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
阅读:1847回复:17

关于串口的问题----高分

楼主#
更多 发布于:2002-11-18 14:44
请问各位,对于串口中断,和中断控制有关的寄存器是哪几个?这些寄存器的各位是怎样规定的?以及串口的端口地址是多少?谢谢!一定给分!

最新喜欢:

ytoneboyytoneb...
[img]http://www.nbuser.com/vb/avatar.php?userid=10792&dateline=1046232652 [/img] 我要作诗!!!
hfyhl
驱动小牛
驱动小牛
  • 注册日期2002-11-08
  • 最后登录2005-10-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-11-18 14:54
是UART吗?
lxcomcn
驱动老牛
驱动老牛
  • 注册日期2002-07-31
  • 最后登录2010-12-10
  • 粉丝0
  • 关注0
  • 积分110分
  • 威望43点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-11-18 15:00
是UART吗?


UART是什么? :D
[img]http://www.nbuser.com/vb/avatar.php?userid=10792&dateline=1046232652 [/img] 我要作诗!!!
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-11-18 15:00
随便找一本关于PC接口编程的书,都有详细解释。
生命驱动,活力无限!
hfyhl
驱动小牛
驱动小牛
  • 注册日期2002-11-08
  • 最后登录2005-10-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-11-18 15:21
UART 是一种串口控制器,比如 intel 8251
微机的地址是1f0h,1f2h,前者是数据口
后者是控制口.控制口规定串行数据格式
这是微机原理教材上有的啊
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-11-18 15:29
UART:通用异步接收/发送 英语缩写。
PORT ADDR: 2f8,3f8
生命驱动,活力无限!
hfyhl
驱动小牛
驱动小牛
  • 注册日期2002-11-08
  • 最后登录2005-10-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-11-19 01:55
你那个地址是从哪本书上看来的?
hfyhl
驱动小牛
驱动小牛
  • 注册日期2002-11-08
  • 最后登录2005-10-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-11-19 01:59
UART:Universal Asynchronous Receiver-Transmitter
翻译的时候翻译成控制器比较好.
minsoft
驱动小牛
驱动小牛
  • 注册日期2001-07-30
  • 最后登录2007-03-06
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-11-19 10:16
PC串口1:3f8-3ff,串口2:2f8--2ffh
详细的寄存器说明见这(你只看其中的UART部分就行了)
附件名称/大小 下载次数 最后更新
2002-11-19_Nm9845.pdf (265KB)  13
少了e,就少了全部
unix1998
驱动老牛
驱动老牛
  • 注册日期2002-05-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-11-19 12:13
看16550的datasheet
cc_mcy
驱动牛犊
驱动牛犊
  • 注册日期2002-05-08
  • 最后登录2005-06-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-11-20 17:20
pc机的每种型号的串口都是这个地址么?
三人行,必有我师! [email]cc_mcy@163.com[/email]
lxcomcn
驱动老牛
驱动老牛
  • 注册日期2002-07-31
  • 最后登录2010-12-10
  • 粉丝0
  • 关注0
  • 积分110分
  • 威望43点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-11-21 08:52
呵呵~~分不多,请各位笑纳! :D
[img]http://www.nbuser.com/vb/avatar.php?userid=10792&dateline=1046232652 [/img] 我要作诗!!!
unix1998
驱动老牛
驱动老牛
  • 注册日期2002-05-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-11-21 09:01
客气客气。
Buddha
驱动老牛
驱动老牛
  • 注册日期2001-04-29
  • 最后登录2013-05-18
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望17点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-11-21 10:15
一、串口寄存器简单说明
计算机的串口芯片通常都是UART16550,它提供了8个字节长的I/O寄存器地址用以对其进行配置以及数据传输。各寄存器的说明如下。
地址 读方式 写方式
0 接收保持寄存器 发送保持寄存器
1 中断允许寄存器
2 中断状态寄存器 先进先出控制寄存器
3 线路控制寄存器
4 MODEM控制寄存器
5 线路状态寄存器
6 MODEM状态寄存器
7 读便笺寄存器(SR) 写便笺寄存器

由上表可以看出,串口寄存器有很多都是复用的--即在读写的时候分别起到不同的作用。同时,当“线路控制寄存器”的最高为为\'1\'时,寄存器0,1还分别作为串口波特率因子低、高字节设置寄存器。

二、直接I/O端口访问方式
程序可以直接读写I/O端口来设置串口的工作方式。在正确设置了串口的波特率以及字长、停止位和效验方式等以后,串口就可以正常工作了。然后程序检查线路状态寄存器的最低位(位0),如果为‘1’就说明有数据到达,通过接收保持寄存器读入数据。如果状态寄存器的位5为\'1\'则表示发送保持寄存器已经就绪,可以进行数据发送。同时如果产生奇偶效验错、帧格式错或接收超时等错误也可以通过线路状态寄存器检测出来。下面一段程序可以对串口进行简单的设置以及读写。
//设置串口的工作方式
void SetCommPort(unsigned int CommPort)
{
// 设置串口波特率位9600bps
outportb(CommPort+3,0x80);
outportb(CommPort  ,0x0C);
outportb(CommPort+1,0x00);
// 设置8位字长,0位停止位,无奇偶效验位
outportb(CommPort+3,0x03);
outportb(CommPort+1,0x00);
// 不使用中断控制
outportb(CommPort+4,0x00);
outportb(CommPort+1,0x00);
}
//对串口进行读写访问
void ReadWriteComm(unsigned int CommPort, unsigned char &data)
{
// 等待发送寄存器空
while(inportb(CommPort+5) & 0x20 == 0);
outportb(CommPor, data);
// 等待数据的到来
while(inportb(CommPort+5) & 0x01 == 0);
data = inportb(CommPort);
}
这种方式适用于对串口进行简单的访问控制。同时由于Windows2000系统不支持直接I/O端口访问操作,因此也不能使用这种方式。
<table style="filter: glow(color=sky blue, strength=10)"> <font color=white> 猫生病了, 老鼠大声朗诵诗集, 并修剪盆花. 猫生病了, 老鼠慢慢刷牙洗脸, 并打扫房间. 猫生病了, 老鼠倚在窗边欣赏夜色, 并对流星许愿. 猫生病了, 老鼠也病了, 它说:"我还是习惯那种时时紧张, 处处小心, 夜夜逃亡的生活." 午夜, 我听到老鼠在叹息, 且不再读诗了. </font></table>
new-oldmen
驱动中牛
驱动中牛
  • 注册日期2002-11-20
  • 最后登录2012-02-06
  • 粉丝1
  • 关注1
  • 积分6分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-11-21 20:22
牛斑,直接用控件不是容易的多?
tomzhang_4304
驱动牛犊
驱动牛犊
  • 注册日期2002-11-18
  • 最后登录2010-09-15
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望14点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-11-22 18:01
版主所
tomzhang
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-11-24 15:05
===============
牛斑,直接用控件不是容易的多?
===============
是呀!!
maple_wasp
驱动牛犊
驱动牛犊
  • 注册日期2003-10-02
  • 最后登录2009-03-09
  • 粉丝0
  • 关注0
  • 积分100分
  • 威望22点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-07-18 10:30
请问各位大侠:NM9845芯片的端口地址是多少?
游客

返回顶部