收藏 分享(赏)

单片机原理及应用(第六讲).ppt

上传人:kpmy5893 文档编号:9132068 上传时间:2019-07-25 格式:PPT 页数:33 大小:93KB
下载 相关 举报
单片机原理及应用(第六讲).ppt_第1页
第1页 / 共33页
单片机原理及应用(第六讲).ppt_第2页
第2页 / 共33页
单片机原理及应用(第六讲).ppt_第3页
第3页 / 共33页
单片机原理及应用(第六讲).ppt_第4页
第4页 / 共33页
单片机原理及应用(第六讲).ppt_第5页
第5页 / 共33页
点击查看更多>>
资源描述

1、程序设计举例 汇编语言编程环境及ISIS仿真介绍 MCS-51中断系统,第 六 讲,一、程序设计举例,对于编程工作,正确的设计思路应该是首先对设计任 务作出透彻的分析,然后根据分析的情况设计出总体方案, 按总体方案的要求画出流程图,最后一步步实现源程序。,1、程序流程图真正的程序设计过程应该是流程图的设计,编程只是将 设计好的程序流程图转换成程序设计语言。程序流程图和对 应的源程序是等效的,但程序流程图给人更明确、直观,且 便于查错和修改。,第 六 讲,第四章 MCS-51汇编语言程序设计,(1)程序流程图的画法先粗后细的原则只考虑逻辑结构和算法,不考虑或少考虑具体指令。集 中精力考虑程序的结

2、构,保证程序的合理性和可靠性,余下 的工作就是进行指令的代换。 第一步:进行最初始规化,画出第一张流程图。 第二步:将第一张流程图的各个子任务进行细化,并决定每 个子任务采用什么算法。这一步的主要任务就是设计算法。画出第二张流程图。 第三步:根据算法要求,为每一个参数、中间结果、各种指针、计数器分配存储单元,确定数据类型和数据结构,完成第三张流程图。,第 六 讲,第四章 MCS-51汇编语言程序设计,(2)从程序流程图到程序画好流程图后,就可以比较方便地进行编程设计了。从二维图形变成一维的程序;从功能描述变成具体的指令实现。,第 六 讲,第四章 MCS-51汇编语言程序设计,2、简单程序就是一

3、种顺序程序,既无分支又无循环。 例一:现有两个双字节无符号数,分别存放在R3R4,R5R6中,高字节在前,低字节在后,编程使两数相加,和数存放到20H21H22H单元中。,第 六 讲,第四章 MCS-51汇编语言程序设计,ORG 2000H CLR C MOV A,R4 ADD A,R6 MOV 22H,A MOV A,R3 ADDC A,R5 MOV 21H,A MOV A,#00H ADDC A,#00H MOV 20H,A,JMP $ END,第 六 讲,第四章 MCS-51汇编语言程序设计,例二:将一个单字节的十六进制数转换成BCD码,单字节数 存放在23H中,转换后,R5存放百位,R

4、6存放十位和个位。,ORG 0000H MOV A,23H MOV B,#100 DIV AB MOV R5,A XCH A,B MOV B,#10 DIV AB,SWAP A ADD A,B MOV R6,A JMP $ END,第 六 讲,第四章 MCS-51汇编语言程序设计,3、分支程序实际的应用程序中,程序不可能始终是直线执行的,常 要求计算机能够作出一些判断并根据判断作出不同的处理, 这就会产生一个或多个分支,体现计算机的智能。(1)简单分支 例三:比较两个无符号8位二进制数的大小,将大的数存入低地址中,设两数分别存在30H和31H中。,第 六 讲,第四章 MCS-51汇编语言程序设

5、计,ORG 0000HLJMP STARTORG 1000H START:CLR CMOV A,30HSUBB A,31HJNC NEXTMOV A,30HXCH A,31HMOV 30H,A NEXT: JMP NEXTEND,第 六 讲,第四章 MCS-51汇编语言程序设计,(2)多重分支 例四:设变量x存入36H单元中,求得函数y的值存入37H中。编程按下式要求给y赋值:x+10 (x=10)y= 0 (10x=5) x-10 (0x5),第 六 讲,第四章 MCS-51汇编语言程序设计,ORG 0000H LJMP START ORG 0100H START:CLR CMOV A,36

