:主要用到思路 利用定时器去控制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循环扫描当前的函数内 ... */
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)