/* 此程序为中断试验程序,主程序是数码管静态显示0~F。
进入中断后d1(P1^0)为低电平,两秒后变为高电平。
中断过程建议使用LED发光二极管实验效果较好
整理 杨浩浩
*/
/*程序实验现象:主程序运行时数码管动态显示,当P3^4
(中断标志位,就像你的手机),在该程序中,中断方式
为低电平触发,提供低电平的事d2也就是(P1^1),当把
P1^1与P3^4链接在一起时,就相当于给P3^4给了一个低电平
(此时就像你的手机响了,你要去接电话),触发中断,主程序停止运行
开始执行中断程序(也就是这个函数内的程序void exter0() interrupt 0)
即就是,d1(P1^0)为低电平2秒,为了验证这个这个两秒的过程,
我们把P1^0口接上一个发光二极管(要求该发光二极管,为共阳链接,此时单片机输出2秒的低电平
与发光二极管的阴极链接,才会发光2秒)发光两秒,更好地展现实验效果
*/
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit d1=P1^0;
sbit d2=P1^1;
char code table[]={
0x3F, 0x06, 0x5B, 0x4F,
0x66, 0x6D, 0x7D, 0x07,
0x7F, 0x6F, 0x77, 0x7C,
0x39, 0x5E, 0x79, 0x71};
char num;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
IT0=0; //低电平触发
EA=1; //开总中断
EX0=1; //打开中断0,允许
d2=0;
while(1)
{
for(num=0;num<16;num++)
{
P0=table[num];
delay(2000);
}
}
}
void exter0() interrupt 0
{
d1=0;
delay(2000);
d1=1;
}
|