单片机实验四报告外中断实验.docx
《单片机实验四报告外中断实验.docx》由会员分享,可在线阅读,更多相关《单片机实验四报告外中断实验.docx(12页珍藏版)》请在冰点文库上搜索。
单片机实验四报告外中断实验
南昌大学实验报告
实验类型:
?
验证?
综合■设计?
创新实验日期:
2018.05.29实验成绩:
实验四外中断实验
(一)实验目的
1.掌握单片机外部中断原理;
2.掌握数码管动态显示原理。
(二)设计要求
1.使用外部中断0和外部中断1;
2.在动态数码管上显示中断0次数,中断1用作次数清0,数码管采用74HC595驱动。
(三)实验原理
1中断
所谓中断是指程序执行过程中,允许外部或内部时间通过硬件打断程序的执行,使其转向为处理外部或内部事件的中断服务程序中去,完成中断服务程序后,CPU返回继续执行被打断的程序
如下图所示,一个完整的中断过程包括四个步骤:
中断请求、中断响应、中断服务与中断返回。
当中断请求源发出中断请求时,如果中断请求被允许的话,单片机暂时中止当前正在执行的主程序,转到中断处理程序处理中断服务请求。
中断服务请求处理完后,再回到原来被中止的程序之处(断电),继续执行被中断的主程序。
如果单片机没有终端系统,单片机的大量时间可能会浪费在是否有服务请求发生的查询操作上,即不论是否有服务请求发生,都必须去查询。
因此,采用中断技术大大地提高了单片机的工作效率和实时性。
2.IAP15W4K58S4单片机的中断请求
IAP15W4K58S4单片机的中断系统有21个中断请求源,2个优先级,可实现二级中断服务嵌套。
由IE、IE2、INT_CLKO等特殊功能寄存器控制CPU是否相应中断请求;由中断优先级高存器IP、
IP2安排各中断源的优先级;同优先级内2个以中断同时提出中断请求时,由内部的查询逻辑确定其响应次序。
中断请求源中的外部中断0(INTO)和外部中断1(INT1)详述如下:
(1)外部中断O(INTO):
中断请求信号由P3.2引脚输入。
通过IT0来设置中断请求的触发方式。
当IT0为“1”时,外部中断0为下降沿触发;当IT0为“0”时,无论是上升沿还是下降沿,都会引发外部中断0。
一旦输入信号有效,则置位IE0标志,向CPU申请中断。
(2)外部中断1(INT1):
中断请求信号由P3.3引脚输入。
通过IT1来设置中断请求的触发方式。
当IT1为“1”时,外部中断1为下降沿触发;当IT1为“0”时,无论是上升沿还是下降沿,都会引发外部中断1。
一旦输入信号有效,则置位E1标志,向CPU申请中断。
中断源是否有中断请求,是由中断请求标志来表示的。
在IAP15W4K58S4单片机中,外部中断
0、外部中断1等请求源的中断请求标志分别由特殊功能寄存器TCON和SCON控制,格式如下:
(1)TCON寄存器中的中断请求标志。
TCON为定时器T0与T1的控制寄存器,同时也锁存T0和T1的溢出中断请求标志及外部中断0和外部中断1的中断请求标志等。
格式如下图所示:
D7D6D5D4D3D2D1D0
TCON
TF1
TR1
TF0
TR0
IR1
IT1
IE0
IT0
位地址
8FH
——
8DH
——
8BH
8AH
89H
88H
与中断有关的各标志位功能如下:
1TF1:
T1的溢出中断请求标志。
T1被启动计数后,从初值做加1计数,计满溢出后由硬件置位TFI,同时向CPU发出中断请求,此标志一直保持到CPU响应中断后才由硬件自动清0。
也可由软件查询该标志,并由软件清0。
2TF0:
T0的溢出中断请求标志。
T0被启动计数后,从初值做加1计数,计满溢出后由硬件
置位TF0,同时向CPU发出中断请求,此标志一直保持到CPU响应中断后才由硬件自动清0。
也可由软件查询该标志,并由软件清0。
3IE1:
外部中断1的中断请求标志。
当INT1(P3.3)引脚的输入信号满足中断触发要求时,置
位IE1,外部中断1向CPU申请中断。
中断响应后中断请求标志自动清0。
4IT1:
外部中断1(INT1)中断触发方式控制位。
当(IT1)=1时,外部中断1为下降沿触发方式。
在这种方式下,若CPU检测到INT1出现下降沿信号,则认为有中断申请,随即使IE1标志
置位。
中断响应后中断请求标志会自动清0,无须做其他处理。
当(T1)=0时,外部中断1为上升沿触发和下降沿触发触发方式。
在这种方式下,无论CPU检测到INT1引脚出现下降
沿信号还是上升沿信号,都认为有中断申请,随即使IE1标志置位。
中断响应后中断请求标
志会自动清0,无须做其他处理。
5IE0:
外部中断0的中断请求标志。
当INT0(P3.2)引脚的输入信号满足中断触发要求时,置位IE0,外部中断0向CPU申请中断。
中断响应后中断请求标志自动清0。
6IT0:
外部中断0的中断触发方式控制位。
当(IT0)=1时,外部中断1为下降沿触发方式。
在
这种方式下,若CPU检测到INT0(P3.2)出现下降沿信号,则认为有中断申请,随即使IE0
标志置位。
中断响应后中断请求标志会自动清0,无须做其他处理。
当(IT0)=0时,外部中
断0为上升沿触发和下降沿触发触发方式。
在这种方式下,无论CPU检测到INT0(P3.2)引
脚出现下降沿信号还是上升沿信号,都认为有中断申请,随即使IE0标志置位。
中断响应后
中断请求标志会自动清0,无须做其他处理。
(2)SCON寄存器中的中断请求标志。
SCON是串行口控制寄存器,其低2位TI和RI锁存串行口1的发送中断请求标志和接收中断请求标志格式如下:
TCON
TI
RI
位地址
99H
98H
D7D6D5D4D3D2D1D0
98H
中断请求标志和接收中断请求标志的功能如下:
1TI:
串行口1发送中断请求标志。
CPU将数据写入发送缓冲器SBUF时,就启动发送,每发送完一个串行帧,硬件将使TI置位。
但CPU响应中断时并不清除TI,必须由软件清除。
2RI:
串行口1接收中断请求标志。
在串行口1允许接收时,每接收完一个串行帧,硬件将使RI置位。
同样,CPU在响应中断时不会清除RI,必须由软件清除。
中断请求源中的外部中断0(INT0)和外部中断1(INT1)等都是可屏蔽中断,由片内的中断允许寄存器IE控制,,可对中断的开放和关闭实现两级控制。
所谓两级控制,就是有一个总的开关中断控制位EA(IE.7位),当EA=0时,所有的中断请求被屏蔽,CPU对任何中断请求都不接受,因此称EA为系统中断允许总开关控制位;当EA=1时,CPU开放中断,但5个中断源的中断请求是否允许,还要由其对应的中断请求允许控制位状态决定。
格式如下:
D7D6D5D4D3D2D1D0
IE
EA
——
ET2
ES
ET1
EX1
ET0
EX0
位地址
AFH
——
ADH
ACH
ABH
AAH
A9H
A8H
其中EX1是外部中断1中断允许位,EX仁0,禁止外部中断1中断;EX1=1,允许外部中断1中断。
EX0是外部中断0中断允许位,EX0=0,禁止外部中断0中断;EX0=1,允许外部中断0中断。
另外,单片机中的中断请求源还具有两个中断优先级,存放在特殊功能寄存器IP中,只要利用
程序改变其内容就可以对各个中断源的中断优先级进行控制,其格式如下:
IP
——
——
PT2
PS
PT1
PX1
PT0
PX0
位地址
——
——
BDH
BCH
BBH
BAH
B9H
B8H
D7D6D5D4D3D2D1D0
B8H
其中PX1是外部中断1的中断优先级控制位,PX仁1,外部中断1为高优先级;PX仁0,外部中断1为低优先级。
PX0是外部中断0的中断优先级控制位,PX0=1,外部中断0为高优先级;PX0=1,外部中断0为低优先级。
根据上述原理分析,单片机要相应中断请求,首先要使IE寄存器中的中断总允许位EA=1,再
使外部中断0和1所对应的中断请求标志为1和中断允许位为1即可。
本实验要求对中断0计数再利用中断1清0,只需要在中断0的中断服务子程序加上一个计数器,在中断1的中断服务子程序对该
计数器清0,最后利用数码管显示该计数器的值便可实现。
(四)实验设备
硬件:
PC机、USB数据传输线、STC单片机综合实验箱
软件:
兼容51单片机的Keiluvision5集成开发环境、STC-ISP单片机烧录软件
(五)实验结果
实验源代码如(七)所示。
对代码进行编译,提示0错误0警告,生成hex文件。
Rebuildtarget1'
linking*…
tiexIntel
■«\Objcta.Inttrrupt_Gount"-UErr?
r(s)rCWarning(3)-
3E丄由亡已;0?
:
GO:
0J.
将单片机试验箱和电脑通过USB数据线连接,打开STC-ISP检测串口
串□号I'SU-SELLALCM340CCQM3)-扫插
最牴慕特翠2400〜
最高〕鮒率1L5200-
点击点开程序文件,选择刚才生成的hex文件,点击下载程序,烧录成功
vlOd
Interruptcounthem
」丄兀£工口才曰71.口目丨J.1RI
看I]狗定时器分频系数256
0空闲伏态时停止着门醐计粒
按作贰功'(2018-0^-0?
234236)
(六)结果讨论与心得体会
结果分析讨论:
将程序烧录至单片机后,可观察到数码管的高三位显示000,其他位消隐。
按下SW17(外部中断0),数码管对此计数,当按下SW18(外部中断1),数码管显示000,即定时器清零,与预期效果一致,完成实验。
心得体会:
通过本次实验,我掌握了外部中断的原理,学会了利用按键来产生中断,还了解了如何使用数码管显示,希望通过自己多次尝试能在今后实验中熟练使用外部中断并将其运用到其他方面。
(七)附录:
实验源代码
P5
DATA
0C8H
P4M1
DATA
0xB3
P4M0
DATA
0xB4
P5M1
DATA
0xC9
P5M0
DATA
0xCA
;****************************************************
P_HC595_SERBITP4.0
P_HC595_RCLKBITP5.4
P_HC595_SRCLKBITP4.3
.****************************************************
LED8
DATA
30H
display」ndex
DATA
38H
INT0_cnt
DATA
39H
;******************************************************/
ORG
0000H
LJMP
F_Main
ORG
0003H
LJMP
F_INT0_Interrupt
ORG
0013H
LJMP
F_INT1_Interrupt
;******************************************************/
ORG
0100H
F_Main:
CLR
A
MOV
P4M1,
A
MOV
P4M0,
A
MOV
P5M1,
A
MOV
P5M0,
A
MOV
display_index.
#0
MOV
R0,
#LED8
MOV
R2,
#8
CLR
IE1
CLR
IE0
SETB
EX1
SETB
EX0
SETB
IT0
SETB
IT1
SETB
EA
MOV
INT0_cnt,
#0
L_MainLoop:
LCALL
F_delay_ms
LCALL
F_DisplayScan
LJMP
L_MainLoop
F_delay_ms:
MOV
R2,
#20
D1:
MOV
R3,
#20
D2:
DJNZ
R3,
D2
DJNZ
R2,
D1
RET
T_Display:
DB
03FH,006H,05BH,04FH,066H,06DH,07DH,007H,07FH,06FH,077H,07CH,039H,05EH,079H,071H;
DB000H
T_COM:
DB020H,040H,080H;
F_Send_595:
PUSH
02H
MOV
R2,#8
L_Send_595_
丄oop:
RLC
A
MOV
P_HC595_SER,C
SETB
P_HC595_SRCLK
CLR
P_HC595_SRCLK
DJNZ
R2,L_Send_595_Loop
POP
02H
RET
F_DisplayScan:
PUSH
DPH
J
PUSH
DPL
J
PUSH
00H
J
MOV
A,
INT0_cnt;
MOV
B,
#100;
DIV
AB
MOV
LED8+0,
A;
MOV
A,
#10;
XCH
A,
B;
DIV
AB
J
MOV
LED8+1,
A;
MOV
LED8+2,
B;
MOV
DPTR,
#T_COM;
MOV
A,
display_index;
MOVC
A,
@A+DPTR;
CPL
A;
LCALL
F_Send_595;
MOV
DPTR,#T_Display;
MOV
A,display_index;
ADD
A,#LED8;
MOV
R0,A;
MOV
A,@R0;
MOVC
A,@A+DPTR;
LCALL
F_Send_595;
CLR
P_HC595_RCLK;
SETB
P_HC595_RCLK;
INC
display_index;
MOV
A,display_index;
CJNE
A,#3,L_QuitDisplayScan;
MOV
display_index,#0;
L_QuitDisplayScan:
POP
00H;
POP
DPL;
POP
DPH;
RET
F」NTO_Interrupt:
INC
INT0_cnt;
RETI
F_INT1_Interrupt:
MOV
INT0_cnt,#00H;
RETI
END