❶ 80C51 单片机堆栈区的进栈和出栈遵循的原则是
80C51 单片机堆栈区的进栈和出栈遵循的原则是后进先出。
❷ 51单片机堆栈是什么意思可以对哪些单元堆栈
堆栈的功能就是先进后出,这样可以非常简单的解决子程序调用和中断(其实是特殊的子程序调用)问题,主要是嵌套的返回,用堆栈能准确的找到返回点。51单片机的堆栈是向上生长的,其实可以利用片内RAM中没用到的一切空间(当然得是连续的),复位后堆栈指针指向07H,一般从30H开始使用,就是复位后将堆栈指针指向30H,一定要弄清楚中断还有子程序调用时单片机是怎么压栈,返回时是怎么出栈的,利用堆栈可以让中断返回时返回到指定的地方,这招很绝。
❸ 求解单片机原理题1、请说明80C51单片机的堆栈的作用和操作规律。补考试题,求解,急急急
1.堆栈用于响应中断或调用子程序时保护断点地址,也可通过栈操作指令(push
和pop保护和恢复现场)其中入栈时先SP+1再将内容压入当前SP所指示的堆栈单元
中,出栈则先将SP所指示的内部ram单元中内容送入直接地址寻址的单元中,再将
SP减1.
2.中断允许寄存器的功能是控制CPU对中断的开放和屏蔽以及每个中断源是否允许
中断结构包括EA(CPU中断总允许位),ES(串行口中断允许位)ET1(定时器1中
断允许位)EX1(外部中断1中断允许位)ET0(定时器0中断允许位)EX0(外部中
断0中断允许位)
3.T机=12/fosc=12/(6*E6)=2us
X=2*E13-T/T机=8192-200/2=8092=1F9CH=1111 1100 1110 0B
因为TL1的高3位未用, 修正后X=1111 1100 0001 1100B=FC1CH
4.LJMP为长转移指令,可转向64KB程序存储器的任一单元;SJMP为相对转移指令
,偏移范围-128~+127共259字节;AJMP为绝对转移指令,转移目的在指令后一个
存储单位所在2K区间内。
5.按键抖动:在触点抖动期间检测按键的通与断状态,可能导致判断出错,即按
键一次按下或释放被错误认为是多次操作。
6.汽车的温控系统,测控系统,防盗报警等多项系统中应用单片机。汽车电子中
涉及A/D和D/A转换的模块基本都会有单片机的存在。以下以汽车倒车雷达为例,
雷达控制部分由89C51单片机构成,前端数据采集由超声波测距,系统由发射和接
收装置来获取数据,根据所测得的距离来判断是否调用声音报警程序,距离小于
预置点时,调用报警模块。
❹ 关于51单片机堆栈的问题
首先,SP是堆栈指针,当压堆栈的时候,它增加一,当出栈的时候,它减一。
PUSH
ACC和POP
ACC分别是压和出的指令。
除此之外,中断和call指令,硬件自动将PC程序指针压栈,等到reti或ret指令的时候,出栈。
一般讲SP设置大一点,比如70H,以免和其他单元冲突。
❺ 简述51单片机堆栈进栈和出栈操作规则
1.堆栈用于响应中断或调用子程序时保护断点地址,也可通过栈操作指令(push
和pop保护和恢复现场)其中入栈时先SP+1再将内容压入当前SP所指示的堆栈单元
中,出栈则先将SP所指示的内部ram单元中内容送入直接地址寻址的单元中,再将
SP减1.
2.中断允许寄存器的功能是控制CPU对中断的开放和屏蔽以及每个中断源是否允许
中断结构包括EA(CPU中断总允许位),ES(串行口中断允许位)ET1(定时器1中
断允许位)EX1(外部中断1中断允许位)ET0(定时器0中断允许位)EX0(外部中
断0中断允许位)
3.T机=12/fosc=12/(6*E6)=2us
X=2*E13-T/T机=8192-200/2=8092=1F9CH=1111 1100 1110 0B
因为TL1的高3位未用, 修正后X=1111 1100 0001 1100B=FC1CH
4.LJMP为长转移指令,可转向64KB程序存储器的任一单元;SJMP为相对转移指令
,偏移范围-128~+127共259字节;AJMP为绝对转移指令,转移目的在指令后一个
❻ 什么是堆栈MCS-51单片机的堆栈怎样设置的
堆栈其实就是一块存储器区域,51单片机中可以用寄存器SP来设置栈顶地址,压栈操作,地址是往上加的,出栈则地址往下减。遵循后进先出原则。
❼ 关于单片机的问题!100分
我答看看:
一、-----------------------------------------
1、255
2、低
3、55H
4、0FFH
5、0003H
6、64
7、ORG
8、译码
9、片选
10、PC、PC、中断服务
11、MOV、MOVX、MOVC
二、---------------------------------------
1、对
2、对
3、错
4、对
5、错
三、----------------------------------------
1、看书
2、进堆栈时SP先加一,后送数。出栈时先取数,SP后减一
3、MOV A,R7
MOV A,30H
MOV A,@R1
MOV A,#00H
四、---------------------------------------------------
1、置位 bit、将direct数据压栈、累加器自减一
2、外部中断1、串口中断、定时器T1
3、12H、35H、09H
4、0、1、0
五、---------------------------------------------------
1、MOV R0,#30H
MOV R1,#09H
LOOP:
MOV A,#1FH
MOV @R0,A
DJNZ R1,LOOP
END
2、10HZ的周期为100MS,高低电平分别为50MS
12M的晶振,机器周期为1US,定时器0工作方式1的定时时间可以达到50ms
所以让T0每隔50MS中断一次,对P2.0去反即可。
ORG OOOOH
LJMP MAIN
ORG 000BH
LJMP TOSEV
ORG 0100H
MAIN:
MOV SP,#60H
MOV TMOD,#01H
MOV TL0,#0B0H
MOV TH0,#3CH
SETB ET0
SETB EA
SETB TR0
AJMP $
T0SEV:
MOV TL0,#0B0H
MOV TH0,#3CH
CPL P2.0
RETI
3、
MOV DPL,#00H
MOV DPH,#20H
MOV A,#0FFH
LOOP:
MOVX @DPTR,A
DEC A
JNZ LOOP
❽ 单片机堆栈出栈问题
你的理解是正确的,以51为例:需要保存的参数累加器A和状态字PSW,在程序产生中断的时候,堆栈的做法是:
MOV SP,#60H
PUSH ACC
PUSH PSW
.......
...
POP PSW
POP ACC
这种做法很方便
最好还是不要用工作寄存器做,原因:R0~R7在程序中有他自己的用处,重复使用会丢失数据,如果说51有4组工作寄存器可用,那么就要面临选体的问题,这样就会很麻烦。
事实上,堆栈的设计是单片机硬件设计的一个理念,那就是尽可能的把数据按类别分开处理,就是让堆栈里的数据区别于RAM里的数据,说到底,工作寄存器也是存储数据的,本质上是一样的,但在设计单片机的时候尽可能地分开,这样可以使得单片机的功能更加强大,执行效率更高
51单片机的工作寄存器是在人啊摹RAM中统一编址的,那么还有的单片机的工作寄存器是独立出来的,也就是为了达到这个目的!
总之,既然有了 堆栈操作这匹“好马”,就没必要用别的 “破鞍”了!!
❾ 51单片机的堆栈和出栈使用的哪种寻址方式
供电和接口电平是两码事,你要适用于3.3v和5v两种电平的,那就要选那种3.3v标准并能承受5v的。
❿ 8051单片机堆栈
51单片机的堆栈是向上生长的,就是堆栈不为空时,栈底地址小于栈顶地址,当将数据入栈时,栈顶地址增加。还有一个技巧是,堆栈是数据存储器的一部分,也就是说堆栈除了利用push和pop访问,也可以通过普通的选址方法访问,例如mov。有时我们想访问堆栈数据,但不想改动变动栈顶,这时可以通过mov来访问数据。还有一个书上很少提到的知识点是出栈之后,原来那个栈顶的内容并不会清零,所以我们依然可以像对待普通数据存储器一样访问。