欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機軟件多定時器multi_timer實現程序 目前相差很大,不準 有興趣可以改進下
[打印本頁]
作者:
zmc419
時間:
2021-12-16 20:57
標題:
單片機軟件多定時器multi_timer實現程序 目前相差很大,不準 有興趣可以改進下
網上發現一個很好的軟件定時器程序。有移植示例,略加修改,在普中開發板上實現。但是相差很大,不準,請試驗后發表意見。
單片機源程序如下:
#include <reg51.h>
#include "multi_timer.h"
/*定義3個定時器*/
Timer timer1 ;
Timer timer2 ;
Timer timer3;
/*用于定時10s的計數器*/
int Counter = 0 ;
/*根據板子原理圖,燈位于P0^0,P0^1*/
sbit LED = P0^0 ;
sbit LED2 = P0^1;
/*晶振頻率為12M*/
#define FOSC 12000000L
/*指令速度為12T*/
#define command_speed 12
/*用multi_timer創建的定時器1定時時間 單位:ms*/
#define TIMER_TIMEOUT_500MS 500
/*用multi_timer創建的定時器2定時時間 單位:ms*/
#define TIMER_TIMEOUT_1S 1000
#define TIMER_TIMEOUT_10S 10000
void timer0_init(void);
void timer1_callback(void);
void timer2_callback(void);
void timer3_callback(void);
void main(void)
{
LED = 0;
timer0_init(); //系統定時器0初始化
/*判斷是否到達定時時間(timeout參數),如果到達了定時時間,沒有指定循環定時觸發時間(repeat參數)的時候,
這時就會把當前定時器句柄給移除,如果指定了循環定時觸發時間(repeat參數),則定時時間會被重新賦值,
直到下一個定時到來,接下來會一直循環觸發。*/
timer_init(&timer1, timer1_callback, TIMER_TIMEOUT_500MS, TIMER_TIMEOUT_500MS);
timer_init(&timer2, timer2_callback, TIMER_TIMEOUT_1S, TIMER_TIMEOUT_1S);
timer_init(&timer3, timer3_callback, TIMER_TIMEOUT_10S,TIMER_TIMEOUT_10S);
timer_start(&timer1);
timer_start(&timer2);
timer_start(&timer3);
while(1)
{
timer_loop();
}
}
/*multi_timer回調函數1調用*/
void timer1_callback(void)
{
/*LED燈電平翻轉*/
LED = !LED ;
}
/*multi_timer回調函數2調用*/
void timer2_callback(void)
{
/*當計數器到達10次以后刪除所有創建的軟件定時器
計數器清0,將LED電平置為1,常亮
*/
++Counter ;
if(10 == Counter )
{
Counter = 0 ;
LED = 1 ;
timer_stop(&timer1);
timer_stop(&timer2);
}
}
/*multi_timer回調函數3調用*/
void timer3_callback(void)
{
/*LED燈電平翻轉*/
LED2 = !LED2 ;
}
/*硬件定時器初始化*/
void timer0_init(void)
{
TMOD = 0x00;
TH0 = (65536-FOSC/command_speed/1000) >> 8;
TL0 = (65536-FOSC/command_speed/1000);
EA = 1;
ET0 = 1;
TR0 = 1;
}
/*利用系統定時器產生1ms的定時中斷*/
void timer0() interrupt 1
{
TH0 = (65536-FOSC/command_speed/1000) >> 8;
TL0 = (65536-FOSC/command_speed/1000);
/*multi_timer計數器自增*/
timer_ticks(); //系統滴答
}
復制代碼
Keil代碼下載:
Ok-普中多定時器multi_timer.rar
(3.52 MB, 下載次數: 15)
2021-12-16 20:56 上傳
點擊文件名下載附件
作者:
gongzhu
時間:
2022-4-7 21:43
本帖最后由 gongzhu 于 2022-4-7 21:49 編輯
移植到stc15w4k32s4運行正常,沒有理解所謂的差別大是什么意思。P0.0以1s為周期閃爍10下后常亮,P0.1亮10s再滅掉,10s后再亮,跟電腦時間核對沒有超過人眼識別范圍。
multi_timer.rar
(46.55 KB, 下載次數: 8)
2022-4-7 21:42 上傳
點擊文件名下載附件
stc15移植
作者:
zmc419
時間:
2022-4-8 10:14
時間不準的問題找到了,是定時器模式問題。原程序是用的stc單片機定時器模式特殊,和別的不一樣,自己重設TMOD就好了。
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1