#include <reg51.h>
sbit WEB1=P1^1;
sbit A=P1^0;
sbit L=P1^3;
sbit LED=P1^2;
void delay();
unsigned char code table[]={
0X3F,0X06,0X5B,0X4F,0X66,
0x6d,0X7D,0X07,0X7F,0X6F,
0X77,0X7C,0X39,0X5E,0X79,
0X71};
unsigned char num;
void main()
{
P0=0X00; //关闭点阵
L=0; //锁存
P0=0XFF; // 关闭LED灯
LED=0; //锁存
WEB1=1; // 位选
P0=0XFE; //共有8个数码管,打开第一个数码管
WEB1=0; //锁存
EA=1; //中断总控制位,EA=1,CPU开放中断
EX0=1; //外中断0中断控制位,EX0=1,允许外部中断0中断
IT0=1; //外部中断控制,IT0时触发方式控制,IT0=0为电平触发,IT0=1为边沿触发
while(1)
{
for(num=0;num<16;num++)
{
A=1; //段选
P0=table[num]; //一个数码管有8个二极管,需要显示的数字
A=0; //锁存
delay();
}
}
}
void delay()
{
int a,b;
for(a=1500;a>=0;a--)
for(b=100;b>=0;b--);
}
void exter0() interrupt 0 //interrupt为中断函数关键字,说明这个函数是中断函数,中断函数不用函数声明
{ //0表示51单片机的5个中断源的第一个,即INT0,外部中断0
LED=1; //外部中断是在外部给予单片机的排针触发,如 电平触发,需要给P3^2一个低电平
P0=0XFE; //则可以用导线一段接GND(地线:低电平)一端接P3^2,即给了一个电平触发中断
}
|