您的位置首页生活百科

外部中断定时器c语言程序详解(1)

外部中断定时器c语言程序详解(1)

的有关信息介绍如下:

外部中断定时器c语言程序详解(1)

使用外部中断定时器c语言程序详解

利用外部中断0,定时器0从数码管到流水灯显示

#include "reg52.h"//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

#include "intrins.h"

#define uint unsigned int

#define uchar unsigned char

uchar led,n,i,count=0;

uchar smg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f

,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0-F

uchar sm[]={0x00,0x01};//数码管扫描

uchar str;//显示两位数码管

/******************************************************************/

/* 延时函数声明 */

/******************************************************************/

/*void mdelay(uint t)

{

uchar n;

for(;t>0;t--)

for(n=0;n<125;n++)

{;}

}*/

/*大约一毫秒的延时函数*/

void mdelay(uint t)

{

uchar n;

while(t--)

{

for(n=0;n<123;n++)

{;}

}

}

void main()

{

EA=1;//开总中断开关

EX0=1;//打开外部中断0

INT0=1;//触发方式为下降沿触发

TH0=0x3c;//设置初值

TL0=0xb0;

ET0=1;//打开定时器中断

TR0=1;//启动定时器

TMOD=0x01;//设置定时器0为工作方式1

while(1)

{

for(i=0;i<2;i++)//数码管显示数据

{

P1=0xff;

P2=sm[i];

P0=smg[str[i]];

mdelay(5);

}

}

}

void int0() interrupt 0

{

uchar c;

led=0xfe;

P2=0x00;

for(c=0;c<8;c++)//流水灯循环一次

{

P1=led;

led=_crol_(led,1);//左移函数

mdelay(1000);

}

}

void time0() interrupt 1

{

TH0=0x3c;

TL0=0xb0;

count++;

if(count==20)//延时一秒0-60显示

{

count=0;

str=n/10;

str=n%10;

n++;

if(n==60)

{

n=0;

}

}

}

本经验只供参考,如有不足,还请见谅,如果有什么疑问请在下边留言,及时给你解答。。。