单片机中断程序模块应用
#Include<Reg52.H> //单片机的头文件
#Define Uint Unsigned Int //宏定义无符号整型
#Define Uchar Unsigned Char//宏定义无符号字符型
#Include<Reg52.H> //单片机的头文件
#Define Uint Unsigned Int //宏定义无符号整型
#Define Uchar Unsigned Char//宏定义无符号字符型
Char Code B[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,
0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff,
0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};//用十六进制定义单片机P2口八盏灯得工作状态
Uchar Code Temp[]={0x80,0xe3,0x44,0x41,0x23,0x11,0x10,0xc3,0x00,0x01};//用十六经
//用十六进制定义数码管0~9的数字显示
Uchar I;//全局定义
Void Delay(Uint Time) //延时函数
{
Int K,L;
For(K=0;K<=Time;K++)
For(L=0;L<50;L++);
}
Void Main() //主函数
{
Uchar A=0xf0;
EA=1;//CPU总中断位,为0时,禁止所有中断;为1时,允许中断
IT0=1;// 外部中断1触发式选择位,“IT1为外部1触发式选择位”
EX0=1;//外部中断允许中断位,0时禁止中断,1时,允许中断
While(1)//死循环:执行中断前的命令
{
For(I=0;I<16;I++)
{
P2=B[I]; //把定义的前16位的十六进制的灯状态赋给单片机的P2口
Delay(400);//调用延时函数
}
}
}
Void Ext0() Interrupt 0 Using 0 //0触发中断请求
{
Uchar J=1;
While(1) //中断执行:执行中断后命令
{
For(I=17;I<38;I++)
{
P2=B[I];
P1=Temp[J];
Delay(400);
J++;
If(J==8)J=0;
}
}
}
编后感:(本程序仅供参考),中断就像一个函数的调用! |