51单片机【while自定义时间扫描---常用模板】

51单片机【while自定义时间扫描---常用模板】,第1张

主要思路
     :主要用到思路   利用定时器去控制while里面的实行时间
工作原理:

如:工作原理 :利用定时器1中断 到达1ms后 进入中断 使Key_Mm每次加1 ,
当定时器1中断进入10次1即Key_Mm=10;当Key_Mm==10,就会使得while循环扫描当前的函数内 … */

#include "STC15F2K60S2.h"

//函数声明-----------------
void Key_Pro (void);
void Seg_Pro (void);
void Led_Pro (void);

void Timer1Init(void);
//减速 --------   用于定时器1 计时1ms++
unsigned long Key_Mm;
unsigned long Seg_Mm;
unsigned long Led_Mm;
void main()
{
	Timer1Init();
	
	while(1)
	{
		 Key_Pro ();
		 Seg_Pro ();
		 Led_Pro ();
	}
}
void tm1_isr() interrupt 3     //定时器1中断函数   (interrupt关键词是中断序号)
{
   if(++Key_Mm == 10) Key_Mm=0;
   if(++Seg_Mm == 100) Seg_Mm=0;
   if(++Led_Mm == 300) Led_Mm=0;

}
//
void Key_Pro (void)
{
		if(Key_Mm) return;Key_Mm=1;
		/*  ...内容代码... */
}

//
void Seg_Pro (void)
{
		if(Seg_Mm) return;Seg_Mm=1;
		/*  ...内容代码... */
	
//
}

void Led_Pro (void)
{
	 if(Led_Mm) return;Led_Mm=1;
	/*  ...内容代码... */
	
}


void Timer1Init(void)		//启动定时器 1毫秒@12.000MHz  函数-----【带有自动重装模式 1ms定时器】
{
	AUXR &= 0xBF;		//定时器时钟12T模式
	TMOD &= 0x0F;		//设置定时器模式
	TL1 = 0x18;		//设置定时初值
	TH1 = 0xFC;		//设置定时初值
	TF1 = 0;		//清除TF1标志
	TR1 = 1;		//定时器1开始计时
	
  ET1 = 1;               //使能定时器1中断
  EA = 1;
}

	/*  ...主要用到思路   利用定时器去控制while里面的实行时间
如:工作原理 :利用定时器1中断  到达1ms后 进入中断 使Key_Mm每次加1 ,
当定时器1中断进入10次1即Key_Mm=10;当Key_Mm==10,就会使得while循环扫描当前的函数内  ... */

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1354284.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-14
下一篇 2022-06-14

发表评论

登录后才能评论

评论列表(0条)

保存