如何利用定时器T0的工作方式1实现1秒钟延时程序(单片机)?

如何利用定时器T0的工作方式1实现1秒钟延时程序(单片机)?,第1张

1、#include <reg52.h>

2、#define uchar unsigned char

3、#define uint unsigned int

4、sbit LED = P0^0uchar T_Count = 0void main(){TMOD = 0x01TH0  = (65535-50000)/256TL0  = (65535-50000)%256IE   = 0x82TR0  = 1while(1)}

5、void LED_Flash() interrupt 1{TH0  = (65535-50000)/256TL0  = (65535-50000)%256if(++T_Count == 20){LED = !LEDT_Count = 0}}

6、这个程序是1秒钟LED灯会亮与灭显示。

1单片机,拥有两个定时器,用来中断计数,分别是T0和T1。而52单片机和51单片机的定时器是一样的,只是52比51多了一个定时器/计数器T2,它们的设置都大同小异。

用定时器T0来完成

那么我令T0的溢出时间为200us

那么T0的初值为56

1(s)=200*250*2(us)

下面是程序

ORG 0000H

LJMP MAIN

ORG 000BH

LJMP CTC0

ORG 100H

MIAN:

MOV SP,#5FH

MOV R7,#250软件计数第一级

MOV R6,#2软件计数第二级

MOV TL0,#56送初值

MOV TH0,#56

ANL TOMD,#0F0HTOMD高4位不变,T1工作方式不

ORL TMOD,#02H定义T0工作方式

SETB ET0

SETB TR0

SJMP $

CTC0:

PUSH PSW保护PSW

DJNZ R7, EXIT软件计数

MOV R7,#250 重装初值,下同

DJNZ R6,EXIT

MOV R6,#2

EXIT:

POP PSW

RETI


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

原文地址: https://outofmemory.cn/yw/7811602.html

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

发表评论

登录后才能评论

评论列表(0条)

保存