6、HCJNE A,#5,M0 M0: JC M1CLR CCJNE A,#0AH,M2 MM: JC M2ADD A,#0AHSJMP EN,M1:CLR CSUBB A,#10SJMP EN M2:MOV A,#0 EN:MOV 37H,ASJMP $END,第 六 讲,第四章 MCS-51汇编语言程序设计,4、循环程序(1)单循环 例五:求1、2、3、n之和(设n256)解:R5作循环次数计数器R6作和数高位字节寄存器n存于内部RAM 23H中最终和存入23H、24H中,第 六 讲,第四章 MCS-51汇编语言程序设计,ORG 0000H LJMP START ORG 0200H START

7、:MOV R5,23HCLR AMOV R6,#00MOV R4,#01H LOOP: CLR CADD A,R4JNC NEXTINC R6,NEXT:INC R4DJNZ R5,LOOPMOV 23H,R6MOV 24H,ASJMP $END,第 六 讲,第四章 MCS-51汇编语言程序设计,(2)多重循环 例六:延时10ms子程序,设主频率为6MHz。解:主频为6MHz,机器周期即为2us,那么执行 一条DJNZ的指令时间为2us,所以:,第 六 讲,第四章 MCS-51汇编语言程序设计,DELY:MOV R5,#100 DLY0:MOV R4,#50 DLY1:DJNZ R4,DLY1

8、 ;50*2=100usDJNZ R5,DLY0 ;100*100=10msRET,第 六 讲,第四章 MCS-51汇编语言程序设计,5、查表程序就是把事先计算或测得的数据按一定的顺序编制成表格, 存放在程序存储器中。例七:一个十六进制数存放在HEX单元的低四位,将其转换成ASCII码,并送回HEX单元。,第 六 讲,第四章 MCS-51汇编语言程序设计,ORG 0000HHEX EQU 33HLJMP BIGAINORG 0200H BIGAIN:MOV A,HEXANL A,#0FHADD A,#03HMOVC A,A+PCMOV HEX,ARET ASCTAB:DB 30H,31H,32

9、H,33H、34H、35H、36H、37HDB 38H、39H、40H,第 六 讲,第四章 MCS-51汇编语言程序设计,二、汇编语言编程环境及ISIS仿真介绍(在系统环境下作演示介绍),第 六 讲,第四章 MCS-51汇编语言程序设计,三、中断的概念(第5章 MCS-51的中断系统),单片机对内、外随机发生的事件的处理是采用查询 和中断两种方式。查询方式:方便、简捷、不增添硬件 电路,但会大量占用CPU 的工作时间。中断方式:增加 了一定的硬件电路,但提高了对突发事件的响应速度, 且不占用CPU工作时间。,什么是中断?中断响应过程? 中断服务(中断服务程序)? 中断系统、中断源、中断请求(中

10、断申请)以及中断返 回、断点保护等基本概念。,中断流程:,断点,主程序,继续执行主程序,响应中断请求,返回主程序,中断服务程序,四、MCS-51中断系统的结构,MCS-51单片机的中断系统:5个中断源,两 级中断优先级,可实现两级中断程序嵌套。用户 可以用软件来屏蔽中断请求,也可以用软件使CPU 接收中断请求。每个中断源的中断级别均可用软 件设置。,中断系统结构 见书101页,图5-2,五、中断请求源,1、MCS-51中断系统的5个中断源: (1)INT0:外部中断0,中断标志位IE0 (TCON); (2)INT1:外部中断1,中断标志位IE1 (TCON); (3)定时器/计数器T0溢出中

