




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
AT89C51 系统软件设计3.1 AT89S51单片机的中断系统CPU正在执行主程序时,单片机外部或内部发生的某一事件(如外部设备产生的一个电平的变化,一个脉冲沿的发生或内部计数器的计数溢出等)请求CPU迅速处理,于是,CPU暂时中止当前的工作,转到中断服务处理程序处理所发生的事件。中断服务处理程序处理完该事件后,再回到原来中止的地方,继续原来的工作(例如,继续执行被中断的主程序),这称为中断。CPU处理事件的过程,称为CPU的中断响应过程。3.1.1中断处理涉及几个环节 中断源、中断申请、开放中断、保护现场、中断服务、恢复中断、中断返回。单片机处理中断的原则是:先高后低;停低转高;高不睬低;中断同级时按系统设计优先顺序处理。单片机有5种中断源。3.1.2MCS-51中断系统的结构其基本特点是:有5个固定的可屏蔽中断源,3个在片内,2个在片外,它们在程序存储器中各有固定的中断入口地址,由此进入中断服务程序;5个中断源有两级中断优先级,可形成中断嵌套;2个特殊功能寄存器用于中断控制和条件设置的编程。中断系统的结构:5个中断源的符号。名称及产生的条件如下。INT0:外部中断0,由P32端口线引入,低电平或下跳沿引起。INT1:外部中断1,由P33端口线引入,低电平或下跳沿引起。T0:定时器计数器0中断,由T0计满回零引起。T1:定时器计数器l中断,由T1计满回零引起。TIRI:串行IO中断,串行端口完成一帧字符发送接收后引起。3.1.3中断请求源(1)外部中断请求源:即外中断0和1,经由外部引脚引入的,在单片机上有两个引脚,名称为INT0.INT1,在内部的TCON中有四位是与外中断有关的。IT0:INT0触发方式控制位,可由软件进和置位和复位,IT0=0,INT0为低电平触发方式,IT0=1,INT0为负跳变触发方式。IE0:INT0中断请求标志位。当有外部的中断请求时,这位就会置1(这由硬件来完成),在CPU响应中断后,由硬件将IE0清0。IT1.IE1的用途和IT0.IE0相同。(2)内部中断请求源TF0:定时器T0的溢出中断标记,当T0计数产生溢出时,由硬件置位TF0。当CPU响应中断后,再由硬件将TF0清0。TF1:与TF0类似。TI.RI:串行口发送。接收中断,在串口中再讲解。3.1.4中断系统的控制寄存器(1)中断允许寄存器IE中断屏蔽在中断源与CPU之间有一级控制,类似开关,其中第一级为一个总开关,第二级为五个分开关,由IE控制。在MCS51中断系统中,中断的允许或禁止是由片内可进行位寻址的8位中断允许寄存器IE来控制的。其中EA是总开关,如果它等于0,则所有中断都不允许。ES串行口中断允许ET1定时器1中断允许EX1外中断1中断允许。ET0定时器0中断允许EX0外中断0中断允许。(2)中断优先级寄存器IP中断优先原则:(概括为四句话)1).低级不打断高级2).高级不睬低级3).同级不能打断4).同级。同时中断,事先约定。CPU同一时间只能响应一个中断请求。若同时来了两个或两个以上中断请求,就必须有先有后。为此将5个中断源分成高级。低级两个级别,高级优先,由IP控制。在MCS中断优先级中由中断优先级寄存器IP来高置的,IP中某位设为1,相应的中断就是高优先级,否则就是低优先级。IP优先级别寄存器各位介绍如下: PS:串行口中断优先级控制位。PS=1设定串行口为高优先级中断;PS=0为低优先级中断。PT1: T1中断优先级控制位。PT1=1设定定时器T1为高优先级中断;PT1=0为低优先级中断。PX1:外部中断1优先级控制位。PX1=1设定定时器外部中断1为高优先级中断;PX1=0为低优先级中断。PT0: T0中断优先级控制位。PT0=1设定定时器T0为高优先级中断;PT0=0为低优先级中断。PX0:外部中断0优先级控制位。PX0=1设定定时器外部中断0为高优先级中断;PX0=0为低优先级中断。3.1.5中断响应过程及反回过程中断过程CPU每个机器周期都需要顺序检查每个中断源,当检测到有中断请求时,能否响应,还要看下述情况是否存在:.CPU正处理相同级别或更高级别的中断;.正在执行指令,还未到最后一个机器周期;.正在执行的指令是RETI或访问IP.IE指令,则执行完上述指令后,再执行一条指令后,才会响应新中断。响应过程:(假设已使某中断请求标志置1).先使相应优先级状态触发器置1;.执行一个硬件子程序的调用。1)硬件清零相应中断请求标志(TI.RI除外)2)将当前PC内容压入堆栈保护断点;3)将中断服务子程序入口地址送PC转移。返回过程(RETI执行后).使相应优先级状态触发器清0。.从堆栈中弹出栈顶的两个字节内容送PC恢复断点。.CPU接着中断处继续执行原程序。3.2 AT89S51单片机指令系统3.2.1指令系统的寻址方式指令系统寻址方式规定了单片机内部地址单元或数据的访问方式。AT89S51单片机指令系统中有寄存器寻址方式、直接寻址方式、间接寻址方式、位寻址方式、立即数寻址方式、基址变址寻址方式、相对寻址方式共7中寻找方式。3.2.2 AT89S51的指令单片机与一般通用微处理器指令系统的区别在于突出了控制功能,具体表现为有大量的转移指令和位操作指令。按指令操作功能,MCS-51指令系统由数据传送、算术运算、逻辑操作、程序转移和位操作指令组成,共有111条指令。数据传送类指令共24条,分为程序存储器查表指令(MOVC)、片外数据存储器传送指令(MOVX)、片内寄存器及数据存储器传送指令(MOV)和数据交换指令(XCH、XCHD、SWAP)算术运算类指令共23条,有加(ADD)、带进位加(ADDC)、带借位减(SUBB)、乘(MUL)、除(DIV)、加1(INC)和减1(DEC)操作。逻辑运算指令共25条,逻辑主要是“与”(ANL)、“或”(ORL)、“异或”(XRL)、的逻辑操作和累加器自身内容的清0(CLR)、求反(CPL)、右移(RR)、带进位位右移(RRC)、左移(RL)、带进位位左移(RLC)和十进制调整(DA)。转移操作类指令共23条,分为无条件转移和条件转移。无条件转移指令有跳转、调用、散转、返回及空操作指令;条件转移指令有零与非零转移JZ/JNZ、减1非零转移DJNZ和比较不等转移CJNE。条件转移均为相对转移,条件符合是转移到相对地址rel指令处。布尔指令集共有17条指令,包括位操作指令和位条件转移指令。在布尔指令集中,实现累加器功能的是进位位C3.3 LED显示器的显示原理LED数码管显示器由8个发光二极管中的7个长条形发光二极管(称七笔段)按a、b、c、d、e、f、g顺序组成“8”字形,另一个点形的发光二极管放在右下方,用来显示小数点。本设计采用的是2位LED数码管。2位LED数码管显示原理与1位LED数码管显示原理基本相同,区别在于2位LED数码管的1、6引脚分别为2位数码管的位选控制,C1为第一位数码管的公共端,C2为第二位数码管的公共端。数码管按内部连接方式又分为共阳极数码管和共阴极数码管两种。若内部8个发光二极管的阳极连在一起接电源正极,就称为共阳极数码管;若8个发光二极管的阴极连在一起接地,则称为共阴极数码管。本设计采用共阳极数码管显示,2位LED数码管如图3-1所示。采用共阳级连接:图3-1 两位LED数码管表3-1数码管显示码字符hgfedcba驱动代码(16进制)011000000C0H111111001F9H210100100A4H310110000B0H41001100199H51001001092H61000001082H711111000F8H81000000080H91001000090HA1000100088HB1000001183HC11000110C6HD10100001A1HE1000011086HF100011108EH3.4 主程序流程图 主程序流程图如图3-2所示,开始接上电源,程序进行初始化设置。然后启动程序,然后执行程序。编程思路:正常情况下交通灯的红灯可以直接变成绿灯,但绿灯不能直接变成红灯,在变成红灯之前需要经过黄灯,同时交通灯的旁边显示有这种灯亮的剩余秒数,即经过一秒钟显示数字减1,因此单片机需要知道何时到1秒,在这里采用定时器T0进行1秒的定时(工作方式1)。 程序工作流程如下:先对用到的寄存器、存储器和中断入口地址进行初始化,比如初始化东西南北线式存储器,定时器T0和外部中断0入口地址等,东西亮绿灯,同时显示还剩25秒,南北亮红灯,同时显示还剩30秒;判断东西南北时间是否到,如到由绿灯变成黄灯,显示时间为5秒,南北红灯不变;继续判断黄灯的现实时间是否到,如到有黄灯变成红灯,显示时间为30秒,同时判断红灯显示时间是否到,如到有红灯变成绿灯,显示时间为25秒。之后周而复始。图3-2 基本交通等主程序流程图3.5 四种状态的主程序流程图 四种状态的子程序流程图如图3-3所示,通过点亮相关红绿黄灯,再调用东西及南北显示子程序运行,若显示结束则返回,若没结束则继续执行子程序。 四种状态的主程序如下:START: ACALL S1 ACALL S2 ACALL S3 ACALL S4 SJMP STARTS1: MOV P1,#0EEH LCALL EWDISP LCALL SNDISP MOV A, EWTIME CJNE A, #00H, S1 MOV EWTIME, #5 RETS2: CLR C MOV A, #10 SUBB A, R0 JC S21 MOV P1,#0FEH AJMP S22S21: MOV P1, #0DEHS22: LCALL EWDISP LCALL NSDISPMOV A, EWTIMECJNE A, #00H, S2MOV EWTIME ,#30MOV SNTIME, #25RETS3: MOV P1, #0F5H LCALL EWDISP LCALL NSDISP MOV A.,SNTIME CJNE SNTIME, #5 RETS4: CLR C MOV A, #10 SUBB A, R0 JC S41 MOV P1 , #0F7H AJMP S42S41: MOV P1, #0F3HS42: LCALL EWDISP LCALL NSDISP MOV A, SNTIME CJNE A, #00H,S4 MOV EWTIME, #25 MOV SNTIME ,#30RET图3-3 四种状态的子程序流程图3.6 显示子程序流程图显示子程序流程图如图3-4所示,通过显示时间的十位字位口来显示时间,把显示的时间拆分成十位和个位,分别把十位和个位数字送各自的字位口。显示子程序如下:EWDISP: MOV R2,#0BH MOV A, EWTIME. MOV B .#10 DIV AB MOV R1,A CALL DISP MOV R2 ,#07H MOV R1,B CALL DISP RET NSDISP : MOV R2 ,#0EH MOV A,SNTIME MOV B ,#10 DIV AB MOV R1 ,A LCALL DISP MOV R2 ,#0DH MOV R1 ,B LCALL DISPDISP: MOV P2 , R2 MOV A, R1 MOV DPTR , #TAB MOVC A , A+DPTR MOV P0, A LCALL DELAY MOV P0 , #0FFHDISP: MOV P2, R2 MOV A, R1 MOV DPTR ,#TAB MOVC A, A+DPTR MOV P0 ,#0FFH RET图3-4 显示子程序流程图3.7 T0中断服务子程序流程图T0中断服务子程序流程图如图3-5所示,通过重载定时器初值,然后判断1秒定时是否到,是则东
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论