单片机程序实验报告
实验四 外部中断实验
一、实验目的
1.学习8051单片机的中端原理及编程方法;
2.掌握中断处理程序的编程方法和调试方法。
二、实验原理
MCS-51中断系统有5个中断请求源:
① /INT0----外部中断0请求,低电平有效。通过P3.2引脚输入。
② /INT1 ----外部中断1请求,低电平有效。通过P3.3引脚输入。
③ T0 ----定时器/计数器0溢出中断请求。
④ T1 ----定时器/计数器1溢出中断请求。
⑤ TX/RX ----串行口中断请求。当串行口完成一帧数据的发送或接收时,便请求中断。
与外部中断相关的特殊功能寄存器有TCON、IE和IP。应根据INT0、INT1管脚的信号特征设定中断的触发方式(边缘/电平触发)。
部分标志位解读:
TF1----定时器/计数器T1的溢出中断请求标志位。当启动T1计数以后,T1从初值开始计数,计数器产生溢出时,由硬件使TF1置1,并向CPU发出中断请求。当CPU响应中断时,硬件将自动对TF1清0。
IE1----外部中断1的中断请求标志。当检测到INT1引脚上存在有效的中断请求信号时,由硬件使IE1置1。当CPU响应该中断请求时,由硬件使IE1清0。
TI----串行口发送中断请求标志。CPU将一个数据写入发送缓冲器SBUF时, 就启动发送。每发送完一帧串行数据后,硬件置位TI。但CPU响应中断时,并不清除T1, 必须在中断服务程序中由软件对TI清0
RI----串行口接收中断请求标志。在串行口允许接收时,每接收完一个串行帧, 硬件置位。CPU响应中断时不会清除RI, 必须用软件对其清0。
三、实验电路图及参数对照表
中断允许寄存器IE:
中断优先级寄存器IP:
中断入口地址表:
实验连接:
四、实验设备
微型计算机、单片机仿真器、实验仪、示波器(各一台)
实验连线:若干
五、实验内容
P1口作为输出口,连接8位发光二极管。按键1与按键2节单片机的两个外部中断管脚。按一次按键1,发光二极管循环左移显示;按一次按键2,发光二极管循环右移显示。移位的状态间隔时间为0.5秒,要求用外部中断处理按键事件。
程序流程:
未接受中断时(初始时刻)标记为2,(输出FC)仅仅使得最后两盏灯亮,接收中断,判断是0中断还是1中断,0中断则标记为,0,左移一位输出,1中断则标记为1,右移一位输出。之后调用延时子程序,最后回到大循环,继续下一次的判断。
由于没有工具绘制成程序流程图,仅以语言描述恐有遗漏,有不详近的地方请见谅。
汇编语言程序代码:
ORG 0000H
AJMP START
ORG 0003H
AJMP EXINT1
ORG 0013H
AJMP EXINT2
ORG 0030H
START:
MOV SP,#60H ;设置堆栈
SETB IT0 ;分别开启T0和T1的中断
CLR IE0
SETB EX0
SETB IT1
CLR IE1
SETB EX1
SETB EA
MOV R1,#02H ;设置操作标志
LOOP:
MOV R0,A
MOV A,R1
SUBB A,#00H ;判断是否是00H
JZ TTRL
SUBB A,#01H ;判断是否是01H
JZ TTRR
MOV A,#0FCH
MOV P1,A
AJMP LOOP
TTRL:
MOV A,R0 ;左移的操作
RL A
MOV P1,A
ACALL DELAY
AJMP LOOP
TTRR:
MOV A,R0 ;右移的操作
RR A
MOV P1,A
ACALL DELAY
AJMP LOOP ;未接到中断的时候循环等待
EXINT1:
MOV R1,#00H
RETI
EXINT2:
MOV R1,#01H
RETI
DELAY:
MOV R7,#5
DELAY1:
MOV R6,#200
DELAY2:
MOV R5,#250
DJNZ R5,$
DJNZ R6,DELAY2
DJNZ R7,DELAY1
RET
END
C语言源程序代码:
#include<reg51.h>
extern unsigned char Num,flag=0x02;
void delay()
{
unsigned int i;
for(i=0;i<0xffff;i++)
{
;
}
}
void exint0(void) interrupt 0 using 1
{
flag=0x00;
}
void exint1(void) interrupt 2 using 1
{
flag=0x01;
}
void main()
{
Num=0xfc; //分别开启T0和T1的中断
IT0=1;
IE0=0;
EX0=1;
IT1=1;
IE1=0;
EX1=1;
EA=1;
while(1)
{
if(flag==0x00)
{
Num=(Num>>7)+(Num<<1);
P1=Num;
delay();
delay();
}
if(flag==0x01)
{
Num=(Num<<7)+(Num>>1);
P1=Num;
delay();
delay();
}
else
{
P1=Num;
}
}
}
六、实验小结
在本实验中,我深入了解了中断的工作原理,及其作用,中断对于单片机的实时控制,软/硬件错误检查等有着重大的意义,是程序的重要功能之一,影响着程序工作方式,同时也可作为初级的人机交互的基础。为以后的复杂程序编程打下了坚实的基础。
另外程序若有什么不对的地方,也请老师批评指正。我即刻修改。
3.20
姓名: 学号: 日期:
实验三 单片机外部中断的使用
一、实验名称:单片机外部中断的使用
二、实验目的
1.掌握在Keil环境下建立项目、添加、保存源文件文件、编译源程序的方法;
2.掌握运行、步进、步越、运行到光标处等几种调试程序的方法;
3.掌握在Proteus环境下建立文件原理图的方法;
4.实现Proteus与Keil联调软件仿真。
三、使用仪器设备编号、部件及备件
1.实验室电脑;
2.单片机实验箱。
四、实验过程及数据、现象记录
1.在Proteus环境下建立如下仿真原理图,并保存为文件;
原理图中常用库元件的名称:
无极性电容:CAP 极性电容:CAP-ELEC 单片机:AT89C51
晶体振荡器:CRYSTAL 电阻:RES 按键:BUTTON
发光二极管:红色LED-RED 绿色LED-GREEN 蓝色LED-BLUE 黄色LED-YELLOW
2.在Keil环境下建立源程序并保存为.ASM文件,生成.HEX文件;
参考程序如下:
ORG 0000H
LJMP MAIN
ORG H ;外部中断0程序入口地址
LJMP EXINT0
ORG 0030H
MAIN: MOV SP,#60H ;堆栈指针初始化
SETB ;设置外部中断0为边沿触发,若改为电平触发用什么指令?
SETB ;开外部中断0
SETB ;开CPU总中断
MOV A,#01H
LOOP: MOV P1,A
RL A
CALL DELAY
SJMP LOOP
DELAY: MOV R1,# ;延时250ms子程序
DL1: MOV R2,#
DL2: MOV R3,#
DJNZ R3,$
DJNZ R2,DL2
DJNZ R1,DL1
;延时子程序返回
EXINT0: PUSH
PUSH
CLR RS1 ;这条指令起什么作用?
SETB RS0 ;这条指令起什么作用?
MOV R0,#
LP: MOV P1,#0FFH
CALL DELAY
MOV P1,#00H
CALL DELAY
DJNZ R0,LP
POP PSW
POP ACC
;中断返回
END
将以上程序补充完整,流水时间间隔,闪烁时间间隔为250ms。
3.将.HEX文件导入仿真图,运行并观察结果;
4.利用Keil软件将程序下载至实验箱,进行硬件仿真,观察实验结果。
五、实验数据分析、误差分析、现象分析
现象:利用单片机外部中断0,使用边沿触发方式,当P3.2所接按键按下时,流水灯停止流水,闪烁两次,按键抬起时,恢复原来的流水状态。
六、回答思考题
1.若把边沿触发改为电平触发,有何不同?
2.如何让流水灯保持原来的状态继续流水?
实验三定时器中断实验一实验目的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…