mcs-51功能模块的编程与仿真.ppt
《mcs-51功能模块的编程与仿真.ppt》由会员分享,可在线阅读,更多相关《mcs-51功能模块的编程与仿真.ppt(102页珍藏版)》请在三一文库上搜索。
1、第4章 MCS-51功能模块的编程与仿真,4.1 单片机的并行输入/输出口,4.2 中断的系统,4.3 MCS-51的定时/计数器,4.4 串行接口,4.1 单片机的并行输入输出端口,8051单片机有4个8位并行I/O端口,每条I/O口线都能独立地用作输入或输出。 在无片外扩展存储器的系统中,这四个I/O口都可以作为通用I/O口使用。 在有片外扩展存储器的系统中,P2口送出高8位地址,P0口分时送出低8位地址和8位数据。,图4.1 P0 的位结构图,1. 并行I/O的结构和原理 (1)P0口,P0口用作通用I/O口。 P0口用作输出口,此时必须外接上拉电阻。 P0口用作输入口,分读引脚和读锁存
2、器两种情况。 读引脚:CPU在执行“MOV”类输入指令时(如:MOV A , P0),内部产生的操作信号是“读引脚”。P0.X引脚上的数据经过缓冲器2读入到内部总线。注意在读引脚时,必须先向电路中的锁存器写入1。 读锁存器:CPU在执行“读-改-写”类输入指令时(如:ANL P0, A ),内部产生的操作信号是“读锁存器”,锁存器中的数据经过缓冲器1送到内部总线,然后与A的内容进行逻辑“与”,结果送回P0的端口锁存器并出现在引脚。除了MOV类指令外,其他的读端口操作指令都属于这种情况。 在扩展系统中,P0口作地址/数据总线。,(2) P1口 P1口仅作通用I/O口使用。由于在内部输出端已接有上
3、拉电阻,所以不需再外接上拉电阻。,图4.2 P1 的位结构图,(3) P2口 当控制信号等于零时,MUX拨向下方,P2口作为通用I/O口使用 当控制信号等于1 时,MUX拨向上方,P2口作为高8位地址线使用。,图4.3 P2 的位结构图,4、P3口 锁存器Q端接与非门的一个输入端,第二功能输出线接与非门的另一个输入端。,图4.4 P3 的位结构图,表4.1 P3口的第二功能表,2、MC5-51并行I/O的应用举例,1、七段数码管的结构与原理 在单片机应用系统中通常使用的是8段式LED数码管显示器,它有共阴极和共阳极两种,如图所示。,数码管不同的发光段亮,可组成不同字型,这种组合称为字型码或断码
4、。在COM送入低电平或高电平,然后控制个各段引脚电平,即可形成相应段码。 共阳顺序段码:C0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90H 共阴顺序段码:3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH(Dpa),例4.1:要求通过开关输入4位二进制数,送到数码管显示出来如图(见书)。 汇编源程序 ORG 0000H LJMP STA ORG 0100h STA: MOV P1, #0FFH ;关数码管 LOP: MOV P0, #0FFH ;读引脚前端口置1 MOV A, P0 ;读开关状态 CPL A ;转成数据信息 ANL A,
5、#0FH ;保留低4位信息 MOV DPTR, #TAB MOVC A, A+DPTR ;查表取得断码信息 MOV P1, A ;断码送数码管显示 AJMP LOP END, C程序 #include “reg51.h“ /包含8051单片机寄存器定义头文件 #define LED P1 #define KEY P0 char code disp =0xC0,0xF9,0xA4,0xB0, 0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83, 0x0C6,0xA1,0x86,0x8E; /定义断码表 main() int i; LED=0xFF; /关数码管 wh
6、ile(1) KEY=0XFF; /读引脚前端口置1 i=KEY; i=i; /转成数据信息 i=i /查表取得断码信息,断码送数码管显? , 仿真实验 在Proteus ISIS 中画出设计电路,并进行电气检测。 根据电路设计图,在Keil C中编写源程序。 编译程序,并产生HEX文件。 将HEX文件加入AT89c51,并仿真电路,通过拨动开关观察发光二极管的显示状况,如图所示。,图4.7 例4.1的仿真图,例4.2:要求对某引脚送入的脉冲进行计数,把脉冲的个数送到八个发光二极管以二进制数的形式显示出来,并进行仿真实验。,汇编语言源程序: ORG 0000h AJMP STAR ORG 01
7、00H STAR: MOV A, #0ffh MOV P1, A CLR A ;计数器清0 L081D: JB P3.0, L081D ;P3.0为低吗? MOV R2, #10H LCALL DELY JNB P3.0, $ ;延时后再判断P3.0为低吗? INC A ;累加器加1 PUSH ACC CPL A ;转成驱动二极管的电平 MOV P1, A ;A送P1口 POP ACC AJMP L081D DELY: ;延时子程序 RET END, 仿真实验: 在Proteus ISIS 中画出设计电路,并进行电气检测。 根据电路设计图,在Keil C中编写源程序。 编译程序,并产生HEX文
8、件。 将HEX文件加入AT89c51,并仿真电路,通过拨动开关观察发光二极管的显示状况,如图所示。,图4.8-9 例4.2的仿真图,4.2 中断系统,4.2.1 中断的概述 1.中断的基本概念 2.中断优先权与嵌套,图4.10 中断过程流程图,图4.11 中断嵌套过程图,4.2.2 MCS-51的中断系统 8051共有5个中断源。分为高级和低级两个中断优先级,可实现2级中断服务嵌套。,1. MCS-51的中断源 8051允许5个中断源: 外部中断源 由外部原因引起的,可以通过两个固定引脚 INT0 ( P3.2 )和INT1( P3.3 )来引入。这两个中断源的请求方式有两种:低电平触发或下降
9、沿触发。 内部中断源 T0:定时/计数器0中断,由T0回零溢出引起。 T1:定时/计数器1中断,由T1回零溢出引起。 TI/RI:串行I/O中断,完成一帧字符发送/接收引起。 2、中断控制 , 定时控制寄存器TCON,TF0/TF1:定时器溢出中断申请标志位(由硬件自动置位)。 =0:定时器未溢出; =1:定时器溢出(由全“1”变成全“0”)时由硬件自动置位,申请中断,中断被CPU响应后由硬件自动清零。 TR0/TR1:定时器运行启停控制位 =0:定时器停止运行; =1:定时器启动运行。,IE0/IE1:外部中断申请标志位(由硬件自动置位 ,中 断响应后转向中断服务程序时,由硬件自动清0 )。
10、 =0:没有外部中断申请; =1:有外部中断申请。 IT0/IT1:外部中断请求的触发方式控制位(可由用户通过软件设置 )。 =0: 在INT0/INT1端申请中断的信号低电平有效; =1: 在INT0/INT1端申请中断的信号负跳变有效。,TI/RI:串行口发送/接收中断申请标志位 =0:没有串行口发送/接收中断申请; =1:有串行口发送/接收中断申请。 这两位不会由硬件自动置位,所以用户必须在中断服务子程序中用软件清0。 例如: CLR TI RE TI,串行口控制寄存器SCON,中断允许寄存器IE,ES: 串行口中断允许位。 ET1 :定时器/计数器T1的溢出中断允许位。 EX1 :外部
11、中断1中断允许位。 ET0 :定时器/计数器T0的溢出中断允许位。 EX0 :外部中断0中断允许位。 EA: 总的中断允许控制位(总开关): =0 :禁止全部中断; =1 :允许中断。, 中断优先级寄存器IP,PX0/PX1:外部中断0 /外部中断1 优先级控制位: =0 :属低优先级; =1 :属高优先级。 PT0/PT1:T0/T1中断优先级控制位: =0 :属低优先级; =1 :属高优先级。 PS1:串行口中断优先级控制位: =0 :属低优先级; =1 :属高优先级。,当同级的几个中断源同时发中断请求时, MCS-51单片机的中断系统对各中断源的中断优先级有一个统一的规定,称为自然优先级
12、。自然优先级的排列如下:,3. 中断响应及处理过程, 中断响应的条件 相应的中断是开放的; 没有同级的中断或更高级别的中断正在处理; 正在执行的指令必须执行完最后 1个机器周期; 若当前正在执行的是中断返回指令(RETI),或对IE或IP寄存器操作的指令,则必须执行完当前指令的下一条指令才能响应中断。 中断响应的过程 中断过程包括中断请求、中断响应、中断服务、中断返回四个阶段。 中断优先级状态触发器置1。 由硬件自动生成一条长调用指令,将断点的地址压入堆栈区进行保护, CPU将执行中断服务子程序,包含保护现场、执行中断主体、恢复现场。 中断返回:中断子程序最后为中断返回RETI指令,该指令使断
13、点出栈,然后开放中断允许,中断过程结束,CPU返回原程序。, 中断服务程序入口地址(中断矢量) 中断入口地址就是中断服务子程序的起始地址,即第一条指令的第一个字节在程序存储器中的位置。单片机的中断入口地址由单片机硬件电路决定,各中断服务子程序的入口地址为: 中断源 入口地址 INT0 0003 T0 000BH INT1 0013H T1 001BH RI/TI 0023H, 外部中断触发方式的选择,边沿触发 当ITx=1时,外部中断为边沿触发方式。CPU在每个机器周期的S5P2期间采样INT1 (P3.3)引脚。若在连续两个机器周期采样到先高电平后低电平,则认为有中断申请,硬件自动使IE0置
14、1,此标志一直保持到CPU响应中断时,才由硬件自动清0。在边沿触发方式下,为保证CPU在两个机器周期内检测到先高后低的负跳变,输入高低电平的持续时间至少要保持12个时钟周期。,电平触发 当ITx=0时,外部中断为电平触发方式。若CPU检测外部中断请求输入引脚为低电平,硬件自动置位相应的中断标志位IEx;若为高电平,则认为无中断申请,硬件自动清除中断标志位。所以,外部中断请求输入信号,必须保持到CPU响应该请求为止。当CPU响应请求后通过硬件清零IEx,但请求信号并没有被清除,在该中断服务子程序返回之前,这个中断请求信号必须撤掉,否则,将引起再次响应。为此,用以下电路清除外部中断请求信号,并在中
15、断服务程序中执行以下指令:,ORL P1,#01H ANL P1,#0FEH,4.2.3 MCS-51中断的应用举,【例4.3】:见书P85。,图4-12 用二极管显示中断请求信号, 汇编语言源程序: ORG 0000H AJMP MAIN ;转向主程序 ORG 0013H ;外部中断1入口地址 AJMP PINT ORG 0050H MAIN: SETB IT1 ;置边沿触发方式 SETB EX1 SETB EA ;开发外部中断1 LOOP: MOV A, P1 ANL A, #0FFH CJNE A,#0FFH , LOOP ;有外部 中断请求,去LOOP ORL P1,#0FFH ;无中
16、断请求,外部灯全灭 LJMP LOOP SJMP $,;中断子程序 JB P1,0 , L2 CLR P1.4 L2: JB P1.1, L3 CLR P1.5 L3: JB P1.2 L4 CLR P1.6 L4: JB P1.3 L5 CLR P1.7 L5: RETI END, C语言程序 #include “reg51.h“ sbit P11=P11; sbit P12=P12; sbit P13=P13; sbit P14=P14; sbit P15=P15; sbit P16=P16; sbit P17=P17; void extern0_IR(void) interrupt 1
17、p14=p10; p15=p11; p16=p12; p17=p13; ,void main(void) unsigned char c; IT1=1; EX0=1; EA=1; While(1) c=P1; c ,例4.4 平时LED发光二极管处于全亮状态;INT0外中断控制二极管循环左移8次;INT1外中断控制二极管循环右移8次;并进行仿真实验,汇编语言源程序: ORG 0000H LJMP START ORG 0003H LJMP PINT0 ORG 0013H LJMP PINT1 ORG 0030H START: MOV SP, #30H SETB IT0 ;外部中断1为边沿触发方式
18、 SETB IT1 ; 外部中断1为边沿触发方式 SETB EX0 SETB EX1 SETB EA ;开放外部中断0和1 MOV IP , #04H ;外部中断1为高优先级 LOOP: MOV P1 , #00H ;灯全亮 SJMP LOOP ; 等中断,;INT0中断服务子程序 PINT0: PUSH PSW CLR RS1 SETB RS0 MOV R1 , #8 MOV A , #0FEH ;置灯的初态 LP0: MOV P1 , A LCALL DELAY RL A ;循环左移 DJNZ R1 , LP0 POP PSW RETI,;INT1中断服务子程序 PINT1: PUSH P
19、SW SETB RS1 CLR RS0 MOV R1 , #8 MOV A , #07FH ;置灯的初态 LP1: MOV P1 , A LCALL DELAY RR A ;循环右移 DJNZ R1 , LP1 POP PSW RETI ;延时子程序 略, C程序 #include “reg51.h“ /定 8051接触器的头文件 void pint1(void ); void pint1(void ); void delay(void); void main(void ) IT0=1; IT1=1; /外部中断0、1为边沿触发方式 EX0=1; EX1=1; EA=1; /开放外部中断0和1
20、 IP =0x04; /外部中断1为高优先级 while(1); P1=0x00; delay() /灯全亮 ,/INT0中断服务子程序 void pint0(void ) interrupt 0 int,i; P1=0xfe ; /置灯的初态 for(i=0,i1; /循环右移 delay (void); /延时子程序 略, 仿真实验,图4.16 例题4.4 仿真图,4.3 定时/计数器的结构和原理,8051内部提供两个十六位的定时器/计数器T0和T1,1计数功能: 所谓计数功能是指对外部脉冲进行计数。外部脉冲从单片机的T0(P3.4)和T1(P3.5)两个引脚输入,最高计数脉冲频率为晶振频
21、率的1/24。 2定时功能: 以定时方式工作时,计数输入信号是内部时钟脉冲,每个机器周期使计数器加1,所以,计数频率是振荡频率的1/12,,4.3.2定时/计数器的工作方式选择及控制,1.方式控制寄存器TMOD,工作方式选择位M1、M0,门控位:GATE。 GATE=0:软件启动定时器,使TRx置1即可启动定时器。 GATE=1:软件和硬件共同启动定时器,除了要使TRx置1外,外部中断请求信号输入端INTx还必须输入高电平才能启动定时器。 功能选择位:C/T。 C/T=0时,以定时器方式工作。 C/T=1时,以计数器方式工作。,2.定时器控制寄存器TCON,定时器启动控制位:TR0、TR1 T
22、Rx=0,停止定时器/计数器1工作。 TRx=1,启动定时器/计数器1工作。 该位由软件置位和复位 定时器溢出中断标志位:TF0、 TF1 当定时/计数器溢出时,由硬件自动置1。使用查询方式时,此位做状态位供CPU查询,查询有效后需由软件清零;使用中断方式时,此位做中断申请标志位,进入中断服务后被硬件自动清零,4.3.3 定时器/计数器的工作方式,方式0(以定时器/计数器T0为例) 定时寄存器由TH0的8位和TL0的低5位(高3位不用)组成一个13位计数器。 当GATE=0时,只要TR0为1,13位计数器就开始进行加1计数;当GATE=1以及TR0=1时,是否计数还取决于INT0引脚信号,当I
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mcs 51 功能模块 编程 仿真
链接地址:https://www.31doc.com/p-4141610.html