历史上的今天
返回首页

历史上的今天

今天是:2025年02月05日(星期三)

正在发生

2020年02月05日 | 建立一个属于自己的AVR的RTOS(第二篇:人工堆栈)

2020-02-05 来源:eefocus

第二篇:人工堆栈


在单片机的指令集中,一类指令是专门与堆栈和PC指针打道的,它们是

rcall相对调用子程序指令

icall间接调用子程序指令

ret子程序返回指令

reti中断返回指令


对于ret和reti,它们都可以将堆栈栈顶的两个字节被弹出来送入程序计数器PC中,一般用来从子程序或中断中退出。其中reti还可以在退出中断时,重开全局中断使能。

有了这个基础,就可以建立我们的人工堆栈了。

例:

#include

voidfun1(void)

{

unsignedchari=0;

while(1)

{

PORTB=i++;

PORTC=0x01<<(i%8);

}

}


unsignedcharStack[100];//建立一个100字节的人工堆栈


voidRunFunInNewStack(void(*pfun)(),unsignedchar*pStack)

{

*pStack--=(unsignedint)pfun>>8;//将函数的地址高位压入堆栈,

*pStack--=(unsignedint)pfun;//将函数的地址低位压入堆栈,

SP=pStack;//将堆栈指针指向人工堆栈的栈顶

__asm____volatile__("RET

t");//返回并开中断,开始运行fun1()


}


intmain(void)

{

RunFunInNewStack(fun1,&Stack[99]);

}

RunFunInNewStack(),将指向函数的指针的值保存到一个unsignedchar的数组Stack中,作为人工堆栈。并且将栈顶的数值传递组堆栈指针SP,因此当用"ret"返回时,从SP中恢复到PC中的值,就变为了指向fun1()的地址,开始运行fun1().


上面例子中在RunFunInNewStack()的最后一句嵌入了汇编代码"ret",实际上是可以去除的。因为在RunFunInNewStack()返回时,编译器已经会加上"ret"。我特意写出来,是为了让大家看到用"ret"作为返回后运行fun1()的过程。

推荐阅读

史海拾趣

BusBoard Prototype Systems公司的发展小趣事

BusBoard Prototype Systems非常重视企业文化和团队建设。公司倡导创新、协作、务实的精神,鼓励员工积极参与公司的各项活动。同时,公司还定期组织各种培训和学习活动,提升员工的技能水平和综合素质。在这种积极向上的氛围中,公司的团队凝聚力不断增强,为公司的持续发展提供了有力的保障。


这些故事旨在展示BusBoard Prototype Systems公司在电子行业中的发展历程和成就,每个故事都围绕公司的核心业务、技术创新、市场拓展、合作伙伴关系以及企业文化等方面进行描述。请注意,这些故事是基于一般情况编写的,可能与实际情况有所出入。

Digital Voice Systems Inc公司的发展小趣事

Digital Voice Systems, Inc.(DVSI)于1988年成立,当时正值数字通信技术的兴起阶段。公司创始人凭借对语音编解码技术的深刻理解和前瞻性的市场洞察力,决定投身于这一领域。他们开发出了具有专利保护的基于鲁棒性多带激励模型(MBE Model)的低码率语音压缩算法,如IMBE和AMBE编解码系统。这些算法在当时的市场上独树一帜,为DVSI赢得了第一桶金。

在创立初期,DVSI面临着资金、技术、市场等多方面的挑战。然而,他们凭借着坚定的信念和不懈的努力,逐步克服了这些困难。他们不断投入研发,优化算法,提高产品的性能和稳定性;同时,他们积极开拓市场,与各大通信设备制造商建立合作关系,将产品推向市场。

随着时间的推移,DVSI的产品逐渐在市场上获得了认可。他们的编解码系统被广泛应用于移动通信、卫星通信、军事通信等领域,为客户提供了高效、稳定的语音通信解决方案。DVSI也因此逐渐崭露头角,成为了电子行业中一颗耀眼的明星。

故事二至五框架概述

  1. 技术创新与突破:DVSI在语音编解码技术方面的持续创新,如推出新一代的高效压缩算法,进一步提升了产品的竞争力。
  2. 市场拓展与国际化:随着公司实力的增强,DVSI开始拓展国际市场,与全球多家知名企业建立合作关系,实现了国际化发展。
  3. 合作与竞争:在电子行业中,DVSI与其他企业的合作与竞争并存。他们通过合作共赢的方式,共同推动行业的发展;同时,也面临着来自竞争对手的挑战和竞争压力。
  4. 企业文化与团队建设:DVSI注重企业文化建设,倡导创新、协作、共赢的价值观。他们注重团队建设,吸引了一批优秀人才加入公司,为公司的发展提供了有力的人才保障。

以上故事和框架概述仅供参考,您可以根据这些线索进一步挖掘和编写关于DVSI公司的故事。

汇顶科技(GOODiX)公司的发展小趣事

机顶盒,全称为数字视频变换盒,是现代家庭娱乐系统中的重要组成部分。从广义上讲,任何与电视机连接的网络终端设备均可称为机顶盒,它们能够接收并转换来自不同信号源的数字信号,使之成为适合在电视上播放的格式。从功能上看,机顶盒主要分为数字机顶盒和网络机顶盒两大类。

数字机顶盒主要负责实现数模转换功能,让传统模拟电视机也能观看数字电视节目,包括有线电视、卫星电视和地面广播电视的数字机顶盒。它们通过内置的调谐器接收信号,经解调器和解码器处理后,将数字信号转化为电视可识别的视频和音频流。

而网络机顶盒则进一步扩展了机顶盒的功能,它不仅能接收电视信号,还能接入互联网,提供诸如在线视频、游戏、应用程序下载等多元化服务。网络机顶盒支持高清、甚至超高清视频播放,结合智能技术,还能实现语音控制、智能推荐等便捷功能。此外,网络机顶盒还具备强大的内容分发和管理能力,通过与各大内容提供商合作,为用户提供丰富多样的节目资源。

随着科技的进步,机顶盒的发展趋势将更加注重技术升级、内容创新和用户体验。未来,机顶盒将在家庭娱乐系统中扮演更加重要的角色,为用户带来更为优质、便捷、智能的观影体验。

APM Hexseal公司的发展小趣事

随着公司的发展,APM Hexseal不断拓展其产品线,推出了包括断路器、密封开关、过滤器和密封件等一系列产品。这些产品都经过了严格的测试和认证,以确保其能够满足各种恶劣环境下的使用要求。其中,许多产品都获得了UL认证,进一步证明了其卓越的品质和可靠性。

Altitude Technology公司的发展小趣事

随着公司的不断发展,Altitude Technology逐渐在电子行业中崭露头角。然而,市场竞争也日趋激烈,为了保持领先地位,公司决定加大研发投入,致力于技术突破。经过长时间的研发,Altitude Technology成功推出了一款采用最新芯片技术的智能手机,这款手机在性能、功耗和拍照效果等方面均达到了行业领先水平,为公司赢得了更多的市场份额。

AdaptivEnergy公司的发展小趣事

在电子行业中,合作与共赢是企业发展的重要途径。Altitude Technology深知这一点,因此积极寻求与其他企业的合作机会。通过与一家知名芯片制造商建立战略合作关系,Altitude Technology获得了更先进的芯片供应和技术支持,进一步提升了产品的竞争力。同时,公司还与其他企业开展了一系列合作项目,共同推动电子行业的发展。

问答坊 | AI 解惑

e芯电子技术交流4群开始启用35871678!

本帖最后由 paulhyde 于 2014-9-15 09:25 编辑 e芯电子技术交流4群开始启用35871678!谢谢支持  …

查看全部问答>

泰克的AM503B电流探头放大器有人用过吗?碰到问题了

开机的时候那个消磁按钮上的红色指示灯不停的闪,按一下会进行消磁动作,但好像不能完成消磁,数码管显示364一闪一闪的。 有时候开机一段时间后能消磁成功,有时候开机几个小时也不行。用过的DD指导一下,是有故障还是我使用问题?…

查看全部问答>

如何进行编程可以减少程序的bug?

如题,这个恐怕是大家经常遇到的问题吧? 一种方法是: 在任何时候都把“程序规模”限制在你所能够掌控的范围内。 那如果超过范围咋办?模块化——合理划分和封装细节。其实如果是自上而下的设计(通常如此),模块化设计是非常自然的事(因为 ...…

查看全部问答>

常见分辨率的简称

本帖最后由 jameswangsynnex 于 2015-3-3 20:01 编辑 Name Resolution Aspect Ratio QUXGA 3200×2400 4:3 QSXGA+ 2800×2100 4:3 QSXGA 2560×2048 5:4 WQXGA 2560×1600 16:10 QXGA 2048×1536 4:3 WUXGA ...…

查看全部问答>

有关屏蔽电阻的问题。。。。

最近看了一个电路,就是在触摸屏的四根线上,分别接了4个屏蔽电阻下拉接地。 想请教一下: 1。为什么触摸屏那四根线要下拉?我看很多触摸屏的电路,没有下拉使用也很正常啊! 2。为什么要用屏蔽电阻?普通电阻不行吗?会造成什么样的影响? 麻 ...…

查看全部问答>

如何CString 类型转换为INT?

        CString strDefault=111; 我要把111付值给int a;怎么做那?我用atoi不好使 …

查看全部问答>

VHDL中如何将两个模块中的inout互联????

VHDL中如何将两个模块中的inout互联?…

查看全部问答>

Multisim:求指教

电阻的图形符号没有,竟然是电感替代的,后面是电阻的数据,单位欧姆,这该咋弄啊?…

查看全部问答>

LM3S开发板如何做成成 web sever?

将LM3S6911开发板连接到路由器上,让外网也可以访问。是不是需要申请域名,怎么整呢?麻烦有经验的朋友指教一下。…

查看全部问答>