单片机/MCU论坛
直播中

谢新貌

11年用户 2812经验值
擅长:控制/MCU
私信 关注
[问答]

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

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

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范围内长

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



已退回5积分

回帖(5)

chenwei6991627

2016-7-6 10:29:54
都标注好了,还有什么问题
举报

liuxiu1991

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

Tom猫

2016-7-6 15:52:07
总中断EA打开了吗
举报

谢新貌

2016-7-11 09:49:15
引用: Tom猫 发表于 2016-7-6 15:52
总中断EA打开了吗

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

yinhang

2018-12-13 20:16:36
有个问题,,定时器以后后产生中断,,程序应该是跳至中断程序入口地址,,而我们在这什么指令都没有,程序是怎么进行的,还是说我们没有放程序在那,,就不会自动跳转过去呢?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分