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单片机外部中断应用实验等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)