定时器中断 -- 记了点知道的东西 ,给图片加了备注

单片机

原理图
原理图
请添加图片描述
请添加图片描述
请添加图片描述
51单片机 2 个定时器
(51单片机 2 个定时器
stc15 3个 TF3 优先级最低
请添加图片描述
请添加图片描述
总结:
烧录软件弄一个定时器(比如一毫秒)
自己写一个interrupt 的函数
主函数调用

(感觉就像一个计数,到多少了就可以执行)

数码管显示分秒 正计时 的代码

 #ifndef _SYS_H_
#define _SYS_H_
#include <STC15F2K60S2.h>

typedef unsigned char u8;
typedef unsigned int u16;

#define LOCKY4 P2=(P2&0x1f)|0x80
#define LOCKY5 P2=(P2&0x1f)|0xA0
#define LOCKY6 P2=(P2&0x1f)|0xC0
#define LOCKY7 P2=(P2&0x1f)|0xe0
#define LOCKOFF P2=0x1f
   
 void init();
 void smg();
  
#endif



#include <sys.h>
#include <intrins.h>


u8 code DS[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}; 
                // 0   1    2     3   4    5    6    7    8    9    a    b    c   d     e   f
 u8 code DSW[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
 u8 DSHC[8]={16,16,16,16,16,16,16,16};
   
 u8 ts=0;
 u16 timer=0;
 u16 tm=0;




void init()
{
  P0=0xff;	
	LOCKY4;  //关led
	LOCKOFF;
	
	P0=0;
	LOCKY5;  //关蜂鸣器和继电器
	LOCKOFF;
	
	P0=0;
	LOCKY6;  //关数码管位选
	LOCKOFF;
	
	P0=0xff;
	LOCKY7;  关数码管段谎?
	LOCKOFF;
	 
}
void smg( )
{	
 static	u8 i=0;
	P0= 0xff;
	LOCKY7;
	LOCKOFF;
	P0=DSW[i];
	LOCKY6;
	LOCKOFF;
	P0= DS[DSHC[i]];
	LOCKY7;
	LOCKOFF;
	i++;
	if(i==8) i=0;
}

 	 
	 
	void Timer0Init(void)		//1毫秒@12.000MHz
{
	AUXR |= 0x80;		//定时器时钟1T模式
	TMOD &= 0xF0;		//设置定时器模式
	TL0 = 0x20;		//设置定时初值
	TH0 = 0xD1;		//设置定时初值
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时
	ET0 =1;
	EA =1;
}

	void  Timer01ms()   interrupt 1
	{
  //TL0 = 0x20;		//设置定时初值
	//TH0 = 0xD1;		//设置定时初值
		smg();

    if(++timer>999)
			{
			ts++;
			timer=0;
		  }
		
		if(ts>59)
	{

			ts=0;
	    tm++;//FEN
	}
}
		
	
	

 

void Delay1ms()		//@11.0592MHz
{
	unsigned char i, j;

	_nop_();
	i = 2;
	j = 199;
	do
	{
		while (--j);
	} while (--i);
}

void main()
{	
	  
	init();
	Timer0Init() ; 
	while(1)
	{	
    
    DSHC[4]=tm%10;
		DSHC[3]=(tm/10)%10; 
  		
		DSHC[7]=ts%10;
		DSHC[6]=(ts/10);
		
		
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值