milkyway的窝

最初想法的诞生地

 

x86 CPU PC/104总线挂载数据采集卡寄存器操作实验

历时一周,终于完成对外设寄存器的读写试验,对硬件的了解太少所致。
所用操作系统Windows CE5.0,硬件平台x86架构的CPU板卡和挂载在PC/104总线的多功能数据采集卡,软件开发工具EVC4,采用MFC测试。

具体对外设寄存器地址363H进行读写。(363H是数据采集卡的DIO控制寄存器的0通道,8位。)

read按钮为读取DI寄存器值,表示该数字输入位电平的高低,测试中,接1.2V电压/100欧姆电阻时对应位为1。比如接DIO2输入时,显示值为4。
write按钮为写入DO寄存器数值,范围是0-255,用来控制DO通道0的八个位输出,用LED加电阻来点亮显示输出。

试验心得:
(一)如果使用wince自带的端口操作宏:READ_PORT_UCHAR,WRITE_PORT_UCHAR
1.要拷贝在PB中定制的平台对应的ceddk.h,pkfuncs.h,toolhelp.h以及ceddk.dll,链接ceddk.lib.
2.对应的物理端口和值定义最好采用
 #define port 0x363
#define value 1
这样便于修改并且能避免在类型转换时丢失数据。由于宏 READ_PORT_UCHAR((unsigned char*)port),WRITE_PORT_UCHAR((unsigned char *)port,(unsigned char)value) 要求的操作对象为uchar型,范围在0-255之间。

(二)如果采用在evc中嵌入汇编的方式
注意避开系统保留关键字,比如OUT要写成out之类的才能避免编译器报语法错误。

(三)对寄存器的概念加深认识
同一个地址上既可以读又可以写时,不能指望写入的数值能够读回来。因为可能是几个寄存器共用一个物理地址,比如本实验中,363H就是DI/DO两个状态的共享端口.

(1)在硬件系统中,对一个外设寄存器的读写实际上是总线信号起区分作用。如果读信号为低电平时,就读入对应寄存器的值,与之前在此寄存器写的值无关。简单的说,就是同一个物理地址可能是几个数据寄存器共同使用,用信号来实现复用。
(2)在软件中,可以是通过物理地址的某个位来区分读写的是哪个寄存器.

posted on 2007-04-13 16:46 milkyway 阅读(1724) 评论(2)  编辑 收藏 引用 所属分类: Wince学习小结

评论

# re: x86 CPU PC/104总线挂载数据采集卡寄存器操作实验 2007-04-14 16:49 gogo

中国最好的电子书下载网站:
http://www.netyi.net/in.asp?id=guest  回复  更多评论   

# re: x86 CPU PC/104总线挂载数据采集卡寄存器操作实验 2007-04-14 16:49 gogo

中国最好的电子书下载网站:
http://www.netyi.net/in.asp?id=guest
-----------------------------------------  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

统计

公告

随笔皆原创,文章乃转载. 欢迎留言!

常用链接

留言簿(37)

随笔分类(104)

随笔档案(101)

文章分类(51)

文章档案(53)

wince牛人

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