- 1、本文档共79页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机原理与应用 第3章 MCS-51指令系统 四、初始化设置 1、选择仿真器、仿真头类型及CPU型号 ●设置仿真 2. 选择仿真语言 3. 选择“目标文件”地址及种类 4. 选择仿真器与PC机之间通讯端口及速率 5. 设置文件框 2. 外部RAM及I/O端口与累加器A之间的数据传送 3.累加器A与程序存储器ROM之间的数据传送指令 4.堆栈操作指令 5.字节交换指令 3.1.2算术运算指令 1. 加法指令 2. 减法指令 3. 加1指令 4. 减1指令 5. 乘法指令 6. 除法指令 7. 十进制加法调正指令 3.1.3 逻辑运算指令 3.1.4 位操作指令 3.1.5 控制及转移指令 1. 无条件跳转指令 2. 调用指令 3. 返回指令 4. 条件跳转指令 5. 空操作指令 3.2 汇编语言程序设计基础 3.2.1 汇编语言程序结构 2. 常见实用程序设计举例 3.2.2 多任务程序结构及实现 1. 单任务程序与多任务程序结构 2. 实时多任务程序结构 3.2.3 汇编语言程序编辑与执行 3.2.4 对汇编语言程序的基本要求 1.正确性 2. 可靠性 3. 可读性好 4. 程序代码要短 5. 程序执行时间短 1. MCS-51程序总体结构 MCS-51汇编语言源程序一般由主程序、完成特定操作的子程序(可能不止一个)及相应功能的中断服务程序等部分组成,结构如下: ;---------------程序头(即定义变量和等值符号)--------- SCL BIT P1.2 ;定义SCL位变量 …… ORG 0000H LJMP Main ;------------------主程序------------------------ ORG yyyy ;其中yyyy就是主程序代码存放区的首地 ;址,如0100H。 Main: MOV R0, #01H LOOPIC: MOV @R0, #00H INC R0 CJNE R0, #0, LOOPIC ;内部RAM清0 MOV SP,#7FH ;初始化有关寄存器,如设置堆栈指针SP、初始化外设控制寄 ;存器,如中断控制寄存器、定时/计数器控制寄存器等。 …… ;主程序实体,具体指令由程序功能决定。 LCALL SUB1 ;调用子程序1,其中SUB1为子程序名。 …… ;------------------子程序结构------------------------ SUB1: PUSH PSW PUSH ACC ;通过PUSH指令保护子程序中用到的有关寄存器,如Acc、 ;PSW等,即保护现场。 …… ;子程序实体,具体指令由程序功能决定。 POP ACC POP PSW ;恢复现场。 RET ;子程序最后一条指令,使子程序运行结束,返回主程序断点。 ;------------------中断服务程序结构------------------------ PUSH PSW PUSH ACC ;通过PUSH指令保护中断服务程序中用到的有关寄存器。 SETB RS0 CLR RS1 ;切换工作区(这里假设使用1区) …… ;中断服务程序实体,具体指令由程序功能决定。 POP ACC POP PSW ;恢复现场。 CLR TI RETI 在单任务程序结构中,按预先设定的顺序执行各任务(即模块),任何时候只执行其中的一个任务,如图3-3所示。 图3-3 单任务程序结构 可见单任务程序结构简单、清晰,编写、调试比较容易,是单片机应用系统中最常用的一种程序结构。但在单任务程序结构中,只能通过查询(如果满足条件,则通过LCALL指令执行)及中断方式执行某些需要实时处理的事件,不适应具有多个需要实时处理的事件的应用系统。 为此,在单片机应用系统中,有时需要用“实时多任务”程序结构。但由于单片机内部数据存储器容量小,一般只有256个字节,没有更多空间存放任务切换时需要保护的数据——现场(如PC指针、状态寄存器PSW、累加器Acc等)和中间结果。因此决定了单片机应用系统多任务程序结构与一般微机、小型机多任务操作系统程序结构有所不同。 实时多任务程序结构如图3-4所示,把需要实时处理的多个任务排成一个队列,通过队列指针(也称为任务号),借助“JMP @A+DPTR”指令(或条件转移指令)现实任务之间的切换。 可见在多任务程序结构中,各任务地位相同,每一任务内的作业地
文档评论(0)