标题: 单片机定时器0中一秒的中断程序TH0和TL0怎么算? [打印本页]

作者: 爱学习的小郎君    时间: 2022-10-4 22:31
标题: 单片机定时器0中一秒的中断程序TH0和TL0怎么算?
谢谢大家
作者: hjx5548    时间: 2022-10-5 07:41
20ms初值,中断多少次可以了。
作者: 624353765    时间: 2022-10-5 07:48
http://www.51hei.com/bbs/dpj-223265-1.html
看这贴,可以用软件生成
作者: coody_sz    时间: 2022-10-5 21:37
Timer0设置一个10ms的中断,计数到100就是1秒。
作者: lkc8210    时间: 2022-10-6 10:33
STC例程


  1. #include "reg51.h"

  2. typedef unsigned char BYTE;
  3. typedef unsigned int WORD;

  4. //-----------------------------------------------

  5. /* define constants */
  6. #define FOSC 11059200L

  7. #define T1MS (65536-FOSC/12/1000)   //1ms timer calculation method in 12T mode

  8. /* define SFR */
  9. sbit TEST_LED = P1^0;               //work LED, flash once per second

  10. /* define variables */
  11. WORD count;                         //1000 times counter

  12. //-----------------------------------------------

  13. /* Timer0 interrupt routine */
  14. void tm0_isr() interrupt 1
  15. {
  16.     TL0 = T1MS;                     //reload timer0 low byte
  17.     TH0 = T1MS >> 8;                //reload timer0 high byte
  18.     if (count-- == 0)               //1ms * 1000 -> 1s
  19.     {
  20.         count = 1000;               //reset counter
  21.         TEST_LED = ! TEST_LED;      //work LED flash
  22.     }
  23. }

  24. //-----------------------------------------------

  25. /* main program */
  26. void main()
  27. {
  28.     TMOD = 0x01;                    //set timer0 as mode1 (16-bit)
  29.     TL0 = T1MS;                     //initial timer0 low byte
  30.     TH0 = T1MS >> 8;                //initial timer0 high byte
  31.     TR0 = 1;                        //timer0 start running
  32.     ET0 = 1;                        //enable timer0 interrupt
  33.     EA = 1;                         //open global interrupt switch
  34.     count = 0;                      //initial counter

  35.     while (1);                      //loop
  36. }

复制代码



作者: Hephaestus    时间: 2022-10-6 21:53
我还是更喜欢自动重装载模式。
作者: yzwzfyz    时间: 2022-10-8 10:08
当时间太长时(超过65536的计数),可以自己增加一个变量,统计中断次数,就可以实现1S干活的目的了。
作者: 人人学会单片机    时间: 2022-10-9 00:01
https://pan.baidu.com/s/1HKoHDJSc9sxFTQvllo825g  提取码:1234    解压码  WQX-15
这里有现成的代码可以下载




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1