89C52单片机中断与 I/O 控制
程序员文章站
2024-02-21 20:44:16
...
这个实验的内容是:通过外部中断控制8个LED灯顺序点亮(像流水灯),采用多个源文件和多个头文件编写C语言程序(即一个源文件对应一个头文件),并在proteus中在仿真。
关于多个源文件和多个头文件的编写规则请参考这篇博客:关于多个.c和.h文件时的相互调用
proteus图如下:
具体实现方式请看下面的程序:
#include"main.h"
void main(){
int1_init(); //初始化外部中断
while(1); //等待外部中断
}
#ifndef __MAIN_H__
#define __MAIN_H__
#include"int1_init.h"
#include"reg52.h"
#endif
#include"int1_init.h"
void int1_init(){
IT1=1;//以下降沿为触发信号
EX1=1;//外部中断控制位
EA=1;//中断总控制位
}
#ifndef __INT1_INIT_H__
#define __INT1_INIT_H__
#include"reg52.h"
void int1_init(void);
#endif
#include"int1_isr.h"
int i=0;
//当按下按键时,进入中断函数执行指令
void int1_isr() interrupt 2{
if(i<8){
P0=~(0x01<<i); //把0x01向左移一位,再按位取反
i++;
}
//当i=8时,又点亮第一个LED灯
else{
i=1;
P0=~(0x01);
}
}
#ifndef __INT1_ISR_H__
#define __INT1_ISR_H__
#include"reg52.h"
#endif
上一篇: Windows下IDEA远程调试Spark Streaming
下一篇: Spark应用远程调试