南昌大学实验报告学生姓名:学号:专业班级:实验类型:⃞验证⃞综合⃞设计⃞创新实验日期:2019.4.30实验成绩:实验四外部中断实验(一)实验目的1.掌握单片机外部中断原理;2.掌握数码管动态显示原理。(二)设计要求1.使用外部中断0和外部中断1;2.在动态数码管上显示中断0次数,中断1用作次数清0,数码管采用74HC595驱动。(三)实验原理1.中断:计算机执行主程序过程中,由于临时重要事件,需要暂停当前程序的运行,转到中断服务程序去处理临时事件,处理完后又返回原程序的断点处继续运行。图1STC15单片机的中断系统包含21个中断源,2个中断优先级,二级中断服务嵌套,中断允许寄存器IE、IE2和INT_CLKO控制中断允许。中断优先级寄存器IP、IP2管理中断优先级。同优先级中断同时提出中断请求时,由内部的查询逻辑确定响应次序。中断请求源中的外部中断0(INT0)和外部中断1(INT1)详述如下:1)外部中断0(INT0):中断信号由P3.2引脚输入。通过IT0来设置中断请求的触发方式。当IT0为“1”时,外部中断0为下降沿触发;当IT0为“0”时,无论是上升沿还是下降沿,都会引发外部中断0.一旦输入信号有效,则置位IE0标志,向CPU申请终端。2)外部中断1(INT1):中断信号由P3.3引脚输入。通过IT1来设置中断请求的触发方式。当IT1为“1”时,外部中断0为下降沿触发;当IT1为“0”时,无论是上升沿还是下降沿,都会引发外部中断0.一旦输入信号有效,则置位IE0标志,向CPU申请终端。2.LED数码管是显示数字和字母的常见显示器件,由8个发光二极管构成,结构如图2:图2段码:a、b、c、d、e、f、g、dp段的二进制代码(a为最低位),控制显示字型。位选:公共端com,控制数码管是否显示。3.数码管动态显示原理:任何时刻只有一个数码管处于显示状态,单片机采用“扫描”方式控制各个数码管轮流显示,通常将所有数码管段码线的相应段并联在一起,由一个8位I/O端口控制。各数码管的位选端分别由其他I/O口线单独控制。任一时刻,单片机控制只有1位位选线有效,即只选中一位数码管显示。其他位选线无效的数码管都不显示。每隔一定时间逐位地轮流点亮各数码管。由于数码管的余辉和人眼的“视觉暂留”作用,控制好每位数码管点亮的时间和间隔,即可达到多位同时显示的效果。(四)实验设备PC机,KeiluVision4和STC-ISP软件,STC单片机实验箱。(五)实验结果1.将程序烧录至单片机后,可观察到数码管的低三位显示000,其它位消隐(由于动态显示的间隔时间非常短,视觉上可观察到三个数码管同时显示),如图3所示:图32.每按下一次SW17键(外部中断0),数码管记一次数,当按下SW18键(外部中断1)后,数码管清零,显示为000,如图4所示:图4(六)结果讨论与心得体会将程序烧录至单片机后,可观察到数码管的低三位显示000,其它位消隐。每按下一次SW17键(外部中断0),数码管记一次数,当按下SW18键(外部中断1)后,数码管清零,显示为000,这与预期的结果一致。通过本次实验,我掌握了外部中断的原理,学会了利用按键来产生中断,还了解到如何使用数码管动态显示。(七)附录:实验源代码P4DATA0C0HP5DATA0C8HP4M1DATA0xB3P4M0DATA0xB4P5M1DATA0xC9P5M0DATA0xCALEDDATA30Hdisplay_indexDATA38HINT0_cntDATA39HP_HC595_SERBITP4.0P_HC595_RCLKBITP5.4P_HC595_SRCLKBITP4.3ORG0000HLJMPMainORG0003HLJMPINT0_ISRORG0013H·LJMPINT1_ISRORG0100HMain:MOVP4M1,#0MOVP4M0,#0MOVP5M1,#0MOVP5M0,#0MOVSP,#50HMOVR2,#08MOVdisplay_index,#0CLRIE1CLRIE0SETBIT0SETBIT1SETBEX0SETBEX1SETBEAMOVINT0_cnt,#0L_MainLoop:LCALLDELAY1MSLCALLF_DisplayScanLJMPL_MainLoopINT0_ISR:INCINT0_cntRETIINT1_ISR:MOVINT0_cnt,#0RETIT_Display:DB03FH,006H,05BH,04FH,066H,06DH,07DH,007H,07FH,06FH,077H,07CH,039H,05EH,079H,071HDB000HT_COM:DB0FEH,0FDH,0FBHF_Send_595:PUSH02HMOVR2,#8L_Send_595_Loop:RLCAMOVP_HC595_SER,CSETBP_HC595_SRCLKCLRP_HC595_SRCLKDJNZR2,L_Send_595_LoopPOP02HRETF_DisplayScan:PUSHDPHPUSHDPLPUSH00HMOVA,INT0_cntMOVB,#100DIVABMOVLED+0,AMOVA,#10XCHA,BDIVABMOVLED+1,AMOVLED+2,BMOVDPTR,#T_COMMOVA,display_indexMOVCA,@A+DPTRLCALLF_Send_595MOVDPTR,#T_DisplayMOVA,#LEDADDA,display_indexMOVR0,AMOVA,@R0MOVCA,@A+DPTRLCALLF_Send_595CLRP_HC595_RCLKSETBP_HC595_RCLKINCdisplay_indexMOVA,display_indexCJNEA,#3,L_QuitDisplayScanMOVdisplay_index,#0L_QuitDisplayScan:POP00HPOPDPLPOPDPHRETDELAY1MS:PUSH40HPUSH41HMOV40H,#9MOV41H,#150NEXT:DJNZ41H,NEXTDJNZ40H,NEXTPOP41HPOP40HRETEND