打印

很白痴的问题!呵呵!偶四菜鸟

[复制链接]
2041|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fjfjja|  楼主 | 2007-12-7 18:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.8051单片机堆栈可以设置在什么 地方,有什么用? 
  如:
     COUNT: PUSH DPH          
            PUSH DPL           
            MOV DPTR,#TABLE
            MOVC A,@A+DPTR
            POP DPL
            POP DPH
            RET
     TABLE: DB 00,01,04,09,16,25,36,49,64,81
  直接打:
     COUNT: MOV DPTR,#TABLE
            MOVC A,@A+DPTR
            RET
     TABLE: DB 00,01,04,09,16,25,36,49,64,81
  不行吗?
2.8031单片机外部程序存储器和外部数据存储器地址都是0000H-FFFFH, 在实际使用中是否存在地址重叠,那是如何区分? 
3.MCS-51内部RAM的位寻址区,位地址为00H-7FH,和RAM字节相同(00H-7FH),在实际使用中是否会发生冲突,如何区分?(举指令)
希望大家帮帮我!真的很困惑!

相关帖子

沙发
bsbjx| | 2007-12-7 22:01 | 只看该作者

先找本书看看。

   1 堆栈在RAM中。作用:遇中断时保护现场[现场是指相关的寄存器]。
     子程序中,如需保护现场的话,push 和pop不能省。

   2  程序和数据的地址是分开的,硬件连线就不一样。

   3  mov  bit,c与mov  #byte,a是不一样的。
      RAM字节有8位,位地址只有1位,区分的关键所在。

  

使用特权

评论回复
板凳
maychang| | 2007-12-8 13:38 | 只看该作者

1、堆栈设在什么地方。
理论上设在任何地方都可以,但上电后SP默认值为07H,恰是工作寄存器区,这块地方一般来说要留着给中断程序用,所以堆栈最好设在不妨碍其它程序的地方,通常是设在RAM的高端。

直接打:
     COUNT: MOV DPTR,#TABLE
            MOVC A,@A+DPTR
            RET
     TABLE: DB 00,01,04,09,16,25,36,49,64,81
  不行吗?

在破坏DPTR内容也没有关系时,可以。

2、访问外部程序存储器和外部数据存储器指令不同,所以不必担心。

3、指令不同,所以可以区分。
但需要注意,不同指令不同地址可能访问的却是同一位置。

使用特权

评论回复
地板
ayb_ice| | 2007-12-8 15:34 | 只看该作者

看书

使用特权

评论回复
5
fjfjja|  楼主 | 2007-12-8 20:18 | 只看该作者

非常感谢3楼和4楼!

    正是书中写的不明确!多亏各位指点!小弟不胜感激!

使用特权

评论回复
6
fjfjja|  楼主 | 2007-12-8 20:20 | 只看该作者

哦!是2楼和3楼!当然!4楼也是非常感谢!毕竟为小弟浪费

谢谢

使用特权

评论回复
7
leftluoyi| | 2008-2-16 22:17 | 只看该作者

堆栈也就是一个保护现场的作用

使用特权

评论回复
8
webjoy| | 2008-2-19 23:26 | 只看该作者

和想像的有点出入

2.8031单片机外部程序存储器和外部数据存储器地址都是0000H-FFFFH, 在实际使用中是否存在地址重叠,那是如何区分? 

程序存储器用MOVC访问,外部数据存储器用MOVX访问。

使用特权

评论回复
9
ayb_ice| | 2008-2-20 09:49 | 只看该作者

这些都是基本问题,还是看书吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

101

帖子

0

粉丝