⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 定时器计数器.c

📁 使用单片机的定时器定时功能
💻 C
字号:
//完成的任务为:采用计数器0计数,当它达到250时产生中断,从新从新从0继续开始;
//而当外部中断0发生中断的时候,他也是从新从0开始计数

#include<reg51.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
#define COM8255 XBYTE[0x7fff]
#define PA8255 XBYTE[0x7ffc]
#define PB8255 XBYTE[0x7ffd]

uint idata dis_buf[4];    /*这里在间接寻址片内数据存储区中预留了一个数组的空间*/
uint code table[18]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xcf,0xff};


void delay(uint N)// 函数功能:延时子程序,实现(16*N+24)us的延时 
{					// 系统采用11.0592MHz的时钟时,延时满足要求,其它情况需要改动
	uint i;
	for(i=0;i<N;i++)
	;
}

void jisuan()
{
uint n;
n=TL0;
n=n-6;                   //想一想为什么这里要减6?
dis_buf[0]=n%10;          //求个位上的数字
dis_buf[1]=n/10%10;       //求十位上的数字
dis_buf[2]=n/100%10;      //求百位上的数字
dis_buf[3]=n/1000;       //求千位上的数字
} 

void all_int0(void)	       //对所有的中断进行初始化
{   EA=1;                  /*CPU允许开中断,把CPU的总开关打开*/
	IT0=1;                 /*外部中断0下降沿产生中断*/
	EX0=1;                 /*外部中断0允许开中断*/
	ET0=1;                 //C/T0允许开中断
	IP=0x01;               /*外部中断0最高优先级,这个地方不设也行*/
}


void initt0()             //计数器0中初始化程序
 { 
  TMOD=0x06;              //设置计数器0为计数器,并且采用方式2
  TH0=6;                //设置初始值256-250
  TL0=6;
  TR0=1;                  //启动计数器0计数
 }

void service_int0() interrupt 0 using 1  //外部中断0的服务子程序,采用第1组寄存器
  {TL0=6;               //让计数器0从新开始计数
  }

void service_t0() interrupt 1 using 0  //计数器0的中断服务子程序,采用第0组寄存器
  {
   TR0=1;                //由于发生一次中断,所以需要从新启动计数器0
   }


void display(uint idata *p)
 {
   COM8255=0x80;   /*给8255定义控制字*/
        PB8255=0x08;
		PA8255=table[*p];
		delay(50);
        p--;
		PB8255=0x04;
		PA8255=table[*p];
		delay(500);
		p--;
		PB8255=0x02;
		PA8255=table[*p];
		delay(500);
		p--;
		PB8255=0x01;
		PA8255=table[*p];
		delay(500);
         }

   void main(void)
   { all_int0();     //先初始化中断
     initt0();       //初始化计数器0,这个时候执行计数
	 while(1)
	 {
	 jisuan();
     display(dis_buf+3);
     }
    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -