欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    [信息与通信]第六章单片机内部资源及编程.ppt

    • 资源ID:5615653       资源大小:612KB        全文页数:69页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    [信息与通信]第六章单片机内部资源及编程.ppt

    第 六 章 MCS-51单片机内部资源及编程,MCS-51单片机的内部资源主要有并行I/O口、定时器/计数器、串行接口以及中断系统,MCS-51单片机的大部分功能就是通过对这些资源的利用来实现的。,并行输入/输出接口,定时/计数器接口,串行接口,中断系统,1,2,3,4,6.1 并行输入/输出接口,复习4个并行口特性应用举例:1.利用单片机的P0口接8个发光二极管,P1口接8个开关,编程实现,当开关动作时,对应的发光二极管亮或灭。,汇编程序:ORG 0100HMOV P0,#0FFHLOOP:MOV A,P0MOV P1,ASJMP LOOP,C51语言程序:#include void main(void)unsigned char i;P0=0 xff;for(;)i=P0;P1=i;,延时函数的编写,void delay()int x=5000;while(x-);,void delay(unsigned int z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);,流水灯程序,#include void delay()int x=5000;while(x-);Main()Unsigned char LED;LED=0 x1;P0=LED;While(1)Delay();LED=LED1;P0=LED;,思考:若要同时亮两个灯,并实现流水点亮,应如何修改程序?,2.蜂鸣器接口例:编程使蜂鸣器响5次,每次响0.5秒,停1秒。,汇编程序为:BEEP:MOV R7,#5BEEPL:CLR P1.0 LCALL DEL5 SETB P1.0 LCALL DEL10 DJNZ R7,BEEPL RET,C51程序为:#includesbit D1=P10;void delay(uint);void main()while(1)D1=0;delay(50);D1=1;delay(100);,并行输入/输出接口,定时/计数器接口,串行接口,中断系统,1,2,3,4,6.2 定时/计数器接口,定时/计数器的主要特性:1MCS-51系列中51子系列有两个16位的可编程定时/计数器:T0和T1,52子系列还有T2。2定时方式对频率稳定且已知的时钟信号计数,即可以实现定时功能。计数方式对外部时钟信号计数,通常用于对外部事件(脉冲)计数。3每个定时/计数器都有多种工作方式,通过编程可设定工作于某种方式。4每一个定时/计数器定时计数时间到时产生溢出,使相应的溢出位置位,溢出可通过查询或中断方式处理。,定时/计数器T0、T1的结构及工作原理,使用注意:第一,由于它是加法计数器计数初值X=最大计数值(满值)M计数值N第二,外部计数脉冲的频率应小于振荡频率的1/24。,定时/计数器的方式和控制寄存器,一定时/计数器的方式寄存器TMOD,SFR中地址,定时/计数器的控制寄存器TCON,0:停T0 计数,1:启T0 计数,0:无T0 中断(硬件复位),1:有T0 溢出中断,0:无T1 中断(硬件复位),0:停T1 计数,1:有T1 溢出中断,1:启T1 计数,TF0、TF1:定时/计数器T0、T1的溢出标志位。当定时/计数器计满时,由硬件使它置位,如中断允许则触发中断。进入中断处理后由内部硬件电路自动清除。,定时/计数器的工作方式,一方式013位定时/计数方式,在方式0定时,若计数初值为a,则从初值a开始加1计数到溢出的时间为:,当fosc=12MHz时,最大定时时间为:8.192毫秒。,二方式116位定时/计数方式,方式1时,如计数值为N,则置入的初值X为:X=65536-N如定时/计数器T0的计数值为1000,则初值为65536-1000=64536,转换成二进制数为 1111110000011000B,则TH0=11111100B,TL0=00011000B,当fosc=12MHz时,最大定时时间为:65.536毫秒。,三、方式2自动恢复初值的8位定时计数器,方式2为自动恢复初值的8位计数器。TLx作为8位计数器,THx作为计数初值寄存器,当TLx计数溢出时,一方面置1”溢出标志TFx,向CPU请求中断,同时将THx内容送TLx,使TLx从初值开始重新加l计数。因此,Tx工作于方式2定时,定时精度比较高,但定时时间短,T12(256a)/focs。,四、方式3T0分成两个8位定时计数器,而TH0固定只能作定时器使用,对机器周期进行计数,借用T1的控制资源,定时/计数器的初始化编程及应用,一定时/计数器的编程,MCS-51单片机定时/计数器初始化过程如下:1根据要求选择方式,确定方式控制字,写入方式控制寄存器TMOD。2根据要求计算定时/计数器的计数值,再由计数值求得初值,写入初值寄存器。3根据需要开放定时/计数器中断(后面须编写中断服务程序)。4设置定时/计数器控制寄存器TCON的值,启动定时/计数器开始工作。5等待定时/计数时间到,到则执行中断服务程序;如用查询处理则编写查询程序判断溢出标志,溢出标志等于1,则进行相应处理。,二定时/计数器的应用,【例5-2】设系统时钟频率为12MHZ,用定时/计数器T0编程实现从P1.0输出周期为500s的方波。分析:从P1.0输出周期为500s的方波,只须P1.0每250s取反一次则可。当系统时钟为12MHZ,定时/计数器T0工作于方式2时,最大的定时时间为256s,满足250s的定时要求,方式控制字应设定为00000010B(02H)。系统时钟为12MHZ,定时250s,计数值N为250,初值X=256-250=6,则TH0=TL0=06H。,汇编程序:ORG 0000HLJMP MAINORG 000BH;中断处理程序CPL P1.0RETIORG 0100H;主程序MAIN:MOV TMOD,#02HMOV TH0,#06HMOV TL0,#06HSETB EASETB ET0SETB TR0SJMP$END,C语言程序:#include/包含特殊功能寄存器库sbit P1_0=P10;void main()TMOD=0 x02;TH0=0 x06;TL0=0 x06;EA=1;ET0=1;TR0=1;while(1);void time0_int(void)interrupt 1/中断服务程序 P1_0=!P1_0;,(1)采用中断处理方式的程序:,(2)采用查询方式处理的程序,汇编程序:ORG 0000HLJMP MAINORG 0100H;主程序MAIN:MOV TMOD,#02HMOV TH0,#06HMOV TL0,#06HSETB TR0LOOP:JBC TF0,NEXT;查询计数溢出SJMP LOOPNEXT:CPL P1.0SJMP LOOPSJMP$END,C语言程序:#include/包含特殊功能寄存器库sbit P1_0=P10;void main()char i;TMOD=0 x02;TH0=0 x06;TL0=0 x06;TR0=1;for(;)if(TF0)TF0=0;P1_0=!P1_0;/查询计数溢出,【例5-3】设系统时钟频率为12MHZ,编程实现从P1.1输出周期为1s的方波。分析:根据例5-2的处理过程,这时应产生500ms的周期性的定时,定时到则对P1.1取反就可实现。由于定时时间较长,一个定时/计数器不能直接实现,可用定时/计数器T0产生周期性为10ms的定时,然后用一个寄存器R2对10ms计数50次或用定时/计数器T1对10ms计数50次实现。系统时钟为12MHZ,定时/计数器T0定时10ms,计数值N为10000,只能选方式1,方式控制字为00000001B(01H),初值X:X=65536-10000=55536=1101100011110000B则TH0=11011000B=D8H,TL0=11110000B=F0H。,汇编程序:ORG 0000HLJMP MAINORG 000BHLJMP INTT0ORG 0100HMAIN:MOV TMOD,#01HMOV TH0,#0D8HMOV TL0,#0F0HMOV R2,#00HSETB EASETB ET0SETB TR0SJMP$INTT0:MOV TH0,#0D8HMOV TL0,#0F0H INC R2CJNE R2,#32H,NEXT CPL P1.1 MOV R2,#00H NEXT:RETIEND,C语言程序:#include/包含特殊功能寄存器库sbit P1_1=P11;char i;void main()TMOD=0 x01;TH0=0 xD8;TL0=0 xf0;EA=1;ET0=1;i=0;TR0=1;while(1);void time0_int(void)interrupt 1/中断服务程序TH0=0 xD8;TL0=0 xf0;i+;if(i=50)P1_1=!P1_1;i=0;,方法1:用寄存器R2作计数器软件计数,中断处理方式。,方法2:用定时/计数器T1计数实现,定时/计数器T1工作于计数方式时,计数脉冲通过T1(P3.5)输入。设定时/计数器T0定时时间到对T1(P3.5)取反一次,则T1(P3.5)每20ms产生一个计数脉冲,那么定时500ms只须计数25次,设定时/计数器T1工作于方式2,初值X=256-25=231=11100111B=E7H,TH1=TL1=E7H。因为定时/计数器T0工作于方式1,定时,则这时方式控制字为01100001B(61H)。定时/计数器T0和T1都采用中断方式工作。,汇编程序如下:ORG 0000HLJMP MAINORG 000BHMOV TH0,#0D8HMOV TL0,#0F0HCPL P3.5RETI,ORG 0100HMAIN:MOV TMOD,#61HMOV TH0,#0D8HMOV TL0,#0F0HMOV R2,#00HMOV TH1,#0E7HMOV TL1,#0E7HSETB EASETB ET0SETB ET1SETB TR0SETB TR1SJMP$END,ORG 001BHCPL P1.1RETI,C语言程序如下:#include/包含特殊功能寄存器库sbit P1_1=P11;sbit P3_5=P35;void main()TMOD=0 x61;TH0=0 xD8;TL0=0 xf0;TH1=0 xE7;TL1=0 xE7;EA=1;ET0=1;ET1=1;TR0=1;TR1=1;while(1);void time0_int(void)interrupt 1/T0中断服务程序 TH0=0 xD8;TL0=0 xf0;P3_5=!P3_5;void time1_int(void)interrupt 3/T1中断服务程序 P1_1=!P1_1;,并行输入/输出接口,定时/计数器接口,串行接口,中断系统,1,2,3,4,6.3 串行接口,异步通信与同步通信1.异步通信:一次传送一个字符(字节),位同步。,2.同步通信:一次传送多个字符(数据块),字符同步,波特率:波特率是指串行通信中,单位时间传送的二进制位数,单 位为bps。,MCS-51单片机串行口功能与结构,功能:MCS51有一个全双工的异步串行接口,可以用于同时收发数据的通信接口。发送、接收数据可通过查询或中断方式处理。它有四种工作方式,分别是方式0、方式1、方式2和方式3。,结构:,其中发送数据寄存器和接收数据寄存器合用一个SFRSBUF;控制寄存器包括两个SFR:SCON 和 PCON.,串行口控制寄存器SCON字节地址98H,电源控制寄存器PCON,SMOD,87H,D0,D1,D2,D3,D4,D5,D6,D7,PCON,当SMOD位为1,则串行口方式1、方式2、方式3的波特率加倍。,串行接口的工作方式,一、方式0:方式0是扩展移位寄存器的工作方式,以串行扩展IO接口。输出时将发送数据缓冲器中的内容串行地移到外部的移位寄存器,输入时格外部移位寄存器内容移入内部的输入移位寄存器,然后写入内部的接收数据缓冲器。在以方式0工作时,数据由RxD串行地输入输出,TXD输出移位脉冲,使外部的移位寄存器移位。波持率固定为振荡器频率的十二分之一。,1方式0输出 方式0输出时,串行口上外接74LSl64串行输入并行输出移位寄存器的接口逻辑如图所示。TXD端输出的移位脉冲将RXD端输出的数据移入74LSl64。CPU对发送数据缓冲器SBUF写入一个数据,就启动串行口从低位开始串行发送,经过8个机器周期,串行口输出数据缓冲器内容移入外部的移位寄存器74LSl64,置位TI串行口停止移位,于是完成一个字节的输出。,74LS164串入并出移位寄存器,2方式0输入 方式0输入时,RxD作为串行数据输入线,TxD作为移位脉冲输出线,串行口与外接的并行输入串行输出的移位寄存器74LS166的接口逻辑如图所示。在REN1,RI0时启动串行口接收,TxD端输出的移位脉冲频率为fosc12,若fosc12MHz,移位速率为ls位,经过8次移位,外部移位寄存器内容移入内部移位寄存器并写入SBUF,置位RI,停止移位,完成一个字节的输入,CPU读SBUF的内容使得到输入结果。,74LS166 并入(串入)串出移位寄存器,二、方式1:8位异步方式。数据格式:,1方式1输出 CPU向串行口发送数据缓冲器SBUF写入一个数据,就启动串行口发送。输出到停止位1,并置“l”发送中断标志TI,串行口输出完一个字符后停止工作,CPU执行程序判断TI1后清“0”TI,再向SBUF写入数据,启动串行口发送下一个字符。,2方式1输入 REN置“1”以后,就允许接收器接收。接收器以所选波特率的16倍的速率采样RxD端的电平。当检测到RxD端输入电平发生负跳时,复位内部的十六分频计数器。接收到停止位为l时,将接收到的8位数据装入接收数据缓冲器SBUF,置位RI,表示串行口接收到有效的一帧信息,向CPU请求中断。接着串行口输入控制电路重新搜索RxD端上负跳变接收下一个数据。,三、方式2和方式3 串行口定义为方式2或方式3时,它是一个9位的异步串行通信接口,TxD为数据发送端,RxD为数据接收端。方式2的波持率固定为振荡器频率的164或132,而方式3的波特率由定时器T1或T2(8052)的溢出率所确定。其数据格式如下:,1方式2和方式3输出 CPU向发送数据缓冲器SBUF写入一个数据就启动串行口发送,同时将TB8写入输出移位寄存器的第9位。发送停止位后,置“1”发送中断标志TI,CPU判TI1以后清“0”TI,可以再向TB8和SBUF写入新的数据,再次启动串行口发送。,2方式2和方式3输入 REN置“l”以后,接收器就以所选波特率的16倍的速率采样RxD端的输入电平。当检测到RxD上输入电平发生负跳变时,复位内部的十六分频计数器。先从低位开始接收8位数据,再接收第9位数据,在RI0,SM20或接收到的第9位数据为1时,接收的数据装入SBUF和RB8,置位RI;如果条件不满足,把数据丢失,并且不置位RI。一位时间以后又开始搜索RxD上的负跳变。,波 特 率,一、方式0 的波特率振荡器频率focs/12二、方式2的波特率2 振荡器频率focs/64 所以方式2 的波特率固定为振荡器频率的64分 之一或32分之一。三、方式1和方式3的波特率 2(T1的溢出率)/32 即为T1溢出率的32分之一或16分之一。注意:T1作波特率发生器时,应禁止中断,并且通常工作在定时方式2。此时波特率计算还可用下列公式:方式1和方式3的波特率 2 振荡器频率/3212(256(TH1),SMOD,SMOD,SMOD,常用的波特率以及相应的振荡器频率、T1工作方式和计数初值,串行口的编程及应用,一串行口的初始化编程对串行口的编程,包括选择串行口的工作方式、设定串行口的波特率以及串行口的中断允许控制和优先级控制等。涉及到的SFR有:SCON、PCON、TMOD、TCON、TH1、TL1、IE、IP等。可见,对串行口的初始化编程是比较复杂的。二、串行口的应用:通常用于三种情况:利用方式0扩展并行I/O口;利用方式1实现点对点的双机通信;利用方式2或方式3实现多机通信。,【例5-4】用8051单片机的串行口外接串入并出的芯片CD4094扩展并行输出口控制一组发光二极管,使发光二极管从左至右延时轮流显示。,CD4094是一块8位的串入并出的芯片,带有一个控制端STB,当STB=0时,打开串行输入控制门,在时钟信号CLK的控制下,数据从串行输入端DATA一个时钟周期一位依次输入;当STB=1,打开并行输出控制门,CD4094中的8位数据并行输出。使用时,8051串行口工作于方式0,8051的TXD接CD4094的CLK,RXD接DATA,STB用P1.0控制,8位并行输出端接8个发光二极管。如图所示。,1利用方式0扩展并行I/O口,设串行口采用查询方式,显示的延时依靠调用延时子程序来实现。程序如下:,汇编程序:ORG 0000HLJMP MAINORG 0100HMAIN:MOV SCON,#00HMOV A,#01HCLR P1.0START:MOV SBUF,ALOOP:JNB TI,LOOPSETB P1.0ACALL DELAYCLR TI RL ACLR P1.0SJMP STARTDELAY:MOV R7,#05HLOOP2:MOV R6,#0FFHLOOP1:DJNZ R6,LOOP1DJNZ R7,LOOP2RETEND,C语言程序:#include/包含特殊功能寄存器库sbit P1_0=P10;void main()unsigned char i,j;SCON=0 x00;j=0 x01;for(;)P1_0=0;SBUF=j;while(!TI);P1_0=1;TI=0;for(i=0;i=254;i+);j=j*2;if(j=0 x00)j=0 x01;,2利用方式1实现点对点的双机通信,【例5-6】用汇编语言编程通过串行实现将甲机的片内RAM中30H3FH单元的内容传送到乙机的片内RAM的40H4FH单元中。,甲、乙两机都选择方式1:8位异步通信方式,最高位用作奇偶校验,波特率为1200bps,甲机发送,乙机接收,因此甲机的串口控制字为40H,乙机的串口控制字为50H。由于选择的是方式1,波特率由定时/计数器T1的溢出率和电源控制寄存器PCON中的SMOD位决定。则须对定时/计数器T1初始化。设SMOD=0,甲、乙两机的振荡频率为12MHZ,由于波特率为1200。定时/计数器T1选择为方式2,则初值为:初值=256-fosc2SMOD/(12波特率32)=256-12000000/(12120032)230=E6H 根据要求定时/计数器T1的方式控制字为20H。,甲机的发送程序:TSTART:MOV TMOD,#20H MOV TL1,#0E6H MOV TH1,#0E6H MOV PCON,#00H MOV SCON,#40H MOV R0,#30H MOV R7,#10H SETB TR1LOOP:MOV A,R0 MOV C,PMOV A.7,C MOV SBUF,AWAIT:JNB TI,WAIT CLR TI INC R0 DJINZ R7,LOOP RET,乙机接收程序:RSTART:MOV TMOD,#20H MOV TL1,#0E6H MOV TH1,#0E6HMOV PCON,#00HMOV R0,#40H MOV R7,#10HSETB TR1LOOP:MOV SCON,#50H WAIT:JNB RI,WAITMOV A,SBUFMOV C,PJC ERROR ANL A,#7FH MOV R0,AINC R0DJINZ R7,LOOPRET,3多机通信,通过MCS-51单片机串行口能够实现一台主机与多台从机进行通信,主机和从机之间能够相互发送和接收信息。但从机与从机之间不能相互通信。,MCS-51单片机串行口的方式2和方式3是9位异步通信,发送信息时,发送数据的第9位由TB8取得,接收信息的第9位放于RB8中,而接收是否有效要受SM2位影响,当SM2=0时,无论接收的RB8位是0还是1,接收都有效,RI都置1;当SM2=1时,只有接收的RB8位等于1时,接收才有效,RI才置1。利用这个特性便可以实现多机通信。多机通信时,主机每一次都向从机传送两个字节信息,先传送从机的地址信息,再传送数据信息,处理时,地址信息的TB8位设为1,数据信息的TB8位设为0。硬件线路图如下图,多机通信过程如下:(1)所有从机的SM2位开始都置为1,都能够接收主机送来的地址。(2)主机发送一帧地址信息,包含8位的从机地址,TB8置1,表示发送的为地址帧。(3)由于所有从机的SM2位都为1,从机都能接收主机发送来的地址,从机接收到主机送来的地址后与本机的地址相比较,如接收的地址与本机的地址相同,则使SM0位为0,准备接收主机送来的数据,如果不同,则不作处理。(4)主机发送数据,发送数据时TB8置为0,表示为数据帧。(5)对于从机,由于主机发送的第9位TB8为0,那么只有SM2位为0的从机可以接收主机送来的数据。这样就实现主机从多台从机选择一台从机进行通信了。,并行输入/输出接口,定时/计数器接口,串行接口,中断系统,1,2,3,4,6.4 中断系统,一、中断的概念,MCS-51系列中,不同型号单片机的中断源数目也不同。51子系列有5个中断源。,二、MCS-51单片机的中断系统,RI,TI,TF1,IE1,TF0,IE0,中断请求标志,ES,ET1,EX1,ET0,EX0,1,PS,PT1,PX1,PT0,PX0,高级,低级,内部查询,内部查询,入口地址,入口地址,INT0,INT1,T0,T1,TI,RI,中断允许控制,中断优先级,EA,1.中断源MCS51共有五个中断源。其中,外部中断源2个:外部中断0:INT0,由P3.2提供,外部中断1:INT1,由P3.3提供,外部中断有两种信号方式,即(低)电平方式和边沿(下降沿)方式。内部中断源3个:T0溢出中断:由片内定时/计数器0提供T1溢出中断:由片内定时/计数器1提供串行口中断RI/TI:由片内串行口提供(发送和接收),中断请求标志位:5个中断源都是通过置位相应的中断请求标志位来向CPU申请中断的。其中,两个外部中断和T0,T1两个定时/计数器中断的请求标志位于特殊功能寄存器TCON中。,TCON,IE0/IE1 外中断0/1请求标志。为“1”时,向CPU请求中断,CPU响应该中断时由硬件清零请求标志(对边沿触发方式)。TF0/TF1 定时/计数器0/1溢出中断请求标志。T0/1被允许计数以后,开始从初值加1计数,当产生溢出时,则置位TF0/1,向CPU请求中断,一直到CPU响应该中断,才由内部硬件清零请求标志。IT0/IT1 外中断源触发方式控制位。为“0”时,为电平触发方式;为“1”时,选边沿触发方式。电平方式的应用要注意在响应中断时清除请求。,串行中断的中断请求标志位在特殊功能寄存器SCON中:,发送中断请求标志,接收中断请求标志,+,串行中断请求,注意:串行中断请求标志位在中断被响应后,必须由软件清零,以免引起重复响应。,2.中断控制,中断使能控制CPU对中断源的开放或屏蔽,每个中断源是否被允许中断,由中断允许寄存器IE(SFR,地址0A8H)控制。,中断开放标志位,串行口中断允许标志位,T1中断允许标志位,外中断1允许标志位,T0中断允许标志位,外中断0允许标志位,1:允许0:屏蔽,T2中断允许标志位,中断优先级控制 MCS51有两个中断优先级,每一中断请求源可编程为高优先级中断或低优先级中断,实现二级中断嵌套。由优先级控制寄存器IP(SFR,地址0B8H)控制。,T2中断优先级控制位,串口中断优先级控制位,T1中断优先级控制位,外中断1优先级控制位,T0中断优先级控制位,外中断0优先级控制位,在同一优先级里,由内部硬件的查询顺序决定优先级结构,排列如下:,注意:复位后,特殊功能寄存器IE,IP内容都为0,需要根据需要重新设置。,3.中断响应过程,单片机在每个机器周期,顺序采样每个中断源,CPU在下一个机器周期S6期间按优先级顺序查询中断标志,如查询到某个中断标志为1,将在再下一个机器周期S1期间按优先级进行中断处理。中断得到响应后自动清除中断标志(TF2、EXF2、TI、RI除外),由硬件将程序计数器PC内容压入堆栈保护,然后将对应的中断矢量装入程序计数器PC,使程序转向中断矢量地址单元中去执行相应的中断服务程序。,注意:下列任何一种情况存在中断申请将被封锁:,(1)CPU正在执行一个同级或高一级的中断服务程序。(2)当前正在执行的那条指令还未执行完。(3)当前正在执行的指令是RETI或对IE,IP寄存器进行读/写指令,执行这些指令后至少再执行一条指令才会响应中断。,处理器响应中断时,先置位相应的优先级状态触发器(该触发器指出CPU开始处理的中断优先级别),然后执行一条硬件子程序调用,使控制转移到相应的入口,清“0”中断请求源申请标志(TF2、EXF2、TI和RI除外)。接着把程序计数器的内容压入堆栈(但不保护PSW),将被响应的中断服务程序的入口地址送程序计数器PC。各中断源服务程序的入口地址:,通常在中断入口,安排一条相应的跳转指令,以跳到用户设计的中断处理程序入口。,4.外部中断响应时间及触发方式选择,从产生外部中断请求,到开始执行中断服务程序的第一条指令之间,最少需要3个完整的机器周期。如果遇到正在执行的指令为RETI或访问IE、IP指令,则额外的等待时间最多可达5个机器周期。所以外部中断响应时间在38个机器周期。外部中断触发方式可由相应的控制位IT0/IT1选择电平触发或是边沿触发。,MCS-51中断系统的应用,【例5-9】某工业监控系统,具有温度、压力、PH值等多路监控功能,中断源的连接如图5.26所示。对于PH值,在小于7时向CPU申请中断,CPU响应中断后使P3.0引脚输出高电平,经驱动,使加碱管道电磁阀接通1秒钟,以调整PH值。,系统监控通过外中断INT0来实现,这里就涉及多个中断源的处理,处理时往往通过中断加查询的方法来实现。多个中断源通过“线或”接于 INT0上。那么无论哪个中断源提出请求,系统都会响应中断,响应后,进入中断服务程序,在中断服务程序中通过对P1口线的逐一检测来确定哪一个中断源的提出了中断请求,进一步转到对应的中断服务程序入口位置执行对应的处理程序。这里只针对PH7时的中断构造了相应的中断服务程序INT02,接通电磁阀延时1秒钟的延时子程序DELAY已经构造好了,只须调用即可。,汇编程序如下:ORG 0003H;外部中断0中断服务程序入口 JB P1.0,INT00;查询中断源,转对应的中断服务子程序 JB P1.1,INT01 JB P1.2,INT02 JB P1.3,INT03 ORG 0080H;PH值超限中断服务程序INT02:PUSH PSW;保护现场 PUSH ACC SETB PSW.3;工作寄存器设置为1组,以保护原0组的内容 SETB P3.0;接通加碱管道电磁阀 ACALL DELAY;调延时1秒子程序 CLR P3.0;1秒钟到关加碱管道电磁阀 ANL P1,#0BFH ORL P1,#40H;这两条用来产生一个P1.6的负脉冲,;用来撤除PH7的中断请求 POP ACC POP PSW RETI,C语言程序:#include sbit P10=P10;sbit P11=P11;sbit P12=P12;sbit P13=P13;sbit P16=P16;sbit P30=P30;void int0()interrupt 0 using1void int00();void int01();void int02();void int03();if(P10=1)int00();/查询调用对应的函数else if(P11=1)int01();else if(P12=2)int02();else if(P13=1)int03();,void int02()unsigned char i;P30=1;for(i=0;i255;i+);P30=0;P16=0;P16=1;,作 业,P166 习题:4,5,8,11,15,18,23,END,END,END,END,END,END,THANK YOU,

    注意事项

    本文([信息与通信]第六章单片机内部资源及编程.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开