Ⅰ 51单片机怎么实现定时一分钟
51单片机 的时钟一般是12MHz,采用16位定时器,最大计数次数为65535,那么就是65535us=65ms, 那就可以设置寄存器初始使每50ms产生一次中断.20次即为一秒
50 ms =50000 us.
THX = (65535-50000) /256;
TLX = (65535-50000) %256;
X为定时号 0.1
Ⅱ 51单片机 定时时间
65535*2=131070微秒,每个周期为2微秒*65535个周期。你算算就对了,我是记住的12M时周期为1微秒,6M就为2微秒,24M为0.5微秒
Ⅲ 51单片机T0定时器4种方式的定时时长分别是多少
模式0:8192
模式1:65536
模式2:256(自动重装载模式,波特率发生器必须是这个模式)
模式3:256(该模式用处不大,将定时器分成两个8位定时器)
Ⅳ 51单片机定时功能如何实现
#include"reg51.h"
#define
uchar
unsigned
char
#define
uint
unsigned
int
/**************初始化程序****************/
void
initiation()
{
TMOD=0x11;
//设定计数方式等
TH0=-10000/256;
TL0=-10000%256;
//10MS定时初值(T0计时用)
TH1=-25000/256;
TL1=-25000%256;
//25MS定时初值(T1计时用)
ET0=1;
ET1=1;
TR0=1;
TR1=1;
EA=1;
}
/****************定时器0中断服务程序*****/
void
init_timer0(void)
interrupt
1
{
TH0=-10000/256;
TL0=-10000%256;
//10MS定时初值(T0计时用)
//下面写用户程序
}
/****************定时器1中断服务程序*****/
void
init_timer1(void)
interrupt
3
{
TH1=-25000/256;
TL1=-25000%256;
//50MS定时初值(T1计时用)
//下面写用户程序
}
/****************主程序******************/
main()
{
initiation();
while(1)
{
;
}
}
Ⅳ c51单片机定时十分钟怎么做
写个伪代码,供参考:
延时10分钟=延时600秒
延时600秒=延时1秒(600)
把延时1秒的程序,调用600次就是10分钟
Ⅵ 51单片机定时怎么写
设置好tmod和th1
tl1
打开t1中断,比如设置TH1和TL1使MCU50ms产生一个溢出中断,在main里设置一个变量N,一次中断n++,根据你所需的时间,设置n的上限,如1分钟,n自增到20返回0
Ⅶ 51单片机的定时器是怎么设置的
单片机定时器的设置步骤为:
1、设置定时器的工作模式,共4种工作方式,两种模式(计数器/定时器)。比如:
MOV TMOD,#01;设置定时器0位定时器模式,工作方式1
2、根据定时时间赋初值。比如定时10毫秒,那么如果12M晶振的话是10000个机器周期。定时器是溢出申请中断,所以用溢出值减去定时周期为初值。
MOV TH0,#HIGH(65536-10000)
MOV TL0,#LOW(65536-10000)
3、开启中断、定时器。
SETB ET0
SETB EA
SETB TR0
Ⅷ 51单片机如何计算定时时间
如果只是计算定时而无需理论根据,可下载一个MCUtool.exe小工具,可很方便地得出。此工具还有其它 如延时时间计算,波特率计算,汉字编码查询等诸多功能 。
Ⅸ 关于51单片机长时间定时
给你举个例子吧 80C51
已知fosc=6MHZ,下面延时子程序的延时时间大约为10ms
精确的时间为:
DELAY: MOV R6,#10 ;2us
D1: MOV R7,#250 ;20us,重复了10次,一次2us
D2: DJNZ R7,D2 ;1ms,250*2*2 us
DJNZ R6,D1 ;40us ,10*2*2us
RET ;4us
虽然一次只累计250次
但通过循环10次的250次累计,就可以达到长时间的定时
所以上面的精确时间为10ms+66us(忽略不计)
这么详细了没明白?
直说了吧
这程序段,你给R6:10,他就延时10ms
你给R6:20,他就延时20ms
你给R6:200,他就延时200ms
在R6=200的基础上,在加两句,让200ms循环5次,就可以得到1s的延时,10次就是2s
这样够不够?
那我给你解释下上面的那段延时程序吧.
DELAY: MOV R6,#10;给R6预设10,循环10次用
D1: MOV R7,#250;给R7预设250,
D2: DJNZ R7,D2;R7减1,判断R7是否为0,不为0,则跳转D2(原地踏步),R7=0的话则继续执行下一条(R7已从250减到0了)
DJNZ R6,D1;R6减1,判断R6是否为0,不为0,跳D1,而D1又是从R7重赋250,这样,不断循环,直到R6=0,才循环结束
RET
Ⅹ 51单片机中断定时
30秒这个时间比较长,不知道你的晶振选用的什么频率。一般来说16位方式也很难做到30秒,所以需要借助一个全局的counter变量来辅助提升定时器位数。