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

2025-10-22 17:48:44

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

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

#include "intrins.h"

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

3、#define uint unsigned int

#define uchar unsigned char

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

4、uchar led,n,i,s,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,0x03,0x04};//数码管扫描

uchar str[4];//显示两位数码管

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

5、/******************************************************************/

/*                    延时函数声明                                */

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

/*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++)

  {;}

  }  

}

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

6、/******************************************************************/

/*                   主函数 1                                      */

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

void main()

{

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

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

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

TH1=0x38;//设置初值

TL1=0x38;

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

TR1=1;//启动定时器

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

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

7、while(1)

{

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

{

P1=0xff;

P2=sm[i];

P0=smg[str[i]];

mdelay(5);

}

}

}

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

8、void int1() interrupt 2

{

  uchar c; 

led=0xfe;

  P2=0x00;

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

{

P1=led;

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

mdelay(1000);

}

}

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

9、void time1() interrupt 3

{

count++;

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

  {

count=0;

str[2]=n/10;

str[3]=n%10;

n++;

if(n==100)//0-100

{

 n=0;

str[0]=s/10;

str[1]=s%10;

s++;

if(s==60)//0-60

s=0;

    }

  }

}

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

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