1、单片机实验报告三姓名 薛凤杰 学号 0915241038 时间 2011.11.21 地点 B526 实验题目 中断、定时器实验 一、实验目的1. 学习外部中断和定时器的工作原理及使用方法。2. 学习外部中断和定时器的初始化程序、应用程序的编写和调试。二、实验主要仪器和环境PC 机、 WAVE 软件、仿真器 +仿真头、实验板、电源等。三、实验说明本实验 1 通过开关向单片机提出中断请求,单片机响应中断进行计数,并通过 LED 数码管指示出计数值,从而观察中断的请求、响应的过程。实验 2 通过单片机的定时器产生延时,模拟交通灯控制的方法。通过本实验学生可以掌握单片机中断和定时器的工作原理及使用方
2、法以及中断和定时器的初始化程序、应用程序的编写和调试。 四、实验内容1、开关 S0S1 连接 P3 口做输入,P0 输出接 LED 数码管,通过 S2 产生外部中断请求(/INT0)信号,在中断服务程序中完成十进制递增计数,并将计数值显示在 LED 数码管上,要求分别采用电平触发和边沿触发。按上述要求完成 S3 产生外部中断请求。编写初始化程序和中断服务程序。 (注意开关抖动处理)2、P10-P17 作输入口接拨动开关 S0-S7;P0.0-P0.7 作输出口,接发光二极管L1L8,编写程序读取开关状态,将此状态在对应的发光二极管上显示出来,要求发光二极管(LED)按亮 0.5 秒、暗 0.5
3、 秒闪烁,LED 亮的同时,从 P2.0 送出 1kHz 的音频信号到音频驱动电路发声(持续 0.5 秒) ,将开关编号(07)显示在 LED 数码管上。要求延时采用内部定时器 T0,音频的产生采用内部定时器 T1。编写初始化程序和中断服务程序。五、实验 1 电路连线P00 - LED0 P3.2(/INT0)- S2P01 - LED1 P02 - LED2 P03 - LED3 P04 - LED4 P05 - LED5 P06 - LED6 P07 - LED7 外部中断请求输入评阅abcdef gh(dp)a b c d e f g h(dp)P2.7 P2.6 P2.5 P2.4P2
4、.3 P2.2P2.1 P2.0实验 2: LED 数码管各段与 I/O 的连接ORG 0000HAJMP MAINORG 0003HAJMP INT_0ORG 0013HAJMP INT_1ORG 0100HMAIN: CLR EA ;关 CPU 中断SETB EX0 ;开外部中断 0SETB EX1 ;开外部中断 1CLR IT0 ;设置外部中断 0 为电平触发方式SETB IT1 ;设置外部中断 1 为跳沿触发方式MOV R0,#00HMOV DPTR,#TABLE ;DPTR 指向表头ACALL DISP ;初始显示 0SETB EA ;开总中断SJMP $ ;等待中断INT_0: C
5、LR EA ;关总中断ACALL DELAY ;消抖JB P3.2,OUT0 ;判断是否真的触发INC R0 ;触发显示加一CJNE R0,#0AH,DISP0 ;显示到 10 清 0MOV R0,#00HDISP0: ACALL DISPOUT0: SETB EA ;重开总中断RETIINT_1: CLR EAACALL DELAYJB P3.3,OUT1INC R0CJNE R0,#0AH,DISP1MOV R0,#00HDISP1: ACALL DISPOUT1: SETB EARETI;显示子程序DISP: MOV A,R0MOVC A,A+DPTRMOV P0,ARET;延时子程序D
6、ELAY: MOV R5,#100 ;D1: MOV R6,#20D2: MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RETTABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;七段数码管共阴编码END六、实验程序流程框图、实验程序1、边沿触发 初始化 ORG 0000HLJMP MAINORG 0003H 初始化开中断LJMP INT ORG 0110HMAIN:SETB EA ;EA 位置 1,CPU 开中断 结束SETB EX0 ;EX0 位置 1,允许外部中断 0 产生中断CLR IT0 ;外部中断 0
7、 为跳沿触发方式MOV SP,#65H ;设置堆栈指针MOV P3,#0FFH ;准双向口用前置 1 MOV P2,#0FFH ;检测口置 1WAIT: SJMP $ ;等待中断INT: ACALL DELAY ;消除抖动JB P3.2, OV ;避免由于放健时的上升沿,产生中断进行第二次显示中断入口去抖动释放按键NPUSH PSW ;现场保护PUSH AMOV R2,#10MOV A,#00HLOOP:MOV P0, A ;循环实现连续显示 09MOV DPTR,#TAB ;所查表的首地址赋给 DPTRMOVC A,A+DPTRMOV P2,A ACALL DELAYMOV A,P0INC
8、ADJNZ R2, LOOPPOP A ;恢复现场 POP PSWSETB EAOV: RETITAB: DB 0FCH,60H,0DAH,0F2H,66H ; DB 0B6H,0BEH,0E0H,0FEH,0F6H;DELAY: ;0.5S 的延时程序DEL: MOV R7,#10DEL1: MOV R6,#246 电平触发流程图如下:DEL2: MOV R5,#100DEL3: DJNZ R5,DEL3 DJNZ R6,DEL2 DJNZ R7,DEL1 RET ;返回主程序END 2、电平触发ORG 0000HLJMP MAIN ORG 0003HLJMP INTORG 0110HMAI
9、N:SETB EA ;EA 位置 1,CPU 开中断SETB EX0 ;EX0 位置 1,允许外部中断 0 产生中断CLR IT0 ;外部中断 0 为电平触发方式MOV SP,#65H ;设置堆栈指针MOV P3,#0FFH ;准双向口用前置 1MOV P2,#0FFH ;检测口置 1WAIT: SJMP $ ;等待中断INT: ACALL DELAY ;消除抖动PUSH PSW ;现场保护PUSH AMOV R2,#10现场保护R2=10恢复现场中断返回显示数字R2=0?YYNMOV A,#00HLOOP:MOV P0, A ;循环实现连续显示 19MOV DPTR,#TAB ;所查表的首地
10、址赋给 DPTRMOVC A,A+DPTRMOV P2,A ACALL DELAYMOV A,P0INC ADJNZ R2, LOOPPOP A ;恢复现场POP PSWSETB EARETITAB: DB 0FCH,60H,0DAH,0F2H,66H ;DB 0B6H,0BEH,0E0H,0FEH,0F6H;DELAY: ;0.5S 的延时程序DEL: MOV R7,#10DEL1: MOV R6,#246DEL2: MOV R5,#100DEL3: DJNZ R5,DEL3 DJNZ R6,DEL2 DJNZ R7,DEL1 RET ;返回主程序END 实验二 ORG 0000H ; 初始
11、化AJMP MAINORG 000BH ;中断一入口地址AJMP T0ORG 001BH ;中断二入口地址AJMP T1ORG 0100HMAIN: MOV SP,#66HMOV TMOD,#11H ;中断 0,1 都工作在方式 1MOV TL0,#0B0H ;中断 0,延时 50msMOV TH0,#03CHMOV TL1,#0CH ;中断 1 延时 0.5ms,产生 1KHz 的信号MOV TH1,#0FEHSETB PT1MOV IE,#0AH ;允许 T0 中断 允许 T1 中断,等价于 SETB ET0 SETB ET1SETB EA ;开总中断SETB TR0 ;开中断 T0,CL
12、R TR1 ;关闭 T1MOV R2,#00H ;计数清 0MOV R0,#10 ;T1 中断次数MOV P1 ,#0ffHSEARCH:MOV A,P1CJNE A,#0FFH,LOOK ;判断有没有按键按下MOV P2,#00H ;无按键则数码管不显示MOV P0,#00H ;无按键则 LED 不显示SJMP SEARCHLOOK: ACALL DELAY10MS ;去抖 CJNE A,#0FFH,FIND;判断有没有按键按下SJMP SEARCHFIND: RRC A ;检查是哪一个按键按下JNC DISPLAY ;如果进位位为 0 则执行数码管转换INC R2AJMP FIND DIS
13、PLAY: MOV DPTR,#TAB MOV A, R2 MOVC A,A+DPTR MOV P2,A; SJMP MAINTAB: DB 0FCH,60H,0DAH,0F2H,66H ; DB 0B6H,0BEH,0E0H,0FEH,0F6H;T0: MOV TL0,#0B0H ;中断 0 子程序MOV TH0,#03CHDJNZ R0,RETURN ;50ms 循环 10 次MOV R0,#0AHMOV A,P1CJNE A,#0FFH, LOOP1 ;判断有没有按键按下MOV P2,#00H ;无按键则数码管不显示MOV P0,#00H ;无按键则 LED 不显示SJMP RETURN
14、LOOP1:CPL F0JNB F0,LOOP2SETB TR1MOV A,P1CPL AMOV P0,A SJMP RETURNLOOP2:CLR TR1MOV P0,#00H RETURN: RETIT1: MOV TL1,#0CH ;重装初值MOV TH1,#0FEHDO: CPL P2.0 ;有按键按下则送 1KHz 的信号RETI DELAY10MS: ;10MS 延时程序MOV R7,#20D1: MOV R6,#250DJNZ R6,$DJNZ R7,D1RETEND流程图: 开始 定时器 0 中断7、思考题1、外部中断采用电平触发和边沿触发处理方法上又何不同?解:电平触发和沿触
15、发处理方法上有一下不同点:a.电平触发可以消除抖动,而沿触发消除抖动就没有意义了。b.电平触发只要 P3.2 是低电平中断就会一直响应,而沿触发则只有下降沿的时候中断才能响应。此实验中电平触发在中断服务程序中加了一段 300ms 的延时程序,来防止计数过快人无法反应过来的情况。而沿触发方式则没有这一项。2、阐述定时器几种工作方式所实现的功能及应用时的注意事项。解:工作方式 0,为 13 位定时器/计数器。工作方式 1,为 16 位定时器/计数器。工作方式2,8 位常数自动重新装载的定时器计数器。工作方式 3,仅适用于 T0,T0 分成两个 8 位计数器,T1 停止工作。应用时应注意中断服务程序不能过长,如果过长有可能导致中断丢失的情况。3、试画出音频驱动电路的原理图并分析工作原理和作用。工作原理为,当片机 IO 口为高电平是三极管导通,经过电流放大驱动蜂鸣器。低电平时截止没有电流流过蜂鸣器无响声。作用是增加单片机的带负载能力。 初始化有键按下?去抖输入值右移一位到 Cy有键按下?F0=0?计数值加 1查表,送数码管显示Cy=0?开 T1 中断,蜂鸣器响全灭了 LED,关 T1 中断NNNYYYF0 取反是否有键按下?够 0.5 秒否? NNNY中断返回YY