C的中断系统及定时习题解答实用.pptx
11、80C51有几个中断源?各中断标志是如何产生的?又是如何复位的?CPU响应各中断时,其中断入口地址是多少?1.答:5个中断源,分别为外中断/INT0 和/INT1、T0和T1溢出中断、串口中断。电平方式触发的外中断标志与引脚信号一致;边沿方式触发的外中断响应中断后由硬件自动复位。T0和T1,CPU响应中断时,由硬件自动复位。RI和TI,由硬件置位。必须由软件复位。另外,所有能产生中断的标志位均可由软件置位或复位。各中断入口地址:/INT0 0003H,T0000BH,/INT1 0013H,T1001BH,RI和TI0023H。第1页/共7页22、某系统有三个外部中断源1、2、3,当某一中断源变低电平时便要求CPU处理,它们的优先处理次序由高到低为3、2、1,处理程序的入口地址分别为2000H、2100H、2200H。试编写主程序及中断服务程序(转至相应的入口即可)。代码:ORG0000HLJMPMAINORG00013HLJMPZDFZORG0040HMAIN:SETBEASETBEX1SJMP$2.答:电路接线图或非门DV3DV2DV1DV3DV2DV1P1.0P1.1P1.2/INT180C510RG0200HZDFZ:PUSHPSWPUSHACCJBP1.0,DV3JBP1.1,DV2JBP1.2,DV1INRET:POPACCPOPPSWRETIORG2000HDV3:-JMPINRETORG2100HDV2:-JMPINRETORG2200HDV1:-JMPINRET第2页/共7页36、要求定时/计数器的运行控制完全由TR1、TR0确定和完全由、高低电平控制时,其初始化编程应作何处理?答:TMOD中GATE的值不同:完全由TR1、TR0确定时GATE为0;完全由高、低电平控制时GATE为1。第3页/共7页49、要求从P1.1引脚输出1000Hz方波,晶振频率为12MHz。试设计程序。答:采用T0实现a、T0工作在定时方式1时,控制字TMOD配置:M1M0=01,GATE=0,C/=0,可取方式控制字为01H;b、计算计数初值X:晶振为12MHz,所以机器周期Tcy为1。1/1000=1103Nt/Tcy0.5103/1106500X216N6553650065036FE0CH即应将FEH送入TH0中,0CH送入TL0中。c、实现程序如下:ORG0000HAJMPMAIN;跳转到主程序ORG000BH;T0的中断入口地址LJMPDVT0ORG0030HMAIN:MOVTMOD,#01H;设T0工作于方式1MOVTH0,#0FEH;装入循环计数初值MOVTL0,#0CH;首次计数值SETBET0;T0开中断SETBEA;CPU开中断SETBTR0;启动T0SJMP$;等待中断DVT0:CPLP1.1MOVTH0,#0FEHMOVTL0,#0CHSETBTR0RETIEND第4页/共7页511、利用定时/计数器T0产生定时时钟,由P1口控制8个指示灯。编一个程序,使8个指示灯依次一个一个闪动,闪动频率为20次/秒(8个灯依次亮一遍为一个周期)。答:由题有LED闪动频率为闪动频率为2020次次/秒秒 即即t t LED=1/20=0.05S=50ms=1/20=0.05S=50ms采用定时t=10ms,计数50次实现50毫秒定时。编制50毫秒延时子程序,由主程序调用。a、T0工作在定时方式1时,控制字TMOD配置:M1M0=01,GATE=0,C/=0,可取方式控制字为01H;b、计算计数初值X:晶振为12MHz,所以机器周期Tcy为1。Nt/Tcy10103/110610000X216N655361000055536D8F0H即应将D8送入TH0中,f0H送入TL0中。ENDc、实现程序如下:ORG0000HAJMPMAIN;跳转到主程序ORG0030HMAIN:CLRET0MOVA,#01HLP0:MOVP1,ACALLD1SECRLAAJMPLP0D1SEC:MOVR7,#50;计数50次MOVTMOD,#01HDL:MOVTH0,#0D8HMOVTL0,#0F0HSETBTR0JNBTF0,$CLRTR0CLRTF0DJNZR7,DLRET第5页/共7页6方法二:解:由题有LED闪动频率为闪动频率为2020次次/秒秒 即即t t=1/20=0.05S=50ms=1/20=0.05S=50msa、T0工作在定时方式1时,控制字TMOD配置:M1M0=01,GATE=0,C/=0,可取方式控制字为01H;b、计算计数初值X:晶振为12MHz,所以机器周期Tcy为1。Nt/Tcy50103/110650000X216N6553650000155363CB0H即应将3CH送入TH0中,B0送入TL0中。ENDc、实现程序如下:ORG0000HAJMPMAIN;跳转到主程序ORG000BH;T0的中断入口地址LJMPDVT0ORG0030HMAIN:MOVTMOD,#01H;设T0工作于方式1MOVTH0,#3CH;首次计数值MOVTL0,#0B0H;首次计数值MOVA,01HMOVP1,ASETBET0;T0开中断SETBEA;CPU开中断SETBTR0;启动T0SJMP$;等待中断DVT0:RLAMOVP1,AMOVTH0,#3CHMOVTL0,#0B0HSETBTR0RETIEND第6页/共7页7感谢您的欣赏!第7页/共7页