中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 如何在TC++3.0中对IO端口进行一次16位读写操作
作者:
标题: 如何在TC++3.0中对IO端口进行一次16位读写操作 上一主题 | 下一主题
ymzheng
新手上路





积分 4
发帖 1
注册 2010-2-6
状态 离线
『楼 主』:  如何在TC++3.0中对IO端口进行一次16位读写操作

各位好。
最近设计了一个基于ISA总线的板卡。在DOS7.1下用TC++3.0作为开发工具,编写了一段程序,对板卡上的端口地址进行读写操作。基地址为0x280,各个寄存器的地址都是偶数。但对端口进行读写时须一次读写16位数据,现在读正常,但写不正常,不能将16位数据写入板卡上的寄存器中。我用的是TC++3.0中的inpw和outpw这两个函数来对板卡上的寄存器进行读写。但我看了TC++3.0关于这两个函数的解释,说,这两个函数都是分两次将16位数据写入和读出,第一次是对给定地址的端口进行8位读写(作为低8位),第二次是对给定地址+1的端口进行读写(作为高8位)。
请教各位,在DOS下,用TC++3.0,怎样才能做到一次读写16位数据?

[ Last edited by ymzheng on 2010-2-8 at 23:37 ]

2010-2-8 23:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





积分 668
发帖 295
注册 2005-7-26
来自 广东深圳
状态 离线
『第 2 楼』:  



  Quote:
Originally posted by ymzheng at 2010-2-8 23:33:
各位好。
最近设计了一个基于ISA总线的板卡。在DOS7.1下用TC++3.0作为开发工具,编写了一段程序,对板卡上的端口地址进行读写操作。基地址为0x280, ...

可能是硬件问题。

      1:由于现在计算机的速度比较快,许许多多个人开发的ISA卡往往不能正常工作,主要是由于时序不对。很多硬件工程师认为“ISA写端口”与“ISA读端口”的时序是相同的,又恰恰好IBM只公布了“ISA读端口”时序,而“ISA读端口”是在“IOR低电平”时读入,所以工程师们想当然认为“ISA写端口”是在“IOW低电平时”写入。这种错误在速度比较低的386/486计算机可以正常工作,计算机速度快了就不行了。正确的“IOW”是在“IOW上升沿”时写入才对。

    2:“16位ISA端口读写”与“8位ISA端口读写”是不同的,主要是IOCS16线的应用。

2010-2-9 09:15
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
Johnham
初级用户




积分 24
发帖 11
注册 2008-8-21
状态 离线
『第 3 楼』:  



  Quote:
Originally posted by ymzheng at 2010-2-8 11:33 PM:
。。。解释,说,这两个函数都是分两次将16位数据写入和读出,第一次是对给定地址的端口进行8位读写(作为低8位),第二次是对给定地址+1的端口进行读写(作为高8位)

要证实这点,示波器或逻辑分析仪测量此板卡,重点就是楼上所指信号,证实了后,与板卡设计者讨论解决问题的方法,应不难了。

2010-3-27 18:42
查看资料  发短消息 网志   编辑帖子  回复  引用回复
cir2633
初级用户





积分 52
发帖 23
注册 2009-12-25
状态 离线
『第 4 楼』:  

google一下inp(),outp()函数,这两个是一次写8bit的

2010-4-2 10:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
cir2633
初级用户





积分 52
发帖 23
注册 2009-12-25
状态 离线
『第 5 楼』:  

是不是你的单个寄存器是16bit的?
比如想写的数是int a;
int a_h=(a>>8)&0xff;
int  a_l=a&0xff;

2010-4-2 11:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: