久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1923|回復: 2
收起左側(cè)

單片機軟件多定時器multi_timer實現(xiàn)程序 目前相差很大,不準 有興趣可以改進下

[復制鏈接]
ID:137736 發(fā)表于 2021-12-16 20:57 | 顯示全部樓層 |閱讀模式
網(wǎng)上發(fā)現(xiàn)一個很好的軟件定時器程序。有移植示例,略加修改,在普中開發(fā)板上實現(xiàn)。但是相差很大,不準,請試驗后發(fā)表意見。

單片機源程序如下:
  1. #include <reg51.h>
  2. #include "multi_timer.h"
  3. /*定義3個定時器*/
  4. Timer timer1 ;
  5. Timer timer2 ;
  6. Timer timer3;
  7. /*用于定時10s的計數(shù)器*/
  8. int Counter = 0 ;
  9. /*根據(jù)板子原理圖,燈位于P0^0,P0^1*/
  10. sbit LED = P0^0 ;
  11. sbit LED2 = P0^1;

  12. /*晶振頻率為12M*/                                                         
  13. #define FOSC 12000000L
  14. /*指令速度為12T*/
  15. #define command_speed 12
  16. /*用multi_timer創(chuàng)建的定時器1定時時間  單位:ms*/
  17. #define TIMER_TIMEOUT_500MS 500
  18. /*用multi_timer創(chuàng)建的定時器2定時時間  單位:ms*/
  19. #define TIMER_TIMEOUT_1S 1000
  20. #define TIMER_TIMEOUT_10S 10000
  21. void timer0_init(void);
  22. void timer1_callback(void);
  23. void timer2_callback(void);
  24. void timer3_callback(void);

  25. void main(void)
  26. {         
  27.    LED = 0;
  28.    timer0_init(); //系統(tǒng)定時器0初始化
  29.    /*判斷是否到達定時時間(timeout參數(shù)),如果到達了定時時間,沒有指定循環(huán)定時觸發(fā)時間(repeat參數(shù))的時候,
  30.    這時就會把當前定時器句柄給移除,如果指定了循環(huán)定時觸發(fā)時間(repeat參數(shù)),則定時時間會被重新賦值,
  31.    直到下一個定時到來,接下來會一直循環(huán)觸發(fā)。*/
  32.    timer_init(&timer1, timer1_callback, TIMER_TIMEOUT_500MS, TIMER_TIMEOUT_500MS);
  33.    timer_init(&timer2, timer2_callback, TIMER_TIMEOUT_1S, TIMER_TIMEOUT_1S);
  34.    timer_init(&timer3, timer3_callback, TIMER_TIMEOUT_10S,TIMER_TIMEOUT_10S);
  35.    timer_start(&timer1);
  36.    timer_start(&timer2);
  37.    timer_start(&timer3);
  38.    while(1)
  39.    {
  40.               timer_loop();
  41.    }
  42. }

  43. /*multi_timer回調(diào)函數(shù)1調(diào)用*/
  44. void timer1_callback(void)
  45. {
  46.    /*LED燈電平翻轉(zhuǎn)*/
  47.    LED = !LED ;
  48. }
  49. /*multi_timer回調(diào)函數(shù)2調(diào)用*/
  50. void timer2_callback(void)
  51. {
  52.         /*當計數(shù)器到達10次以后刪除所有創(chuàng)建的軟件定時器
  53.           計數(shù)器清0,將LED電平置為1,常亮
  54.         */
  55.         ++Counter ;
  56.         if(10 == Counter )
  57.         {
  58.                 Counter = 0 ;
  59.                 LED = 1 ;
  60.                 timer_stop(&timer1);
  61.                 timer_stop(&timer2);
  62.         }
  63. }
  64. /*multi_timer回調(diào)函數(shù)3調(diào)用*/
  65. void timer3_callback(void)
  66. {
  67.    /*LED燈電平翻轉(zhuǎn)*/
  68.    LED2 = !LED2 ;
  69. }

  70. /*硬件定時器初始化*/
  71. void timer0_init(void)               
  72. {
  73.         TMOD = 0x00;
  74.     TH0 = (65536-FOSC/command_speed/1000) >> 8;
  75.     TL0 = (65536-FOSC/command_speed/1000);
  76.     EA = 1;
  77.     ET0 = 1;
  78.     TR0 = 1;
  79. }

  80. /*利用系統(tǒng)定時器產(chǎn)生1ms的定時中斷*/
  81. void timer0() interrupt 1
  82. {
  83.         TH0 = (65536-FOSC/command_speed/1000) >> 8;
  84.     TL0 = (65536-FOSC/command_speed/1000);
  85.         /*multi_timer計數(shù)器自增*/
  86.         timer_ticks(); //系統(tǒng)滴答
  87. }  
復制代碼

Keil代碼下載:
Ok-普中多定時器multi_timer.rar (3.52 MB, 下載次數(shù): 15)


回復

使用道具 舉報

ID:90212 發(fā)表于 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, 下載次數(shù): 8)


回復

使用道具 舉報

ID:137736 發(fā)表于 2022-4-8 10:14 | 顯示全部樓層
時間不準的問題找到了,是定時器模式問題。原程序是用的stc單片機定時器模式特殊,和別的不一樣,自己重設(shè)TMOD就好了。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 尤物在线精品视频 | 国产中文一区二区三区 | 妞干网福利视频 | 精品一区二区三区在线观看 | 中文字幕国产视频 | 国产高清在线精品一区二区三区 | 国产丝袜一区二区三区免费视频 | 国产99热 | 宅男噜噜噜66一区二区 | 日日爽 | 91中文在线观看 | 一区二区久久 | 精品一区国产 | 欧美色成人 | 国产一区二区影院 | 精品欧美一区二区精品久久 | 情侣黄网站免费看 | 91精品国产欧美一区二区成人 | wwwsihu| 高清人人天天夜夜曰狠狠狠狠 | 久久33| 国产一级视频在线播放 | 精品一区国产 | 亚洲午夜av久久乱码 | 国产精品小视频在线观看 | 欧美一区二区激情三区 | 国内av在线 | 99在线观看视频 | 亚洲网站在线播放 | 日韩精品三区 | 国产馆| 国产精品高清一区二区 | 日本久久福利 | 在线观看www | 91免费在线 | 一区二区福利视频 | 最新中文字幕一区 | 在线免费观看亚洲 | 天天操天天干天天透 | 精品成人免费一区二区在线播放 | 成人二区 |