找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1256|回复: 4
收起左侧

怎么写个基于AT89C51的简易定时器程序呢?用定时器查询方式 求思路

[复制链接]
ID:867172 发表于 2020-12-25 19:01 来自手机 | 显示全部楼层 |阅读模式
怎么写个基于AT89C51的简易定时器程序呢?用定时器查询方式,LCD1602显示(0~ 999 )比如到时间了液晶屏显示数字和时间
回复

使用道具 举报

ID:846569 发表于 2020-12-26 13:14 | 显示全部楼层
首先T0定时4ms(或5ms),然后写一个累加器,累加到1s的时候执行时间的寄存器加一,并且判断时间是否到了,到了的话就显示液晶屏。
不知道楼主是不是这个意思
回复

使用道具 举报

ID:867172 发表于 2020-12-26 14:34 来自手机 | 显示全部楼层
HSY666NB 发表于 2020-12-26 13:14
首先T0定时4ms(或5ms),然后写一个累加器,累加到1s的时候执行时间的寄存器加一,并且判断时间是否到了, ...

大概就是的
回复

使用道具 举报

ID:858964 发表于 2020-12-26 14:49 | 显示全部楼层
建议不用查询方式,而是用定时器中断方式,51汇编语言程序示例如下:
         ORG           0000H
         JMP         START
;;--------------------------------------------
         ORG   000BH      ;定时器T0中断处理入口地址
         AJMP   T0_INT
;;--------------------------------------------
           ORG     0030H        ;; 主程序入口地址
START:   ;;
;;--------------------------------------------
SET_T0:                          ;; T0初始化,
        ;; 定时65ms的计数值 =65000μs/1μs =65000
;; 方式1,16位计数器,计数值 =65536-65000 =536 =218H
         MOV   TMOD, #01H    ;; T0定时模式.方式1(16位计数器)
         MOV   TH0,  #02H    ;; 装入计数初值高字节
         MOV   TL0,  #18H    ;; 装入计数初值低字节
         SETB  TR0           ;; 启动T0
         SETB  ET0           ;; 允许T0中断
         SETB  EA            ;; MPU开中断
         RET
;;-------------------------------------------  
T0_INT:                            ;; T0定时中断处理
         ACALL  DSPLAY        ;; 调用LCD1602显示子程序
         MOV   TH0,  #02H    ;; 重装计数初值高字节
         MOV   TL0,  #18H    ;; 重装计数初值低字节
         RETI
;;--------------------------------------------


回复

使用道具 举报

ID:867172 发表于 2020-12-26 21:55 来自手机 | 显示全部楼层
想要个查询方式的,c语言版的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表