单片机外部中断实验,2024年最新物联网嵌入式开发中级工程师面试题

38 阅读3分钟

2、原理


(1)P3口是位准双向口,具有双重功能:第一功能和P1口一样,作为输入输出口,也有字节操作和位操作两种方式,每一位可定义为输入输出;第二功能可以作为外部中断输入线。

(2)外部中断的产生的条件:中断允许寄存器IE:图片

外部中断源允许中断(中断0:EX0=1,中断1:EX1=1);CPU开中断(EA=1);外部中断方式CPU发出中断申请。

(3)外部中断方式选择:控制TCON:

ITO是选择文字则外部中断0请求(INTO)边沿触发方式或电平触发方式的控制位。前一方式IT0=1,后一方式ITO=0

IT1是选择外部中断1请求(INT1) 为边沿触发方式或电平触发方式的控制位。前一方式IT1=1,后一方式IT1=0,本实验采用了电平触发方式。

(4)通过特殊功能位sbit对两个开关进行位定义,为后续程序做准备。(sbit是指8051片内特殊功能寄存器的可寻地址位)

3、硬件和软件设备


(1)Protues软件中器件:AT89C51芯片、开关、电阻、电容、晶振、发光二极管、直流电源、开关。

(2)Keil软件中外部中断相关程序设计。

4、步骤


(1)先画一个程序框图,有一个大体思路。

(2)对硬件进行设计:选元件、接线、调试等一系列内容。

(3)对软件进行编程:为了实现实验目标,先在程序中写出相关头文件,本实验用到了字符循环左移,所以用到了#include <intrins.h>;然后定义变量,实验用到了开关,对开关进行了位定义;因为要在外部中断0处接一个按钮,作开始按钮,按下后8个LED灯依次闪烁(在中断服务程序中实验),设计一个停止按钮,按下后灯停止闪烁;在主函数中用到了if语句实现了对按钮的控制,让八个灯依次闪烁,用中断函数得到了实现。然后编译调试生成.hex文件,程序设计:

#author:hewang

#qq:207962168

#include<reg52.h>

#include<intrins.h>

#define uchar unsigned char

#define uint unsigned int

sbit k1=P3^2;

sbit k2=P3^3;

char i=100;

void main() //主函数

{

if (k1==0)

{

TMOD=0x01;

TH0=0Xee;

TL0=0x00;

P1=0xfe;

EA=1;

ET0=1;

IT0=0;

TR0=1;

while(1)

{

;

}

}

else {P1=0Xff;}

}

void time0() interrupt 1 //T0的中断函数

{

TH0=0xee; //重新赋初值

TL0=0x00;

i--;

if(i<=0)

{

P1=crol(P1,1) ; //左移1位

i=100; //重置循环次数

}

else if(k2==0)

{

P1=0xff;

}

img img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取