11、断,中断标志位TF0 (TCON); (4)定时器/计数器T1溢出中断,中断标志位TF1 (TCON); (5)串行口中断请求,中断标志位TI或RI (SCON)。,特殊功能寄存器,为定时器/计数器的控制寄存器。其格式如下:,TF1,TR1,TF0,TR0,IE1,IT1,IT0,IE0,8FH,8EH,8DH,8CH,8BH,8AH,89H,88H,TCON,位地址,此控制寄存器中有4位中断请求标志:IE0、IE1、TF0、TF1。 硬件置位或清零。,2、TCON 字节地址为88H。,特殊功能寄存器,为串行口控制寄存器。其格式如下:,SM0,SM1,SM2,REN,TB8,RB8,RI,TI

12、,9FH,9EH,9DH,9CH,9BH,9AH,99H,98H,SCON,位地址,此控制寄存器中有2位中断请求标志:TI或 RI。 硬件置位,需用软件清零。,3、SCON 字节地址为98H,六、中断控制,1、中断允许寄存器IE 字节地址为A8H。其格式为:,EA,ES,ET1,EX1,EX0,ET0,AFH,AEH,ADH,ACH,ABH,AAH,A9H,A8H,IE,位地址,两级控制,允许置“1”,禁止置“0”,2、中断优先级寄存器IP 字节地址为B8H,两个中断优先级:高级和低级。IP寄存器格式如下:,PS,PT1,PX1,PX0,PT0,BCH,BBH,BAH,B9H,B8H,IP,位

13、地址,用软件(指令)进行设置,高级置“1”,低级置“0”。,例:设置IP寄存器,使2个外中断为高优先级,其余为低优 先级。,(1)用位操作指令:SETB PX0SETB 0BAHCLR (0B8H).4CLR IP.1CLR 0BBH (2)用字节操作指令MOV IP,#05H 或 ORL IP,#05H 可以吗?,七、中断响应,中断请求被响应,需满足以下条件: (1)该中断源发出中断请求; (2)CPU开放中断; (3)申请中断的中断源的中断允许位为“1”; (4)无同级或更高级中断正在被服务。 但下列三种情况,中断不会立即响应: (1)CPU正在处理相同的或更高级的中断。 (2)所查询的机

14、器周期不是所执行指令的最后一个机器周期。 (3)正在执行的指令是RETI或是访问IE或IP的指令,需要在执行完这些指令后,再执行一条指令才能响应新的中断请求。,中断响应后,CPU将当前PC值压入堆栈(先压PCL, 后压PCH),保护断点,并将该中断的入口地址装入PC, 从而使CPU执行中断服务程序。,外部中断0 0003H 定时器/计数器T0 000BH 外部中断1 0013H 定时器/计数器T1 001BH 串行口中断 0023H,中断入口地址:,(1)各中断源发出的中断请求信号,都会标记 在MCS-51系统的IE寄存器中。 (2)各中断源发出的中断请求信号,都会标记 在MCS-51系统的T

15、MOD寄存器中。 (3)各中断源发出的中断请求信号,都会标记 在MCS-51系统的IP寄存器中。 (4)各中断源发出的中断请求信号,都会标记 在MCS-51系统的TCON或SCON寄存器中。,1、下列说法错误的是:,(1)当前正在进行高优先级中断处理 (2)当前正在执行RETI指令 (3)当前指令是DIV指令,且正处于取指令的机器周期 (4)当前指令是MOV A,R3,2、中断查询确认后,在下列各种8031单片机运行中,能立即进行响应的是:,(1)同一级别的中断请求按时间的先后顺序顺序响应。 (2)同一时间同一级别的多中断请求,将形成阻塞,系统无法响应。 (3)低优先级不能中断高优先级,但高优先级能中断低优先级。 (4)同级中断不能嵌套。,3、下列说法正确的是:,4、一个简单的中断程序:利用外部中断0,对每一个脉冲 进行计数。,ORG 0000HLJMP BEGINORG 0003HLJMP INT0ORG 100H BEGIN: MOV R0, #00H INT0: CLR CyMOV R1, #00H MOV A, R0SETB IT0 ADD A, #01HSETB EA MOV R0,ASETB EX0 MOV A,R1SETB PX0 ADDC A,#00HSJMP $ MOV R1,ARETIEND,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报