|
| 技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
不解 |
|
| 作者:wangbo1211 栏目:单片机 | |
我现在用16F873,它的RAM是bank2影射到bank0,bank3影射到bank1,这样如果一个变量ADDR,要在几个bank里都用到, 可设变量如 ADDR EQU 70H,和ADDR EQU 0F0 就行了,但为什么编译时,出错提醒说ADDR定义重复呢?请指教,谢谢! 如下所示的定义对吗?我看见书上也是如此定义的,对16F873和16F874而言,是哪儿搞错了吗? RESULTH EQU 71H RESULTL EQU 72H W_TEMP EQU 73H STATUS_TEMP EQU 74H ADDR EQU 75H R0 EQU 76H R1 EQU 77H R2 EQU 78H X0 EQU 79H X0H EQU 7AH X0L EQU 7BH RESULTH EQU 0F1H ;这是在bank1中的定义,哪儿不对,请指点谢谢 RESULTL EQU 0F2H W_TEMP EQU 0F3H STATUS_TEMP EQU 0F4H PCLATH_TEMP EQU 74H ADDR EQU 0F5H R0 EQU 0F6H R1 EQU 0F7H R2 EQU 0F8H X0 EQU 0F9H X0H EQU 0FAH X0L EQU 0FBH |
| 2楼: | >>参与讨论 |
| 作者: daiguoyuan 于 2003-10-28 17:02:00 发布:
你定义一个就可以 你定义一个就可以了,对于16F873你只需定义在BANK0或BANK1就行.好好看书! |
|
| 3楼: | >>参与讨论 |
| 作者: wangbo1211 于 2003-10-28 20:52:00 发布:
re 不行啊,我是说的16F873啊,仁兄,不是16F877,873的bank0和bank1 跟本没有影射关系啊,不过我的定义是重复的也是不对的, 给点建议,谢谢 |
|
| 4楼: | >>参与讨论 |
| 作者: bolofeng 于 2003-11-1 9:48:00 发布:
wangbol1211 I 服了 you 你把同一个变量名ADDR定义两次不出问题才怪呢? 如果哪本书是这样做的,要么是印刷错误,要么作者是傻子。 873/874的RAM体是两个独立的没错。 你把STATUS_TEMP 定义在 74H,把 f4H 空着就行,别让其他东东占着它就是了。 不是叫你把STATUS_TEMP 定义两次。 |
|
| 5楼: | >>参与讨论 |
| 作者: bolofeng 于 2003-11-1 9:57:00 发布:
补充 如果为了中断,对873/874而言,WREG_TEMP equ 0x7f,那么把 0xff 空着就行. 其他寄存器只需定义一次。上面说的STATUS_TEMP不需要这样。 |
|
| 6楼: | >>参与讨论 |
| 作者: eling 于 2003-11-1 15:01:00 发布:
建议还是找本中文的看一下 |
|
|
|
| 免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |