今天看了关于单片机中断的视频教程,照猫画虎,写了个
80C51的,
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6; //段选
sbit wela=P2^7; //位选
uchar num;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,ox6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71}; //显示数码管的字符
sbit d1=P1^0;
void main()
{
EA=1; //开总中断 就好象出去要开大门一样
EX0=1; //开外部中断0
IT0=1; //开边沿触发(开中断只会中断一次 ) 然后继续执行后面的语句
wela=1; //位选设为1
P0=0xea; //设置哪几个数码管亮 11101010
wela=0; // 锁存P0=0xea
while(1)
{
dula=1;
P0=table[num];
dual=0;
delay(100);
}
}
void delay(uint z) //延时程序
{
uint x,y;
for(x=z;x>0;x--)
for(y=100;y>0;y--);
}
void exter0() interrupt 0 //中断程序 interrupt后面的数字为顺序号
{
d1=0;
}
关于顺序:
外部中断0为0
定时器/计数器0为1
外部中断1为2
定时器/计数器为3
串口为4