c8051f 分页机制,调试时看到的可能不是真实值
来源:互联网 发布:算法统宗圆中正方形 编辑:程序博客网 时间:2024/06/03 19:29
c8051f中使用了SFR分页机制,查看c8051f120.h文件部分内容如下
/* TMR2CN 0xC8 */sbit TF2 = 0xCF ; /* TIMER 2 OVERFLOW FLAG */sbit EXF2 = 0xCE ; /* TIMER 2 EXTERNAL FLAG */sbit EXEN2 = 0xCB ; /* TIMER 2 EXTERNAL ENABLE FLAG */sbit TR2 = 0xCA ; /* TIMER 2 ON/OFF CONTROL */sbit CT2 = 0xC9 ; /* TIMER 2 COUNTER SELECT */sbit CPRL2 = 0xC8 ; /* TIMER 2 CAPTURE SELECT *//* TMR3CN 0xC8 */sbit TF3 = 0xCF ; /* TIMER 3 OVERFLOW FLAG */sbit EXF3 = 0xCE ; /* TIMER 3 EXTERNAL FLAG */sbit EXEN3 = 0xCB ; /* TIMER 3 EXTERNAL ENABLE FLAG */sbit TR3 = 0xCA ; /* TIMER 3 ON/OFF CONTROL */sbit CT3 = 0xC9 ; /* TIMER 3 COUNTER SELECT */sbit CPRL3 = 0xC8 ; /* TIMER 3 CAPTURE SELECT *//* TMR4CN 0xC8 */sbit TF4 = 0xCF ; /* TIMER 4 OVERFLOW FLAG */sbit EXF4 = 0xCE ; /* TIMER 4 EXTERNAL FLAG */sbit EXEN4 = 0xCB ; /* TIMER 4 EXTERNAL ENABLE FLAG */sbit TR4 = 0xCA ; /* TIMER 4 ON/OFF CONTROL */sbit CT4 = 0xC9 ; /* TIMER 4 COUNTER SELECT */sbit CPRL4 = 0xC8 ; /* TIMER 4 CAPTURE SELECT */
可以看到TMR2CN,TMR3CN,TMR4CN的地址都是相同的,看上去好像存在重叠,事实上在设置TMRxCN的时候,我们会先设置SFR_PAGE为对应的TMRx_PAGE,如下代码所示:
char SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page SFRPAGE = TMR3_PAGE; // Set SFR page TMR3CF = 0x00; TMR3CN = 0x00; TMR3CN = 0x02; tmp=TMR3CN; TMR3L = 0x00; // Init the Timer3 register TMR3H = 0x00; TMR3CN |= 0x04; // Enable Timer3 in auto-reload mode TR3 = 1; SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
而其中的TMR2_PAGE, TMR3_PAGE,TMR4_PAGE是不一样的,所以并没有重叠,而Keil uVision5 并不知道这一机制,所以在调试窗口直接查看TMR3CN的时候,结果是不正确的。解决的方法之一就是如上面的代码所示,定义一个变量tmp,在需要查看TMR3CN的地方,把TMR3CN赋给tmp,我们再查看tmp;
0 0
- c8051f 分页机制,调试时看到的可能不是真实值
- 网络不是真实的人生
- Oracle优化——如何查看语句的准确的执行计划(explain plan可能不是真实的)
- 我看到了一个真实的日本
- 如何看到真实的执行计划
- 网上看到的分页语句
- android的2.3.7 rom修改调试与logcat看到的出错信息的可能原因与解决(补充中...)
- 你看到的都是招数,不是内功
- js 字数分页,在帮朋友解决问题时看到的
- 33. 浮点数不是真实的
- Unity2d Sprite 不是真实尺寸的问题
- 中国的真实增长:不是神话,不是奇迹
- eclipse调试java不能看到变量的值
- 开心网上看到的一则真实的幽默
- 看到了关于房产的一个评论,很真实啊
- JavaScript解析:让搜索引擎看到更真实的网页
- 你缺的,可能不是人才
- C8051F的读写芯片FLASH的注意事项
- mysql 5.6存储引擎比较
- 信息增益,信息增益率,Gini
- 十六进制转十进制
- 【LeetCode】 Populating Next Right Pointers in Each Node 完全二叉树
- Search Insert Position
- c8051f 分页机制,调试时看到的可能不是真实值
- Ubuntu Windows双系统更改启动项顺序
- CVTE公司面经
- (1.3.6.1)线性排序:基数排序
- php中explode与split的区别
- 巧用Squid的ACL和访问列表实现高效访问控制(51CTO)
- struct和typedef struct
- Java单例程个人思考
- C 01