PIC配置位之STVREN
来源:互联网 发布:一号店软件吧 编辑:程序博客网 时间:2024/05/02 00:28
讨论这个配置位之前先来看看相关知识。
下面的图是某型号PIC芯片的程序存储器的映射和堆栈:
从上面可以看出,该PIC芯片有31级堆栈。
下面的图是堆栈的更详细的情况:
上图有个重要的东西,Stcak Pointer(STKPTR),就是堆栈的指针。5位可以实现32个地址的寻址,但是STKPTR=00000是不指向任何RAM单元的,只是表示堆栈满了,上溢或下溢。所以堆栈只有31级。
入栈(Push):先让STKPTR加1,再把PC(程序计数器 Program Counter)中的值写入STKPTR指向的单元中。
出栈(Pop):先把PC中的值写入STKPTR指向的单元中,在让STKPTR减1。
如果一直Push而不Pop的话,当到第32次你再Push就Push不进去了,因为没地方了嘛,接下来进入正题咯。
STVREN: Stack Full/Underflow Reset Enable bit
1 = Stack full/underflow will cause Reset
0 = Stack full/underflow will not cause Reset
如果STVREN 位已经置1 (默认),第31 次进栈将把(PC + 2)值压入堆栈,从而将STKFUL(Stack满标志位) 位置1 并复位器件。STKFUL 位将保持置1,而堆栈指针将被清零。(If STVREN is set(default), the 31st push will push the (PC + 2) value onto the stack, set the STKFUL bit and reset the device. The STKFUL bit will remain set and the Stack Pointer will be set to zero.)
如果将STVREN 清零,第31 次进栈时STKFUL 位将会置1,堆栈指针递增到31。任何其他进栈操作都不会覆盖第31 次进栈的值,并且STKPTR 将保持为31。(If STVREN is cleared, the STKFUL bit will be set on the 31st push and the Stack Pointer will increment to 31.Any additional pushes will not overwrite the 31st push and STKPTR will remain at 31.)
原创声明:关于PIC的博客我也同时更新在 与非网 无知的萝卜的博客
0 0
- PIC配置位之STVREN
- PIC的配置位
- PIC配置位之FSCM(故障保护时钟监视器)
- PIC单片机配置位设置方法
- PIC 里面关于 __CONFIG( ) 配置位
- PIC 里面关于 __CONFIG( ) 配置位
- PIC单片机之硬件仿真的配置字问题
- PIC单片机配置字
- PIC单片机之通信协议
- PIC单片机之PWM
- PIC单片机之PWM
- PIC单片机之TIME2
- PIC单片机之中断
- PIC单片机之看门狗
- PIC之休眠问题
- PIC之中断
- PIC单片机之注意事项
- pic之I2C设置
- 软件测试中条件覆盖,路径覆盖,语句覆盖,分支覆盖的区别
- AngularJS入门教程07:路由与多视图
- 访问控制列表
- AngularJS入门教程08:更多模板
- popen() 函数用法
- PIC配置位之STVREN
- 8-21
- libusb-win32介绍
- SQLITE3 语法
- 射频电路PCB的设计技巧
- html5 canvas 详细使用教程
- Java中的break,continue,return
- Knockout应用开发指南(完整版) 目录索引
- 黑马程序员----Java集合框架学习笔记2 Map-工具类-泛型