51单片机有两个主程序如何在主程序循环的时候通过按键进入中断子程序

    主程序调用子程序过程应包括保護断点、跳至子程序首址、保护现场、子程序处理、恢复现场、恢复断点(子程序返回)6步这六步都是用软件指令完成的。其中前两步保护断点和跳至子程序首址由调用指令CALL完成保护断点其实就是把断点地址推入堆栈中保护起来,要注意的是保护的断点应是紧跟着调用指令的下一条指令地址而不是调用指令本身地址,否则会引起重复调用“死循环”这点必须提醒学生注意。LCALL与ACALL是MCS-51单片机有两个主程序嘚两条调用指令分别称为长调用和绝对调用,两指令主要区别在于LCALL后面操作数直接就是16位二进制的子程序入口地址;而ACALL后面操作数只是11位二进制数子程序入口地址是把这11位数作为低位地址,再加上ACALL的下一条指令地址(即断点地址)的高5位作为高位地址从而形成16位的子程序入口地址。由此可知两条调用指令的调用范围是不一样的,LCALL为64KB程序存贮器任何范围而ACALL在高5位地址不变的同一页2KB范围内。

    由于主程序与子程序可能会使用相同的寄存器和存贮单元存放数据如果两者这些数据无关,那么子程序在使用这些相同寄存器和存贮单元之前僦必须先把主程序存放在这些区间里的数据现场保护起来,子程序在使用这些区间结束后再把主程序现场恢复出来,以便子程序返回主程序后主程序继续使用这些区间。现场保护与恢复一般采用堆栈推入PUSH指令与堆栈弹出POP指令实现当然也可采用改变工作寄存器R0~R7区间指针等方法实现。子程序返回只需用RET指令就可把保护在堆栈中的断点恢复出来继续执行主程序。

    此外主程序与子程序是密切联系的,它们の间存在着入口参数与出口参数传递问题也就是主程序如何把输入参数传给子程序,子程序又如何把处理结果的输出参数带回给主程序两者参数传递一般可采用寄存器或存贮单元、堆栈、数据指针等方法实现。

    子程序再调用子程序叫做子程序嵌套由于MCS-51单片机有两个主程序只能把内部RAM 00~7FH 128字节单元作为堆栈使用,断点地址保护到堆栈中需占2字节单元所以子程序最多可能嵌套64级,当然实际使用中子程序嵌套┅般2~3级否则程序结构就显得太复杂了。

    中断过程远比调用子程序过程要复杂它包括中断请求(或申请)、中断排队、中断响应、中断垺务(或处理)和中断返回5大步。这5大步是由硬件和软件结合完成的

    中断请求由中断源向CPU提出。MCS-51单片机有两个主程序只有T/C0定时/计数器0溢絀、T/C1定时/计数器1溢出、TXD/RXD串行口发送与接收一帧完、INT0外部中断0和INT1外部中断1等5个硬件中断源其中前三个为内部中断源,后两个为外部中断源

    由于CPU在某一时刻只能响应一个中断请求,为处理执行主程序时同时来了多个中断请求和正在处理某一中断时又来了新的中断请求这两种凊况计算机采用硬件或软件给各个中断源按优先权大小进行中断排队,从多个中断申请中选出一个级别最高中断请求而响应之这一过程称为中断排队。MCS-51单片机有两个主程序用户可用指令设置高、低两个优先级而且同级中还有5个固定的隐含优先级,从高到低的优先级顺序分别是INT0、T/C0、INT1、T/C1、TXD/RXD这样,在执行主程序时同时来了两个以上中断请求,则先按高低两级选择高优先级如只有一个高级就直接选之,洳有两个以上都是同级则按同级隐含优先级,选择其中一个高级别如正在执行一个低优先级,又来了一个高优先级(即正在执行的中斷级别低于新来的中断级别)则高优先级中断低优先级,这就形成了两级中断嵌套如正在执行低的又来了另一低的或者正在执行高的叒来了一个低的或高的(即正在执行的中断级别高于或等于新来的中断级别),则不予理睬不会引起中断嵌套,也就是说同级隐含原则茬不同时来了同级中断时无效可见,MCS-51单片机有两个主程序最多形成两级中断嵌套

    CPU在执行任何机器指令时,在每一个机器周期TCY都要抽点時间(MCS-51单片机有两个主程序为S5P2状态节拍)来采集查询有无中断请求如没有,则继续执行原程序机器指令如有中断请求,则先从中选出級别最高者在中断响应条件成立时,去处理响应此中断请求

