微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 大家好,这段程序是C51单片机汇编程序定时器查询方式实现LED闪烁,我有不懂的地方需要请教!

大家好,这段程序是C51单片机汇编程序定时器查询方式实现LED闪烁,我有不懂的地方需要请教!

时间:10-02 整理:3721RD 点击:

;********************初始化存储单元地址***********************;

ORG0000H;ORG伪指令,指程序从OGR后面指定的地址开始

AJMP START;AJMP是无条件短转移指令。addr11 2K范围内绝

;对调用

ORG 0030H;主程序从0030H开始

;***********************进入主程序***************************;

START:MOV P0,#0FFH;关闭所有灯

MOV TMOD,#00000001B;定时器/计数器0工作方式1  请问:这个00000001B如何理解?我大概知道TMOD有8位,低4位为定时器0的方式控制,有没有人知道这“00000001B”如何理解?M1M0=01,定时器工作于方式1(16位),那么,如果我需要定时器1工作于方式0,或者方式2有该如何写呢?

;MOV TH0,#15H

;MOV TL0,#0A0H;装初值,15A0H即十进制数5536

MOV TH0,#3CH

MOV TL0,#0B0H;装初值,3CB0H即十进制数15536即50ms一次

SETB TR0;定时器/计数器0开始运行

LOOP:JBC TF0,NEXT;如果TF0=1,则清TF0并且转NEXT处

LJMP LOOP;LJMP是无条件短转移指令。addr16 K范围内长

;转移。这里是返回主程序执行。

NEXT:CPL led

;MOV TH0,#15H

;MOV TL0,#0A0H;重装初值,15A0H即十进制数5536

MOV TH0,#3CH

MOV TL0,#0B0H;重装初值,3CB0H即十进制数15536即50ms一次

LJMP LOOP;LJMP是无条件短转移指令。addr16 K范围内长

;转移。这里是返回主程序执行。


都标注好了,还有什么问题

看完以后似乎你标注里面就一个问题,00000001B怎么理解?对吧。这个就是往TMOD这个寄存器里面写值,用来设置定时器的工作模式。具体的看技术手册,找到这个寄存器你就明白了

总中断EA打开了吗

你好,这个是采用查询方式的。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top