大侠,对于ch365芯片的配置空间,我有些迷惑。 第一点是:对于它的寄存器说明:“芯片控制寄存器(配置空间40H)(I/O空间偏移0F8H)”我的理解是该寄存器在配置空间的地址是40H,通过I/O基址加偏移量来读取该寄存器的值,对吗?我试了用评估版的测试软件,在配置空间里读取的值和在I/O空间里读的值是不一样的。在I/O中用绝对地址和用基址加偏移地址读取的值也不一样。很是奇怪! 第二点就是ch365的芯片状态寄存器,它只是说了在配置空间中的地址是42H,那是不是该芯片只能通过配置空间来读取,不能用I/O来读取? 第三点就是我在读取I/O时,用偏移地址方式读取。偏移地址设为0F8H和0xF8两者读取的数据是不一样的,它们不是都是二进制的吗?怎么会不一样?而且在读双字和字时,只能用0xF8的偏移地址。用0F8H就弹出提示说地址无效,为什么呀? 第四点就是我现在是用手上的那张评估版,除此没有任何硬件了。ch365芯片的配置空间介绍是不是和我的评估版设计硬件时所设置的配置空间有不同之处。是不是有针对ch365评估版的配置空间的资料介绍?有的话,可否让小妹参阅下,本人不甚感激!!! 一定帮帮忙呀!拜托各位了!!!
第一点:配置空间40H与iI/O空间偏移0F8H读取的地址是一样的
第二点:是的
三点:程序中限定了只取一个字节,即两个字符的长度,所以你用0F8时,末尾的8被截取掉,你可以自己修改程序或只输入F8来表示地址0xF8
谢谢楼上的,我今天如你说的不加0x或h读取的数是一样的,但是如果加了h或0x,读取的值就不一样了,我看了程序,但上面的范围有说else if ( iChar >= 'A' && iChar <= 'Z' ) mBCD = iChar - 'A' + 0x0a; else if ( iChar >= 'a' && iChar <= 'z' ) mBCD = iChar - 'a' + 0x0a; 如果这样,它应该能识别f以上的字母啊,而且我试了下有时读取的值也不是全FF
第二就是我用project1.exe来测试时老说不能打开卡,可是我用debug365.exe打开卡时就没有说卡不能打开,而且如果我关闭卡后直接刷新就会有提示框,说明我打开卡的操作是完成了。所以就是不知道project1.exe到底为什么说不能打开卡。和语言环境有关吗,而且#include 这个头文件找不到
我说的截取是取文本框中数据的时候截取,与你说的那段代码无关
第二,project.exe应该是用BCB写的,如果你没有BCB环境就没有vcl.h,就无法调用