微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 关于51单片机定时器的灵活使用

关于51单片机定时器的灵活使用

时间:11-20 来源:互联网 点击:
汇编指令执行堆栈的保护,个人* 水平有限,这里希望大家指正是否有错误之处,谢谢*/void Tm0Isr(void) interrupt 1{ U8 i = 0;TL0 = T0TIMES;TH0 = T0TIMES >> 8;for(i=0; i= timerArray[i].expireTimes){#pragma asmpush ACCpush DPHpush DPL#pragma endasm(*timerArray[i].timerFunc)();#pragma asmpop DPLpop DPHpop ACC#pragma endasmtimerArray[i].curTimes = 0;}}}}

本文中的数据类型都是通过typedef转化过的,为了时时刻刻关于自己的内存使用量,,定义如下

typedef unsigned char U8;typedef unsigned short int U16;typedef unsigned long int U32;typedef signed char S8;typedef signed short int S16;typedef signed long int S32;typedef bit BOOL;

个人认为这个对于项目后面的能够有效快速的进行起到了很大的帮助。 典型的用法如下:

Timer pressKeyTimer;        /* 这里的timer请使用全局变量,大家应该懂的,就是变量的生命周期的问题啦 */pressKeyTimer.curTimes	  = 0;pressKeyTimer.expireTimes = 11;pressKeyTimer.timerFunc   = JudgeKeyType;AddTimer(&pressKeyTimer);StartTimer(&pressKeyTimer);

至此,到规定的时间11msec时,就会调用这里的JudeKeyType函数,进行轮询发现是否有按键按下,并判断其类型。

望有改进意见,谢谢高手指正。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top