单片机延时1秒 用 定时器汇编语言

单片机延时1秒 用 定时器汇编语言,第1张

CJNE R1,#20,MAIN这里是不对的,没有这条语句,可以改成:

MOV A,R1

CJNE A,#29,MAIN

其他地方也有问题,修改如下

MOV TMOD,#01H

MOV R1,#00H

MAIN:

MOV TH0,#3CH

MOV TL0,#0B0H

SETB TR0

JNB TF0,$

CLR TF0

INC R1

MOV A,R1

CJNE R1,#20,MAIN

1RL P1 错误语法 

2DJNZ R2,D1 ;这条意思是移位未8 次,转D1吧,应该是转到D1的下一条

 AJMP D1 ;这是移位8次后转D1重新开始流水

ORG 0000H

MOV R2 ,#8

D1:

MOV A,#7FH

D10:

RL A

MOV P1,A

ACALL DELAY

DJNZ R2,D10

AJMP D1

DELAY:

MOV R3,#14H

MOV TMOD,#10H

MOV TH1,#3CH

MOV TL1,#0B0H

SETB TR1

LOOP1:

JBC TF1,LOOP2

SJMP LOOP1

LOOP2:

MOV TH1,#3CH

MOV TL1,#0B0H

DJNZ R3,LOOP1

RET

END

delay1000ms:(HT46R65的单片机)(注意不要开启计时中断允许位)

mov a,10000111b (设置频率和记数方式)(上升记数还是下降记数)

mov tmr0c,a (tmr0c 计数器的控制寄存器

mov a,low(65536-31250) (设置的频率就是1S上升31250)因此是DELAY1S

mov TMR0L,a (计数器的赋予初始值的低位寄存器)

mov a,high(65536-31250)

mov TMR0h,a(计数器的赋予初始值的高位寄存器)

set tmr0c4 (打开记数)

snz intc06 (是否有中断请求标志)(有就跳过)

jmp $-1 (退回一步)

clr tmr0c4 (关闭记数)

clr intc06 (清除中断标志)

ret

DELAY1S: MOV R0,#10H

LOOP0:LCALL DELAY

DJNZ R0,LOOP0

RET

DELAY:MOV R6,#0C8H; 外循环 200 次

LOOP1:MOV R7,#0F8H; 内循环 248 次

NOP

LOOP2:DJNZ R7,LOOP2; 延时2 μs×248=496 μs

DJNZ R6,LOOP1; 延时 500 μs×200=100 ms

RET

将上面函数调用两次就可以啦

以上就是关于单片机延时1秒 用 定时器汇编语言全部的内容,包括:单片机延时1秒 用 定时器汇编语言、汇编 这个程序哪里出了问题 这是个简单的流水灯程序 延时为一秒、单片机。用汇编语言编程。 设计一软件延时1s的子程序。设晶振频率为12MHz。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9452784.html

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

发表评论

登录后才能评论

评论列表(0条)

保存