MCS-51单片机有两个主程序的中断响应必要条件是中断屏蔽总开关EA和中断请求相應的屏蔽分开关都必须闭合,只有这样中断请求信号才能送到CPU。此外还不能碰到以下3种情况,即有优先级更高的中断请求同时提出或鍺正在执行同级或高级中断正在执行的指令还没有执行完、正在执行RETI或访问中断屏蔽寄存器IE和中断排队寄存器IP,这3种情况是中断响应的充分条件这1种情况中断排队轮不到它响应;第2种情况必须等到现行指令执行完,再响应中断指令周期分为1、2、4TCY三种机器周期,计算机烸个TCY出现仅查看一次中断请求因此,2TCY和4TCY机器指令有可能没有执行完如果执行指令没执行完就去响应中断,则中断处理返回后计算机佷难把分断开执行的同一条指令连贯起来;第3种情况处理与第2种情况类似,但它除了要把现行的RETI指令或访问IE、IP指令执行完处还需再执行丅一条指令,方能响应中断利用这个原理,很容易实现单步STEP操作(调试程序时使用)

    中断服务和中断返回又由关(禁止)同级和低级Φ断、中断请求撤除、保护断点、跳至中断服务程序入口、保护现场、中断处理、恢复现场、开(允许)同级和低级中断、恢复断点(中斷返回)等9小步组成。这9步中断服务过程与前面介绍的6步调用子程序过程类似只是增加了开、关同级和低级中断请求以及中断请求撤除3步,其余6步完全一致开、关同级和低级中断目的是使不同时来中断请求的同级隐含排队原则无效,此时只能实现高级嵌套低级的两级中斷嵌套在中断处理的返回前清除原中断请求原因是防止同一次中断申请被重复响应。

    中断服务过程的前4步是由硬件自动实现的这点完铨不同于调用子程序过程。当然TXD/RXD中断请求与INT0、INT1电平触发中断请求还需用户分别用软件和硬件清除中断请求MCS-51单片机有两个主程序的中断服務程序入口地址是固定的,它们分别是INT0 为0003H、T/C0为000BH、INT1为0013H、T/C1为001BH、TXD/RXD为0023H断点现场保护与恢复也是通过堆栈推入与弹出或改变工作寄存器区来实现的。

中断处理完后就应返回断点继续执行主程序,开同级和低级中断、恢复断点2步可用中断返回指令RETI实现注意子程序返回指令RET只能实现恢复断点,而不能开同级和低级中断 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用请及时通过电子邮件或电话通知我们,以迅速采取适当措施避免给双方造成不必要的经济损失。

(ATMEL)、恩智浦(NXP飞利浦旗下公司)、国际商业机器公司(IBM)、德州仪器(TI)、富士通(FUJITSU)和任天堂等,相信这些公司不 是脑门发热的家伙它们选择ARM一定有更长远的考虑。  處理器行业方兴未艾每天都会有新的技术和方案来满足我们的需求。在低端市场有51单片机有两个主程序等8位处理器来 满足我们制作流水燈、电子钟之类的作品更可以作为控制类产品的开发。它们结构简单、价格便宜、易学易用是目前电子爱好者热衷的玩艺儿。在高端市场由x86结构 的32位或64位的处理器来构成我们PC机的核心部分。它们 性能极高、速度飞快一边看电影一边聊QQ都不在话下。  而一些需要电池供電的手持设备

八位单片机有两个主程序由于内部构造简单体积小,成本低廉在一些较简单的控制器中应用很广。即便到了本世纪在單片机有两个主程序应用中,仍占有相当的份额由于八位单片机有两个主程序种类繁多,本文仅将常用的几种在性能上作一个简单的比較供读者在使用时作参考。1. 51系列应用最广泛的八位单片机有两个主程序首推Intel的51系列由于产品硬件结构合理,指令系统规范加之生产曆史“悠久”,有先入为主的优势世界有许多著名的芯片公司都购买了51芯片的核心专利技术,并在其基础上进行性能上的扩充使得芯爿得到进一步的完善,形成了一个庞大的体系直到现在仍在不断翻新,把单片机有两个主程序世界炒得沸沸扬扬有人推测,51芯片可能朂终形成事实上的标准MCU芯片51系列优点之一是它从内部的硬件到软件有一套

该设计基于STC单片机有两个主程序设计,电路主要由51单片机有两個主程序最小系统和按键部分、蜂鸣器报警部分、LCD液晶显示部分等组成该电路设计简单,单层板加上几根跳线即可完成适合电子初学鍺DIY制作。电子密码锁具体功能介绍:1、该电子密码锁默认密码为密码通过键盘输入,若密码正确则将锁打开。2、密码可以由用户自己修改设定(只支持6位密码)锁打开后才能修改密码。修改密码之前必须再次输入密码在输入新密码时候需要二次确认,以防止误操作3、报警、锁定键盘功能。密码输入错误显示器会出现错误提示若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘4、AT24C02保存密码,支持复位保存掉电保存功能。附件内容包括:整个电子密码锁

51单片机有两个主程序里面我想給触发预订一个次数,就是每当触发n次,里面的主程序就进入死循环了比如n就是3000,我应该如何运用EEPROM呢... 51单片机有两个主程序里面我想給触发预订一个次数,就是每当触发n次,里面的主程序就进入死循环了比如n就是3000,我应该如何运用 EEPROM呢

51单片机有两个主程序里面我想給触发预订一个次数,

--你说的触发是什么?

就是每当触发n次,里面的主程序就进入死循环了

比如n就是3000,我应该如何运用 EEPROM呢

--編程、编译、下载

--单片机有两个主程序就可以按照你的意思,开始工作了

如果我写一次程序给单片机有两个主程序EEPROM定义一个值,導入单片机有两个主程序再写另外一个程序,导入单片机有两个主程序 EEPROM的值是我第一个程序的值吗
按钮按下3000次以内,运行程序循环一3000次以后是运行循环二
我是这个意思,就是不管开关机每次开机后按下次数累加的意思

你对这个回答的评价是?

我要回帖

更多关于 单片机有两个主程序 的文章

 

随机推荐