单片机第二章答案 经贸

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

单片机第二章答案经贸章580C51的中断系统及定时/计数器1.80C51有几个中断源?各中断标志是如何产生的?又是如何复位的?CPU响应各中断时,其中断入口地址是多少?答:5个中断源,分别为外中断INT0和INT1、T0和T1溢出中断、串口中断。电平方式触发的外中断标志与引脚信号一致;边沿方式触发的外中断响应中断后由硬件自动复位。T0和T1,CPU响应中断时,由硬件自动复位。RI和TI,由硬件置位。必须由软件复位。另外,所有能产生中断的标志位均可由软件置位或复位。各中断入口地址:INT0―0003H,T0—000BH,INT1—0013H,T1—001BH,RI和TI—0023H。2.某系统有三个外部中断源1、2、3,当某一中断源变低电平时便要求CPU处理,它们的优先处理次序由高到低为3、2、1,处理程序的入口地址分别为2021H、2100H、2200H。试编写主程序及中断服务程序(转至相应的入口即可)。答:将3个中断信号经电阻线或,接INT1。ORG0000HLJMPMAINORG0013HLJMPZDFZORG0040HMAIN:SETBEASETBEX1SJMP$0RG0200HZDFZ:PUSHPSWPUSHACCJBP1.0,DV0JBP1.1,DV1JBP1.2,DV2INRET:POPACCPOPPSWRETIORG2021HDV0:------------JMPINRETORG2100HDV1:------------JMPINRETORG2200HDV2:------------JMPINRET3.外部中断源有电平触发和边沿触发两种触发方式,这两种触发方式所产生的中断过程有何不同?怎样设定?答:当IT0=0时,INT0为电平触发方式。电平触发方式时,CPU在每个机器周期的S5P2采样INT0引脚电平,当采样到低电平时,置IE0=1向CPU请求中断;采样到高电平时,将IE0清0。在电平触发方式下,CPU响应中断时,不能自动清除IE0标志。电平触发方式时,外部中断源的有效低电平必须保持到请求获得响应时为止,不然就会漏掉;在中断服务结束之前,中断源的有效的低电平必须撤除,否则中断返回之后将再次产生中断。该方式适合于外部中断输入为低电平,且在中断服务程序中能清除外部中断请求源的情况。当IT0=1时,INT0为边沿触发方式。边沿触发方式时,CPU在每个机器周期的S5P2采样INT0引脚电平,如果在连续的两个机器周期检测到INT0引脚由高电平变为低电平,即第一个周期采样到INT0=1,第二个周期采样到INT0=0,则置IE0=1,产生中断请求。在边沿触发方式下,CPU响应中断时,能由硬件自动清除IE0标志。边沿触发方式时,在相继两次采样中,先采样到外部中断输入为高电平,下一个周期采样到为低电平,则在IE0或IE1中将锁存一个逻辑1。若CPU暂时不能响应,中断申请标志也不会丢失,直到CPU响应此中断时才清0。另外,为了保证下降沿能够被可靠地采样到,INT0和INT1引脚上的负脉冲宽度至少要保持一个机器周期(若晶振频率为12MHz,为1微秒)。边沿触发方式适合于以负脉冲形式输入的外部中断请求。4.定时/计数器工作于定时和计数方式时有何异同点?答:定时/计数器实质是加1计数器。不同点:设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值乘以机器周期就是定时时间。设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。相同点:它们的工作原理相同,它们都有4种工作方式,由TMOD中的M1M0设定,即方式0:13位计数器;方式1:16位计数器;方式2:具有自动重装初值功能的8位计数器;方式3:T0分为两个独立的8位计数器,T1停止工作。5.定时/计数器的4种工作方式各有何特点?答:方式0位13位计数器,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。计数初值计算的公式为:X=213-N方式1的计数位数是16位,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器。计数个数与计数初值的关系为:X=216-N方式2为自动重装初值的8位计数方式。TH0为8位初值寄存器。当TL0计满溢出时,由硬件使TF0置1,向CPU发出中断请求,并将TH0中的计数初值自动送入TL0。TL0从初值重新进行加1计数。周而复始,直至TR0=0才会停止。计数个数与计数初值的关系为:X=28-N方式3只适用于定时/计数器T0,定时器T1处于方式3时相当于TR1=0,停止计数。方式3时,T0分成为两个独立的8位计数器TL0和TH0,TL0使用T0的所有控制位。当TL0计数溢出时,由硬件使TF0置1,向CPU发出中断请求。而TH0固定为定时方式(不能进行外部计数),并且借用了T1的控制位TR1、TF1。因此,TH0的启、停受TR1控制,TH0的溢出将置位TF1。6.要求定时/计数器的运行控制完全由TR1、TR0确定和完全由INT0、INT1高低电平控制时,其初始化编程应作何处理?答:TMOD中GATE的值不同:完全由TR1、TR0确定时GATE为0;完全由INT0、INT1高低电平控制时GATE为1。7.当定时/计数器T0用作方式3时,定时/计数器T1可以工作在何种方式下?如何控制T1的开启和关闭?答:T0用作方式3时,T1可以工作在方式0、1和2。T1的开启由TR1控制,即TR1=1时,T1开始工作;TR1=0时或者定时/计数器工作在方式3时,T1停止工作。8.利用定时/计数器T0从P1.0输出周期为1s,脉宽为20ms的正脉冲信号,晶振频率为12MHz。试设计程序。答:采用定时20ms,然后再计数1、49次的方法实现。a、T0工作在定时方式1时,控制字TMOD配置:M1M0=01,GATE=0,C/T=0,可取方式控制字为01H;b、计算计数初值X:晶振为12MHz,所以机器周期Tcy为1μs。N=t/Tcy=20×10-3/1×10-6=20210X=216-N=65536-20210=45536=B1E0H即应将B1H送入TH1中E0H送入TL1中。c、实现程序如下:ORG0000HAJMPMAIN;跳转到主程序ORG0030HMAIN:MOVTMOD,#01H;设T1工作于方式1MOVTH0,#B1H;装入循环计数初值MOVTL0,#E0H;首次计数值LP0:SETBP1.0ACALLNT0CLRP1.0MOVR7,#49;计数49次LP1:ACALLNT0DJNZR7,LP1AJMPLP0NT0:MOVTH0,#4EHMOVTL0,#20HSETBTR0JNBTF0,$CLRTR0CLRTF0RETEND9.要求从P1.1引脚输出1000Hz方波,晶振频率为12MHz。试设计程序。答:采用T0实现a、T0工作在定时方式1时,控制字TMOD配置:M1M0=01,GATE=0,C/T=0,可取方式控制字为01H;b、计算计数初值X:晶振为12MHz,所以机器周期Tcy为1μs。1/1000=1×10-3N=t/Tcy=0.5×10-3/1×10-6=500X=216-N=65536-500=65036=FE0CH即应将FEH送入TH0中,0CH送入TL0中。c、实现程序如下:ORG0000HAJMPMAIN;跳转到主程序ORG000BH;T0的中断入口地址LJMPDVT0ORG0030HMAIN:MOVTMOD,#01H;设T0工作于方式2MOVTH0,#0FEH;装入循环计数初值MOVTL0,#0CH;首次计数值SETBET0;T0开中断SETBEA;CPU开中断SETBTR0;启动T0SJMP$;等待中断DVT0:CPLP1.1MOVTH0,#0FEHMOVTL0,#0CHSETBTR0RETIEND10.试用定时/计数器T1对外部事件计数。要求每计数100,就将T1改成定时方式,控制P1.7输出一个脉宽为10ms的正脉冲,然后又转为计数方式,如此反复循环。设晶振频率为12MHz。答:a、T1工作在计数方式2时,控制字TMOD配置:M1M0=10,GATE=0,C/T=1,可取方式控制字为60H;T1工作在定时方式1时,控制字TMOD配置:M1M0=01,GATE=0,C/T=0,可取方式控制字为10H;b、计算初值X:定时10ms时:晶振为12MHz,所以机器周期Tcy为1μs。N=t/Tcy=10×10-3/1×10-6=10000X=216-N=65536-10000=55536=D8F0H即应将D8H送入TH1中,F0H送入TL1中。计数100时:N=100X=28-N=256-100=156=9CHc、实现程序如下:ORG0000HAJMPMAIN;跳转到主程序ORG001BH;T1的中断入口地址LJMPDVT1ORG0030HMAIN:MOVTMOD,#60H;T1工作于计数方式2MOVTH1,#9CH;装入计数初值MOVTL1,#9CH;CLRP1.7SETBET1;T1开中断SETBEA;CPU开中断SETBTR1;启动T1SJMP$;等待中断DVT1:SETBP1.7CLRET1CLRTR1MOVTMOD,#10H;T1工作于定时方式1MOVTH1,#0D8H;装初值MOVTL1,#0F0HSETBTR1JNBTF1,$;查询等待10msCLRTF1CLRTR1CLRP1.7MOVTMOD,#60H;T1工作于计数方式2MOVTH1,#9CH;装初值MOVTL1,#9CH;SETBET1;T1开中断SETBTR1;启动T1RETIEND11.利用定时/计数器T0产生定时时钟,由P1口控制8个指示灯。编一个程序,使8个指示灯依次闪动,闪动频率为1次/秒(即,亮1秒后熄灭并点亮下一个,-----)。答:采用定时20ms,计数50次实现1秒定时。编制1秒延时子程序,由主程序调用。a、T0工作在定时方式1时,控制字TMOD配置:M1M0=01,GATE=0,C/T=0,可取方式控制字为01H;b、计算计数初值X:晶振为12MHz,所以机器周期Tcy为1μs。N=t/Tcy=20×10-3/1×10-6=20210X=216-N=65536-20210=45536=4E20H即应将4EH送入TH1中,20H送入TL1中。c、实现程序如下:ORG0000HAJMPMAIN;跳转到主程序ORG0030HMAIN:CLRCYMOVA,#01HLP0:MOVP1,ACALLD1SECRLAAJMPLP0D1SEC:MOVR7,#50;计数50次MOVTMOD,#01HDL:MOVTH0,#4EHMOVTL0,#20HSETBTR0JNBTF0,$CLRTR0CLRTF0DJNZR7,DLRETEND

1 / 13
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功