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

[复制链接]
3144|8
 楼主| fjfjja 发表于 2007-12-7 18:36 | 显示全部楼层 |阅读模式
1.8051单片机堆栈可以设置在什么&nbsp;地方,有什么用?&nbsp;<br />&nbsp;&nbsp;如:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;COUNT:&nbsp;PUSH&nbsp;DPH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PUSH&nbsp;DPL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;DPTR,#TABLE<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOVC&nbsp;A,@A+DPTR<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;POP&nbsp;DPL<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;POP&nbsp;DPH<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RET<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TABLE:&nbsp;DB&nbsp;00,01,04,09,16,25,36,49,64,81<br />&nbsp;&nbsp;直接打:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;COUNT:&nbsp;MOV&nbsp;DPTR,#TABLE<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOVC&nbsp;A,@A+DPTR<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RET<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TABLE:&nbsp;DB&nbsp;00,01,04,09,16,25,36,49,64,81<br />&nbsp;&nbsp;不行吗?<br />2.8031单片机外部程序存储器和外部数据存储器地址都是0000H-FFFFH,&nbsp;在实际使用中是否存在地址重叠,那是如何区分?&nbsp;<br />3.MCS-51内部RAM的位寻址区,位地址为00H-7FH,和RAM字节相同(00H-7FH),在实际使用中是否会发生冲突,如何区分?(举指令)<br />希望大家帮帮我!真的很困惑!
bsbjx 发表于 2007-12-7 22:01 | 显示全部楼层

先找本书看看。

&nbsp;&nbsp;&nbsp;1&nbsp;堆栈在RAM中。作用:遇中断时保护现场[现场是指相关的寄存器]。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;子程序中,如需保护现场的话,push&nbsp;和pop不能省。<br /><br />&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;程序和数据的地址是分开的,硬件连线就不一样。<br /><br />&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;mov&nbsp;&nbsp;bit,c与mov&nbsp;&nbsp;#byte,a是不一样的。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RAM字节有8位,位地址只有1位,区分的关键所在。<br /><br />&nbsp;&nbsp;<br />
maychang 发表于 2007-12-8 13:38 | 显示全部楼层

1、堆栈设在什么地方。<br />理论上设在任何地方都可以,但上电后SP默认值为07H,恰是工作寄存器区,这块地方一般来说要留着给中断程序用,所以堆栈最好设在不妨碍其它程序的地方,通常是设在RAM的高端。<br /><br />直接打:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;COUNT:&nbsp;MOV&nbsp;DPTR,#TABLE<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOVC&nbsp;A,@A+DPTR<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RET<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TABLE:&nbsp;DB&nbsp;00,01,04,09,16,25,36,49,64,81<br />&nbsp;&nbsp;不行吗?<br /><br />在破坏DPTR内容也没有关系时,可以。<br /><br />2、访问外部程序存储器和外部数据存储器指令不同,所以不必担心。<br /><br />3、指令不同,所以可以区分。<br />但需要注意,不同指令不同地址可能访问的却是同一位置。
ayb_ice 发表于 2007-12-8 15:34 | 显示全部楼层

看书

  
 楼主| fjfjja 发表于 2007-12-8 20:18 | 显示全部楼层

非常感谢3楼和4楼!

&nbsp;&nbsp;&nbsp;&nbsp;正是书中写的不明确!多亏各位指点!小弟不胜感激!
 楼主| fjfjja 发表于 2007-12-8 20:20 | 显示全部楼层

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

谢谢
leftluoyi 发表于 2008-2-16 22:17 | 显示全部楼层

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

  
webjoy 发表于 2008-2-19 23:26 | 显示全部楼层

和想像的有点出入

2.8031单片机外部程序存储器和外部数据存储器地址都是0000H-FFFFH,&nbsp;在实际使用中是否存在地址重叠,那是如何区分?&nbsp;<br /><br />程序存储器用MOVC访问,外部数据存储器用MOVX访问。
ayb_ice 发表于 2008-2-20 09:49 | 显示全部楼层

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

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

101

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部