摘要: 80186 的字长为16,而NVRAM的位宽为8,在这种情况下,我们需要为NVRAM 提供读写字节、字的接口,如下: 1 typedef unsigned char BYTE; 2 typedef unsigned int WORD; 3 /* 函数功能:读NVRAM 中字节 4 * 参数:wOffset,读取位置相对NVRAM 基地址的偏移 5 * 返回:读取到的字节值 6 */ 7 extern BYTE ReadByteNVRAM(WORD wOffset) 8 { 9 LPBYTE lpAddr = (BYTE*)(NVRAM + wOffset * 2); /* 为什么偏移要 阅读全文
posted @ 2013-11-20 10:00 Fight_4_ever 阅读(691) 评论(0) 推荐(0) 编辑
摘要: C 语言编译器会对用户书写的代码进行优化,譬如如下代码:int a,b,c;a = inWord(0x100); /*读取I/O 空间0x100 端口的内容存入a 变量*/b = a;a = inWord (0x100); /*再次读取I/O 空间0x100 端口的内容存入a 变量*/c = a;很可能被编译器优化为:int a,b,c;a = inWord(0x100); /*读取I/O 空间0x100 端口的内容存入a 变量*/b = a;c = a;但是这样的优化结果可能导致错误,如果I/O 空间0x100 端口的内容在执行第一次读操作后被其它程序写入新值,则其实第2 次读操作读出的内容 阅读全文
posted @ 2013-11-20 09:54 Fight_4_ever 阅读(217) 评论(0) 推荐(0) 编辑