51单片机,定时器方式1的1s定时,怎么编程

51单片机,定时器方式1的1s定时,怎么编程,第1张

本程序来自《单片机C语言程序设计实训100例——基于8051+Proteus仿真》没用中断。

#include <reg52h>

#include <intrinsh>

#define uchar unsigned char

#define uint unsigned int

void main()

{

uchar T_Count = 0;

P0 = 0xfe;

P2 = 0xfe;

TMOD = 0x10;//定时器1方式1

TH1 = (65535-50000)/256;//定时50000us=50ms

TL1 = (65535-50000)%256;

TR1 = 1;//启动定时器1

while(1)

{

if(TF1== 1)//查询方式定时时间到后TF1=1

{

TF1 = 0;

TH1 = (65535-50000)/256;

TL1 = (65535-50000)%256;

if(++T_Count == 20)//50ms20=1000ms

{

P0 = _crol_(P0,1);

P2 = _crol_(P2,1);

T_Count = 0;

}

}

}

}

开启定时器作为时间基准,

然后再设置几个软件计数器

比如,你设定定时器每隔10毫秒中断一次,

软件计数器a加1,当a数值=100时,就已经定时1秒了,

软件计数器b这时+1,当b数值=60时,就已经定时1分了,

软件计数器c这时+1,当c数值=60时,就已经定时1小时了。

就是这样累积的定时,

明白?

简单啊。

大致说来就是

你先开启个定时器,根据你选用的

晶振

,计算出你要用定时器定时的基准时间,

就假设是10毫秒吧。

然后给定时器的THx,TLx写入初值,开启中断,进行定时。

然后就等待中断。

在你响应中断的程序中,再次给单片机送入初值,

由于是10毫秒中断一次,因此我们设置几个“软件计数器”

比如每此中断,软甲计数器+1,

例如“软件计数器1”在中断程序中计数100次,则是10ms100=1s

而“软件计数器2”在1的基础上继续计数100次,则是1S100=100S

而“软件计数器3”在2的基础上继续计数36次,则是100S36=3600S=1小时。

试试下列程序:

;

ORG 0000H

SJMP BEGIN

ORG 000BH

MOV TH0, #3CH ;定时100ms

MOV TL0, #0B0H

DJNZ R7, E_T0

MOV R7, #5

SETB F0 ;每500ms置一

E_T0:RETI

;------------------------------------

BEGIN:

MOV TMOD, #01H ;T0定时方式1

MOV TH0, #3CH ;50ms@12MHz

MOV TL0, #0B0H ;100ms@6MHz

MOV R7, #5

SETB TR0

SETB ET0

SETB EA

;------------------------

M_LOOP:

MOV A, #255

L1:

MOV P1, A

JNB F0, $

CLR F0

CLR C

RLC A

JC L1

;------------------------

L2:

MOV P1, A

JNB F0, $

CLR F0

SETB C

RRC A

JNC L2

;------------------------

MOV R2, #8 ;全亮全灭8次

L3:

MOV P1, #0 ;全亮

JNB F0, $

CLR F0

MOV P1, #255;全灭

JNB F0, $

CLR F0

DJNZ R2, L3

;------------------------

JMP M_LOOP

;------------------------------------

END

本程序可实现:

L1-L8依次点亮----L1-L8依次熄灭----8个灯全亮全灭8次~循环 各时序间隔05s。

让蜂鸣器发出两种不同的声调很容易,只要给蜂鸣器的控制信号发送不同频率的脉冲就可以实现了,以下以延时方式来做。#include#defineucharunsignedchar#defineuintunsignedintsbitSPK=P1^0;sbitK1=P1^7;//发声函数voidAlarm(uchart){uchari,j;for(i=0;i<200;i++){SPK=~SPK;for(j=0;j

以上就是关于51单片机,定时器方式1的1s定时,怎么编程全部的内容,包括:51单片机,定时器方式1的1s定时,怎么编程、怎么用51单片机定时1个小时 好像是循环,具体汇编程序是怎样的、怎么用51单片机定时1个小时 好像是循环,具体汇编程序是怎样的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9272654.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存