编写程序学习外部中断的电平触发方式。无中断时发光让发光二极管从左到右依次点亮,有外部中断请求时,4位数码管从0000开始加1显示(加到9999后复位为0000),同时蜂鸣器报警。
程序:
#include<reg51.h>
#define uchar unsigned char;
sbit key=P3^3;
uchar i,j;
uchar led[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
uchar tube[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
sbit fm=P3^1;
void delay1s(unsigned char time)
{
unsigned int i,j,k;
for(i=0;i<time;i++)
for(j=0;j<1000;j++)
for(k=0;k<144;k++);
}
int main(void)
{
IT1=1;
EA=1;
EX1=1;
while(1)
{
for(i=0;i<8;i++)
{
P0=led[i];
delay1s(1);
}
}
}
void int1(void) interrupt 2
{
while(!key);
for(i=0;i<10;i++)
{
P1=0xf0;
P2=tube[i];
delay1s(1);
fm=0;
}
}
视频:
https://www.bilibili.com/video/BV1xV411873i/