求一个单片机外部中断程序,要求用按键模拟单片机外部中断输入源,当按键按下时产生中断,进行中断处理

求一个单片机外部中断程序,要求用按键模拟单片机外部中断输入源,当按键按下时产生中断,进行中断处理,第1张

1、打开Keil μVision编译器,新建一个工程,然后保存在硬盘上的位置,然后选择Atmel-AT89C51单片机为模型,并添加STARTUPA51文件,然后在当前目录下新建一个C文件,并将其添加入工作路径。

2、首先要导入51单片机的头文件,否则后续使用的端口都会出现未定义的情况,然后在主函数中,使得EA=1,即总中断允许,打开中断的总开关。

3、然后分别打开外部中断0和外部中断1的分开关,即EX0=1和EX1=1。

4、编写完主函数后,我们要为两个中断分别编写对应的中断服务函数,才能在中断发生后产生相应的响应,注意外部中断0和外部中断1的中断号分别是0和2。

5、然后到Project菜单中的output项目中勾选Create Hex  File,OK后点击编译按钮,如果没有错误,即可生成可以烧录或者仿真的hex文件。

6、最后把生成出的hex烧入进51单片机进行运行或者装载入Proteus仿真系统进行仿真。

取反指令要放在主程序中,而移位指令则可放在中断服务程序中

中断没有初始化

下面程序我已试过,可实现按钮按下时,流水灯,松开时,闪烁。

#include<reg51h>

#include<intrinsh>

void delay()

{

unsigned char i,j;

for(i=0;i<255;i++)

for(j=0;j<255;j++);

}

void init_tx()

{

EA=1;

EX0=1;

IT0=1;

IP=0x00;

}

void main()

{

init_tx();

P1=0xfe;

while(1)

{

// P1=_crol_(P1,1);

P1=~P1;

delay();

}

}

void tx0() interrupt 0

{

unsigned char i;

/// P1=0x00;

delay();

for(i=0;i<15;i++)

{

// P1=~P1;

P1=_crol_(P1,1);

delay();

}

}

外部中断的执行过程中,只要作为定时器中断可以进入定时中断子程序时,定时器可以计算,可以设置中断优先级。这项计划似乎并没有反映的中断优先级。如果定时器中断的优先级比外部中断,这样就可以了,否则不是。

下面是一个简单的例子:执行中断就像是一个老师,没有设置中断优先级(默认设置),如果两个班的学生,老师讲课过程中,根据秩序的一个条款。但是,如果你设置中断优先级,则优先将优先处理正在处理中,讲座(低优先级任务)时,突然敲门找老师(主要优先事项),因此,校长,老师会停止教给学生,校长处理事情,等处理完,然后再回来继续教给学生。

首先,写的主要功能:

IT1 = 1 ;/ /下降沿触发

EA = 1 ;/ /总中断

EX = 1 ;/ /打开INT中断

然后写出来的主程序,中断服务功能

无效INT1()写你想要的功能实现

}中断2

{

当您按下P33后无效INT1(运行)中断程序

希望你能帮助。

以上就是关于求一个单片机外部中断程序,要求用按键模拟单片机外部中断输入源,当按键按下时产生中断,进行中断处理全部的内容,包括:求一个单片机外部中断程序,要求用按键模拟单片机外部中断输入源,当按键按下时产生中断,进行中断处理、单片机单个外部中断实验,P1接8个LED发光二级管、QTH-2008XS单片机外部中断应用实验等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9274711.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存