动态数码管扫描
数码管段选采取74H138芯片;
数码管动态扫描程序,自右向左一次增加到F;
#include<reg51.h>
#define nu P0
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
int ch[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(int i)
{
while(i--);
}
void shuma()//数码管选择
{
int i;
for(i=0;i<16;i++)
{
nu=ch[i];
delay(30000);
}
i=0;
}
int main()
{
int a=0;
LSA=0;
LSB=0;
LSC=0;
while(1)
{
for(a=0;a<8;a++)
{
if(a==0)//74H138选择
{
LSA=0;
LSB=0;
LSC=0;
shuma();
}
else if(a==1)
{
LSA=1;
LSB=0;
LSC=0;
shuma();
}
else if(a==2)
{
LSA=0;
LSB=1;
LSC=0;
shuma();
}
else if(a==3)
{
LSA=1;
LSB=1;
LSC=0;
shuma();
}
else if(a==4)
{
LSA=0;
LSB=0;
LSC=1;
shuma();
}
else if(a==5)
{
LSA=1;
LSB=0;
LSC=1;
shuma();
}
else if(a==6)
{
LSA=0;
LSB=1;
LSC=1;
shuma();
}
else if(a==7)
{
LSA=1;
LSB=1;
LSC=1;
shuma();
}
}
a=0;
}
}
中断
定义:CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生);
CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);
CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断 。
1.引起CPU中断的根源,称为中断源


中断使能寄存器的位分配(可位寻址)--IE

中断寄存器IE的位0~5能控制6个中断使能,第6位没有用到,第7位是中断总开关

开启中断的条件:
1.中断源有中断请求;
2.此中断源的中断允许位为1;
3.CPU开中断(即EA=1);
网友评论