实验十一 P1口及外部中断
一、 实验目的
1.掌握利用MCS-51单片机P1口实现I/O的三种传送方式。
2.掌握MCS-51单片机外部中断源的原理和编程方法。
3.了解MCS-51单片机处理外部中断的全过程。
4.弄懂外部中断触发方式的选择。
二、 实验要求
熟练掌握结合DP-51PROC单片机综合仿真实验仪和Kiel C51 集成开发环境进行仿真调试。
三、 实验内容及实验电路
1、P1口无条件输出实验,电路图图3-1所示。
图3-1 P1口无条件输出
实验参考程序1:8个LED 灯同时闪亮。
ORG 8000H
LJMP Main
ORG 80F0H
Main:
MOV R7, #0
Loop:
MOV R6, #0
DJNZ R6, $
DJNZ R6, $
DJNZ R6, $
DJNZ R6, $
DJNZ R7, Loop
CPL P1.0 ; P 1 .0 取反
CPL P1.1 ; P 1 .1 取反
CPL P1.2 ; P 1 .2 取反
CPL P1.3 ; P 1 .3 取反
CPL P1.4 ; P 1 .4 取反
CPL P1.5 ; P 1 .5 取反
CPL P1.6 ; P 1 .6 取反
CPL P1.7 ; P 1 .7 取反
SJMP Main
END
2、P1口条件输出实验,电路如图3-2所示。
图3-2 P1口条件输出
实验参考程序2:
ORG 8000H
LJMP Main
ORG 8100H
Main:
JB P1.7,SETLED
CLRLED:
CLR P1.0
CLR P1.1
CLR P1.2
CLR P1.3
CLR P1.4
CLR P1.5
CLR P1.6
SJMP Main
SETLED:
SETB P1.0
SETB P1.1
SETB P1.2
SETB P1.3
SETB P1.4
SETB P1.5
SETB P1.6
SJMP Main
END
3、P1口中断输入/输出实验,电路如图3-3所示。
图3-2 P1口中断输入/输出
实验参考程序3:
ORG 8000H
LJMP Main
ORG 8003H
LJMP INT0SV
Main:
MOV SP, #5FH
SETB EA
SETB IT0
SETB EX0
SJMP $
INT0SV:
MOV P1,#0FFH
MOV A,P1
SWAP A
MOV P1,A
RETI
END
四、 实验步骤
实验内容1:P1口无条件输出实验
1. 断开DP-51PROC实验仪的电源,按图3-1接线,使用排线将A2区的J61接口与D1区的J52接口相连。
2. 接通DP-51PROC实验仪的电源,将TKSMonitor51 仿真器上的工作模式选择开关拨到RUN处。
3. 建立名为P1_wtjio工程,按实验参考程序1编辑新文件,文件名为:p1_wtj.asm。然后编译,无误转换为调试方式,运行程序,观察并记录运行结果。
同时闪亮
实验内容2:P1口条件输出实验
1、 断开DP-51PROC实验仪的电源,按图3-2接线,使用排线将A2区的J61接口与D1区的J52接口相连,使用导线把A2区的P1.7与D1区J54的SW1相连。
2、 接通DP-51PROC实验仪的电源,将TKSMonitor51 仿真器上的工作模式选择开关拨到RUN处。
3、 建立名为P1_tjio工程,按实验参考程序2编辑新文件,文件名为:p1_tj.asm。然后编译,无误转换为调试方式,预先将SW1置1或置0,运行程序,观察并记录运行结果。
底色为黄色的是数据有所变更的数据,下同
实验内容3:P1口中断方式输入/输出实验
1、断开DP-51PROC实验仪的电源,按图3-3接线,使用导线将A2区的P10、P11、P12分别与D1区的SW1、SW2 、SW3相连,使用导线把A2区INT0与D1区J53的KEY1(图3-3中的K1即为D1区的K1)相连。
2、 接通DP-51PROC实验仪的电源,将TKSMonitor51 仿真器上的工作模式选择开关拨到RUN处。
3、 建立名为P1_zdio工程,按实验参考程序3编辑新文件,文件名为:p1_zd.asm。然后编译,无误转换为调试方式,预先置好开关的状态,运行程序,观察中断的执行过程,并记录运行结果。
五、 思考题
1如何将P1口无条件输出的实验,修改为将8个LED发光二极管向左或向右循环点亮?
ORG 0000H
LJMP MAIN
ORG 000BH
MAIN:CLR P0.0
ACALL DEL
SETB P0.0
CLR P0.1
ACALL DEL
SETB P0.1
CLR P0.2
ACALL DEL
SETB P0.2
CLR P0.3
ACALL DEL
SETB P0.3
CLR P0.4
ACALL DEL
SETB P0.4
CLR P0.5
ACALL DEL
SETB P0.5
CLR P0.6
ACALL DEL
SETB P0.6
CLR P0.7
ACALL DEL
SETB P0.7
SJMP MAIN
DEL: MOV R7,#0FFH
DEL1: MOV R6,#0FFH
DJNZ R6,$
DJNZ R6,$
DJNZ R6,$
DJNZ R6,$
DJNZ R7,DEL1
RET
END
2如何利用INT0中断使P1口控制8个LED发光二极管向左或向右循环点亮?电路如何修改?程序如何修改?
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT0SV
MAIN: MOV SP,#5FH
SETB EA
SETB IT0
SETB EX0
SJMP $
INT0SV: MOV SP,#5FH
CLR EA
PUSH ACC
PUSH 01H
SETB EA
MOV P1,#0FFH
MOV R1,#0AH
LN: CLR P0.0
ACALL DEL
SETB P0.0
CLR P0.1
ACALL DEL
SETB P0.1
CLR P0.2
ACALL DEL
SETB P0.2
CLR P0.3
ACALL DEL
SETB P0.3
CLR P0.4
ACALL DEL
SETB P0.4
CLR P0.5
ACALL DEL
SETB P0.5
CLR P0.6
ACALL DEL
SETB P0.6
CLR P0.7
ACALL DEL
SETB P0.7
DJNZ R1,LN
CLR EA
POP 01H
POP ACC
SETB EA
RETI
DEL: MOV R7,#0FFH
DEL1: MOV R6,#0FFH
DJNZ R6,$
DJNZ R6,$
DJNZ R6,$
DJNZ R6,$
DJNZ R7,DEL1
RET
END
实验十一 P1口及外部中断
思考题
1、如何将P1口无条件输出的实验,修改为将8个LED发光二极管向左或向右循环点亮? 我们设计的效果为8个LED灯,两盏同时亮起并自左向右循环至末尾,然后反向自右向左点亮至开始位置,而后奇数灯与偶数灯交替闪亮4次,结束。
程序清单:
ORG 8000H
MAIN: MOV R0, #7 ;设左移7次
MOV A,#0FCH
LOOP: MOV P1, A
ACALL DELAY ;调延时子程序
RL A ;左移
DJNZ R0, LOOP
MOV R1, #7 ;设右移7次
LOOP1: RR A ;右移
MOV P1, A ACALL DELAY DJNZ R1, LOOP1 ;判断移动次数 MOV R2, #4 ;设置闪烁次数
MOV A, #55H ;设初始值
LOOP2: MOV P1, A ;2、4、6、8LED灯亮
ACALL DELAY
CPL A ;按位取反
DJNZ R2, LOOP2
SJMP MAIN
DELAY: MOV R7, #0
DELAY1:MOV R6 ,#0
DJNZ R6,$
DJNZ R6,$ DJNZ R6,$ DJNZ R6,$ DJNZ R7,DELAY1 RET ;子程序返回
END
2、如何利用INT0中断使P1口控制8个LED发光二极管向左或向右循环点亮?电路如何修改?程序如何修改?
我们设计的效果为:程序运行后两盏灯循环向左点亮,直到外部中断触发,反向循环一遍后奇数灯与偶数灯交替闪亮4次。此时外部中断程序运行结束,返回主程序。
ORG 8000H
LJMP MAIN
ORG 8003H
LJMP INT0SV
MAIN:
MOV IE,#81H ;开中断允许总控位和外部中断0 SETB EX0 ;开外部中断0中断允许控制位 MOV R0, #7 ;设左移7次
MOV A,#0FCH ;赋初值
LOOP: MOV P1, A ;1、2LED灯亮 ACALL DELAY
RL A
DJNZ R0, LOOP
SJMP MAIN
INT0SV: MOV A,#3FH
MOV R1, #7
LOOP1: RR A
MOV P1, A
ACALL DELAY
DJNZ R1, LOOP1
MOV R2, #4
MOV A, #55H
LOOP2: MOV P1, A
ACALL DELAY
CPL A
DJNZ R2, LOOP2
SJMP MAIN
DELAY: MOV R7, #0
DELAY1:MOV R6 ,#0
DJNZ R6,$
DJNZ R6,$
DJNZ R6,$
DJNZ R6,$
DJNZ R7,DELAY1
RET
END
;设置闪烁4次 ;2、4、6、8LED灯亮 ;按位取反
实验十二 定时器及中断
思考题
3、将实验十一思考题2的软件延时修改为采用T/C0的硬件延时。采用T/C0中断与/INT0中断方式实现8个LED 循环点亮(左或右)。
外部中断触发后奇数灯闪亮一次,然后继续中断前的程序。
程序清单:
ORG 8000H
LJMP MAIN
ORG 8003H
LJMP INT0SV
ORG 800BH
LJMP TOS
MAIN:MOV SP,#5FH
MOV TMOD,#01H
MOV TH0,#4CH
MOV TL0,#00H
MOV IE,#83H
MOV A,#0FCH
MOV R2,#00H
SETB ET0
SETB TR0
MOV P1,#0FCH
SJMP $
TOS: MOV TH0,#4CH
MOV TL0,#00H
INC R2
CJNE R2,#20,NEXT
RL A
MOV P1,A
MOV R2,#00H
NEXT: RETI
INT0SV:MOV P1,#55H
RETI ;延时1s ; ;启动T/C0 ;设置堆栈栈底 ;计时器方式0 ;设置定时时间50ms ;开中断允许总控位同时开外部中断0和T/C0中断 ;中断返回指令
END
答辩收获:两个中断,T/C0中断与/INT0中断。且/INT0中断优先级较高。
4、将实验1中T/C0定时改为25MS,软件计数应该为多少?修改程序产生1S。 初值=65536-(25000*11.0592)/12=42496=0A600H
ORG 8000H
AJMP MAIN ORG 800BH AJMP T0S
MAIN: MOV SP,#5FH
MOV TMOD,#01H MOV TH0,#A6H MOV TL0,#00H MOV R2,#00H MOV IE,#82H SETB TR0 CLR P1.0 SJMP $
T0S: INC R2
CJNE R2,#40,NEXT CPL P1.0
MOV R2,#00H NEXT: MOV TH0,#A6H MOV TL0,#00H
RETI
END
5、
ORG 8000H
LJMP MAIN ORG 8100H MAIN: MOV SP,#70H
MAIN1:MOV R1,#30H MOV DPTR,#7FF8H ;P2.0=0 LOOP: MOVX @DPTR,A CALL DELAY MOVX A,@DPTR
MOV @R1,A LCALL P1ZH CPL A MOV P1,A MOV A,30H CJNE A,#33H,NEXT NEXT:JC BUZ CLR A CLR C MOV A,30H CJNE A,#0CCH,NEXT1 NEXT1:JNC BUZ LJMP MAIN1 P1ZH: MOV C,ACC.0
MOV 07H,C MOV C,ACC.1 MOV 06H,C
MOV C,ACC.2 MOV 05H,C MOV C,ACC.3 MOV 04H,C MOV C,ACC.4 MOV 03H,C MOV C,ACC.5 MOV 02H,C MOV C,ACC.6 MOV 01H,C MOV C,ACC.7 MOV 00H,C
MOV A,20H RET
DELAY: MOV R6,#0H DELAY1: MOV R5,#0FFH
DJNZ R5,$ DJNZ R6,DELAY1 RET
BUZ:CPL P3.1
ACALL TIME
RET
TIME:MOV R7,#2
TIME1:mov R6,#32
NOP
TIME2:DJNZ R6,$
DJNZ R7,TIME1
SJMP BUZ
END
实验三定时器中断实验一实验目的1掌握51单片机定时器基本知识2掌握定时器的基本编程方法3学会使用定时器中断二实验内容1利用定时器设…
实验三外部中断实验报告班级学号姓名教师一实验目的1掌握单片机外部中断的原理及过程2掌握单片机外部中断程序的设计方法3掌握单片机外部…
报告成绩辅导员签字一实验目的1学习外部中断指令的基本使用方法2学习外部中断处理程序的编程方法二实验内容1在试验一的内容的基础上增加…
单片机实验报告(二)实验名称:定时器及外部中断南京理工大学紫金学院电光系一、实验目的1、学习定时/计数器的应用;2、学习外部中断技…
51单片机外部中断实验实验报告要求1整理本实验涉及的程序将它们按正确的格式详细书写在实验报告纸上1无中断时发光让发光二极管从左到右…
实验八INTn中断实验4课时综合实验实验日期20xx1211学校安徽农业大学经济技术学院星期三节次12实验课时姓名江珊珊学号专业班…
单片机实验报告(二)实验名称:定时器及外部中断南京理工大学紫金学院电光系一、实验目的1、学习定时/计数器的应用;2、学习外部中断技…
实验三外部中断实验报告班级学号姓名教师一实验目的1掌握单片机外部中断的原理及过程2掌握单片机外部中断程序的设计方法3掌握单片机外部…
中断及其优先级实验一实验目的1了解C51单片机中断以及中断优先级概念2掌握利用单片机中断编写相应的单片机程序二实验内容通过AT89…
51单片机外部中断实验实验报告要求1整理本实验涉及的程序将它们按正确的格式详细书写在实验报告纸上1无中断时发光让发光二极管从左到右…
实验二外部中断实验一实验目的1掌握外部中断技术的基本使用方法2掌握中断处理程序的编写方法二实验设备PC机Keil软件Proteus…