AT89C51单片机外部中断
程序员文章站
2022-06-08 20:02:37
...
C51单片机外部中断调用P3_2 ,P3_3口。
中断方式有两种,分别为电平方式和脉冲方式。
中断请求有0和1。中断总允许为EA=1,
IE0:外部中断请求0标志位;
IT0:外部中断0触发方式设置位,IT0=1下降沿触发,IT0=0低电平触发;
IE1:外部中断请求1标志位;
IT1:外部中断1触发方式设置位,IT1=1下降沿触发,IT1=0低电平触发;
外部中断0中断服务程序的编写:
void 函数名()interrupt 0
{
}
外部中断1中断服务程序的编写:
void 函数名()interrupt 2
{
}
参考实验程序(主程序为P1口输出跑马灯程序),编写中断子程序使得发生外部中断0,且为低电平触发时,LED灯全亮。中断结束后LED继续接上次状态进行跑马灯闪烁。
#include<reg51.h>
#include<intrins.h>
sbit P3_2=P3^2;
void delay(unsigned char i);
void main()
{
unsigned char ii;
P1=0xFE;
P3_2=1;
EA=1;
EX0=1;
IT0=0;
while(1)
{
P1=0xFE;
for(ii=0;ii<8;ii++)
{
P1=_crol_(P1,1);
delay(200);
}
}
}
void delay(unsigned char i) //延时函数,无符号字符型变量i为形式参数
{
unsigned char j,k; //定义无符号字符型变量j和k
for(k=0;k<i;k++) //双重for循环语句实现软件延
for(j=0;j<255;j++);
}
void int_0() interrupt 0
{
P1=0x00;
}
参考实验程序(主程序为P1口输出跑马灯程序),发生外部中断1,且为低电平触发时,LED灯闪烁5次,中断结束后LED继续接上次状态进行跑马灯闪烁。
#include<reg51.h>
#include<intrins.h>
sbit P3_3=P3^3;
void delay(unsigned char i);
void main()
{
unsigned char ii;
P1=0xFE;
P3_2=1;
EA=1;
EX1=1;
IT1=0;
while(1)
{
P1=0xFE;
for(ii=0;ii<8;ii++)
{
P1=_crol_(P1,1);
delay(200);
}
}
}
void delay(unsigned char i) //延时函数,无符号字符型变量i为形式参数
{
unsigned char j,k; //定义无符号字符型变量j和k
for(k=0;k<i;k++) //双重for循环语句实现软件延
for(j=0;j<255;j++);
}
void int_1() interrupt 2
{
unsigned char a;
for(a=0;a<5;a++)
{
P1=0x00;
delay(200);
P1=0xff;
delay(200);
}
}
参考实验程序(主程序为P1口输出跑马灯程序),编写中断子程序使得发生外部中断0,且为低电平触发时,LED灯全亮,中断结束后LED继续接上次状态进行跑马灯闪烁;发生外部中断1,且为低电平触发时,LED灯闪烁5次,中断结束后LED继续接上次状态进行跑马灯闪烁。
#include<reg51.h>
#include<intrins.h>
sbit P3_2=P3^2;
sbit P3_3=P3^3;
void delay(unsigned char i);
void main()
{
unsigned char ii;
P1=0xFE;
P3_2=1;
EA=1;
EX0=1;
IT0=0;
EX1=1;
IT1=0;
while(1)
{
P1=0xFE;
for(ii=0;ii<8;ii++)
{
P1=_crol_(P1,1);
delay(200);
}
}
}
void delay(unsigned char i) //延时函数,无符号字符型变量i为形式参数
{
unsigned char j,k; //定义无符号字符型变量j和k
for(k=0;k<i;k++) //双重for循环语句实现软件延
for(j=0;j<255;j++);
}
void int_0() interrupt 0 //0触发
{
P1=0x00;
}
void int_1() interrupt 2 //1触发
{
unsigned char a;
for(a=0;a<5;a++)
{
P1=0x00;
delay(200);
P1=0xff;
delay(200);
}
}
下一篇: header 函式的使用