维库电子市场网
登录 免费注册 首页 | 行业黑名单 | 委托交易 | 帮助 | English
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | 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
你定义一个就可以
你定义一个就可以了,对于16F873你只需定义在BANK0或BANK1就行.好好看书!

3楼: >>参与讨论
wangbo1211
re
不行啊,我是说的16F873啊,仁兄,不是16F877,873的bank0和bank1
跟本没有影射关系啊,不过我的定义是重复的也是不对的,
给点建议,谢谢

4楼: >>参与讨论
bolofeng
wangbol1211 I 服了 you
你把同一个变量名ADDR定义两次不出问题才怪呢?
如果哪本书是这样做的,要么是印刷错误,要么作者是傻子。
873/874的RAM体是两个独立的没错。
你把STATUS_TEMP 定义在 74H,把 f4H 空着就行,别让其他东东占着它就是了。
不是叫你把STATUS_TEMP 定义两次。

5楼: >>参与讨论
bolofeng
补充
如果为了中断,对873/874而言,WREG_TEMP equ 0x7f,那么把 0xff 空着就行.
其他寄存器只需定义一次。上面说的STATUS_TEMP不需要这样。

6楼: >>参与讨论
eling
建议还是找本中文的看一下
 
参与讨论
昵称:
讨论内容:
 
 
相关帖子
ProPic XP PIC 单片机 通用编程器软件的注册码!!
我很想用PIC18FXXXX开发产品
让900多的专用PIC编程器见鬼去吧
谁有或谁知道哪儿有PIC的教学资料俺想学
张工,PIC16F877汇编如何与PICC连接?可以提供源程序参考吗?
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号