51测试网 单片机教程XL2000开发板 单片机学习 自制编程器 单片机资料 软件下载 电子技术产品介绍如何购买 进入论坛

51测试网(深圳学林电子有限公司)从0开始来学单片机...入门教程

前言:单片机是一门实践性非常强的学科,为此我们突破传统思路,全面围绕单片机试验,从简单的流水灯开始, 逐步的带领大家从这些简单的几行或者10几行的程序,来熟悉和理解单片机的指令......未经允许禁止转载!如需转载,请著名出处,并保留网站联接!

使用定时器实现长时间的延时

;知识要点:计数器的应用

;把定时器设置为50ms, 另外设置两个软件计数器20,60 总时间

;为50ms*20*60=60000ms=1分钟

;t1为方式1则m1m0=01h,使用定时器c/t=0 gate=0 TMOD=10H

;方式1为16位计数器,一共65535, 减去50000等于15536则计数器初值为3cb0h

 

        ORG 0000H;程序开始

        LJMP MAIN

        ORG 030H

MAIN:   MOV 30H,#20;30h,31h分别置常数20,60

        MOV 31H,#60;

        MOV TMOD,#10H;定时器方式1

        MOV TH1,#03CH;置定时器初值

        MOV TL1,#0B0H

        MOV IE,#00H;禁止中断

        SETB TR1;起动定时器

LOOP:   JBC TF1,LOOP1;查询定时器时间到转loop1

        AJMP LOOP

LOOP1:  MOV TH1,#03CH;重置定时器

        MOV TL1,#0B0H

        DJNZ 30H,LOOP;定时是否到了20次

        MOV 30H,#20

        DJNZ 31H,LOOP;定时是否到了60次

        MOV 31H,#60

        CPL P1.0;取反p1.0

        AJMP LOOP

        END 

程序在倚天版运行的状态:程序运行后全灭

程序在倚天版运行的状态:1分钟后p10点亮, 实现长时间的延时