单片机时延50微秒的汇编程序?

来源:百度知道 编辑:UC知道 时间:2024/06/01 01:42:57
这只是一个中断程序,能不能用汇编语言编写一下?晶振是12MHZ

ORG 00H
AJMP MAIN
ORG 0BH
LCALL T0_SHOW
RETI
MAIN:
LCALL T0_INIT
AJMP $
T0_INIT:
MOV TMOD,#01H
MOV TL0,#3CH
MOV TH0,#0B0H
SETB TR0
SETB ET0
SETB EA
RET
T0_SHOW:
CLR EA
CLR ET0
这里可以写你需的要程序;进入中断时间为,50MS后..
RET

END
大概就是这样的....:)

delay30s:
MOV R4,#250
D1:MOV R5,#20
D2:MOV R6,#20
D3:MOV R7,#248
DJNZ R7,$
DJNZ R6,D3
DJNZ R5,D2
DJNZ R4,D1
RET

首先看你要多大的晶震了,12MHZ的话就是50个机械周期啊因为公式是:机械周期=主频率/12
一般象这么短的话用:
NOP指令50个就可以你要是6MHZ的话是2US一个机械周期就是25个

mov r7,#250(具体的数根据晶振定下)
delay: djnz r7,delay

前后的东西总会加了吧,兄弟
虽然没有Timer准,不过汇编延时基本差不多多少,而且Timer控制也需要时间

搞个TIMER计数器,什么也不让它做不就行了