标题:
单片机定时器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例程
#include "reg51.h"
typedef unsigned char BYTE;
typedef unsigned int WORD;
//-----------------------------------------------
/* define constants */
#define FOSC 11059200L
#define T1MS (65536-FOSC/12/1000) //1ms timer calculation method in 12T mode
/* define SFR */
sbit TEST_LED = P1^0; //work LED, flash once per second
/* define variables */
WORD count; //1000 times counter
//-----------------------------------------------
/* Timer0 interrupt routine */
void tm0_isr() interrupt 1
{
TL0 = T1MS; //reload timer0 low byte
TH0 = T1MS >> 8; //reload timer0 high byte
if (count-- == 0) //1ms * 1000 -> 1s
{
count = 1000; //reset counter
TEST_LED = ! TEST_LED; //work LED flash
}
}
//-----------------------------------------------
/* main program */
void main()
{
TMOD = 0x01; //set timer0 as mode1 (16-bit)
TL0 = T1MS; //initial timer0 low byte
TH0 = T1MS >> 8; //initial timer0 high byte
TR0 = 1; //timer0 start running
ET0 = 1; //enable timer0 interrupt
EA = 1; //open global interrupt switch
count = 0; //initial counter
while (1); //loop
}
复制代码
作者:
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