定时器延时汇编怎么写,不用中断,延时1S?

作者&投稿:金荔 (若有异议请与网页底部的电邮联系)
51单片机的定时器怎么做延时 汇编~

定时器中断里1S时,作个标志,主程序里判断这标志。
给你一个流水灯的例子参考。
ORG00H
AJMPMAIN
ORG0BH
AJMPT0INT
ORG30H

MAIN:
MOVTMOD,#01H
MOVTH0,#3CH
MOVTL0,#0B0H
MOVR0,#20
SETBEA
SETBET0
SETBTR0
MAIN0:
MOVA,#01H
MAIN1:
MOVP1,A
JNBF0,MAIN1
CLRF0
RLA
INCA
AJMPMAIN1

T0INT:
MOVTMOD,#01
MOVTH0,#3CH
MOVTL0,#0B0H
DJNZR0,RTI
MOVR0,#20
SETBF0
RTI:
RETI

END

1、首先在电脑中打开Masm for Windows 集成实验环境。

2、接着输入DATAS SEGMENT;定义数据段,BUF0 DB 1;定义一个字节型变量,名称是BUF0,初始值是01H。

3、DATAS SEGMENT;定义数据段,BUF2 DW 1;定义一个字型变量,名称是BUF2,初始值是0001H。

4、DATAS SEGMENT;定义数据段,BUF4 DB 1 DUP(50);定义连续50个字节型变量,名称是BUF4,初始值是01H,DATAS ENDS;数据段定义结束。

5、最后完整段的Hello World程序,设置字符串变量DATAS SEGMENT,就可以了。

如果不用定时中断,就可以使用循环,根据循环体没执行一次循环使用的时间,设定循环的次数,只要循环刚好执行一秒就可以。


用汇编语言编子程序,多重循环方式,实现延时300毫秒。振荡频率12MHz,要...
delay:mov r2,#200;1 dly:mov r3,#249;1*200 djnz r3,$;2*249*200 mov r3,#249;1*200 djnz r3,$;2*249*200 mov r3,#249;1*200 djnz r3,$;2*249*200 djnz r2,dly;2*200 ret;2 total:1+3*(200+2*249*200)+200+2=299803us ...

汇编子程序如何算延时时间
DELAY: MOV R2,#3H ;1个机器周期,执行1次 DJNZ R2,$ ;2个机器周期,执行3次 RET ;2个机器周期,执行1次 以上程序段共延时1*1+2*3+2*1=9个机器周期 同理,以下程序段也延时9个机器周期 DEL: MOV R3,#03H DJNZ R3,RET 所以无论你调用DEL还是DELAY都是延时...

汇编延时程序
D1:MOV R6,#250;D2:DJNZ R6 ,D2;DJNZ R7,D1;RET 以上是一段延时0.125秒的程序。它计算的原理是:这段程序最终执行了250*250次,而DJNZ指令执行需要2个机器周期,一个机器周期需要1微秒的时间,所以以上延时程序就是250*250*2=0.125秒。你的程序原理跟这个应该是一样的~...

请求高手帮忙回答一个汇编语言中怎样求延时时间
粗略的算法是2XR2XR3XR4 (微秒),这里R2、R3为FFH再加1 ,即为256 。程序中的R5笔误,应是R4吧。这种方法只适合短时间的延时,长时间的,这样做,单片机其它什么事都不要做了。5秒,25秒,55秒等等,可以用定时中断方式来做。一般50MS一中断,计20次就是1秒了。这样,再长的时间,甚至几小...

汇编语言延时时间的计算。这段程序延时时间的算法,急!!!
DELAY: ;误差 0us,MOV R7,#0A7H ;1 DL1:MOV R6,#0ABH ;1*167 DL0:MOV R5,#10H ;1*167*171 DJNZ R5,$ ;2*167*171*16 DJNZ R6,DL0 ;2*167*171 DJNZ R7,DL1 ;2*167 NOP ;1 RET

汇编指令延时的精确解释
2*123+2=248us中,的+2即分别是指令MOV R6,#123 和指令NOP各一秒,即是所内循环。(248+2)*200+1=50.001ms 中+2即是指令DJNZ R7,DLY1的用时,(248+2)*200即外循环,最后那个+1即指令MOV R7,#200的用时,不是RET的用时。我也喜欢单片机有时间交流下我的QQ是379078553 ...

单片机汇编语言怎么编定时器延时12小时
汇编看得懂,但不太会写,只会c。 其实单片机内有定时器,可以设置一下,比如定时10ms,设一个unsigned char型变量,计时到100,那就是一秒了,然后再设一个unsigned int 型变量,计时到12*60*60=43200,就是12小时了,最好用外部晶振,这样准确些 ...

编写一个汇编程序实现延时60US(12M晶振普通51单片机)
60us延时比较短,可以采用软件延时,子程序如下:DELAY:MOV R7,#28 (此指令费时1us)NOP (空指令费时1us)DJNZ R7,$ (此指令费时2us,循环28次,共费时28×2=56us)RET (此指令费时2us)绝对精确60us,其它答案均没有考虑RET指令所需时间 ...

请教高手一下,汇编这个延时程序是怎么延时的,那个延时时间是怎么算出...
delay1: mov r6,#250 ;1us djnz r6,$ ;250*2(这条指令两个机器周期,共执行250次,所以花250*2=500us)djnz r7,delay1 ;(1+250*2+2)*250+1(外层的这个循环,包括内层的250*2,再加前后两条指令的3个机器周期,共503近似500,500*250=125000us=125ms)ret 所以整个循环程序延时...

汇编语言延时 push pop
POP 02H ;1*R2*R2*R2 DJNZ R2,DELAY2 ;2*R2*R2*R2 POP 02H ;1*R2*R2 DJNZ R2,DELAY1 ;2*R2*R2 POP 02H ;1*R2 DJNZ R2,DELAY ;2*R2 RET ;2 总延时时间为2*(R2)^4+4*(R2)^3+4*(R2)^2+4*(R2)+2 当R2=20H时,延时约为2.2秒 当R2=25H时,...

洛江区13532455636: 定时器延时汇编怎么写,不用中断,延时1S? -
丁周辰利: 如果不用定时中断,就可以使用循环,根据循环体没执行一次循环使用的时间,设定循环的次数,只要循环刚好执行一秒就可以.

洛江区13532455636: 单片机汇编语言怎么编定时器延时12小时 -
丁周辰利: 汇编看得懂,但不太会写,只会c. 其实单片机内有定时器,可以设置一下,比如定时10ms,设一个unsigned char型变量,计时到100,那就是一秒了,然后再设一个unsigned int 型变量,计时到12*60*60=43200,就是12小时了,最好用外部晶振,这样准确些

洛江区13532455636: 如何用汇编编写定时器1替代delay延时的程序,求高手帮助!谢谢 -
丁周辰利: 定义一全局变量,两字节, 初始化定时器,假定定时器初值为6,在12M晶体的情况下,每中断一次为250us, 在定时器的中断处理程序中,首先判断全局变量是否为0,若为0结速中断服务, 若不为0则将该全局变量--,然后退出; 再设计一个DELAY延时函数,该函数的入口变量为需要延时的时间,以250us为单位, 在delay函数中首先将全局变量设置为入口变量置,然后判断全局变量是否为0,若为0则退出, 否则继续等待全局变量为. 有兴趣加QQ634564229

洛江区13532455636: 不用定期器中断PWM用延迟怎么写 -
丁周辰利: static uchar PerCnt=0;void PWM(uchar Percent){ if(PerCnt++>=100U) { PerCnt=0; if(Percent) PwmOut=1; } if(MotorTime>=Percent) PwmOut=0; }该方法的好处是不用延时等待,节约CPU资源可以放于中断或一定的时基调用一次,便于控制频率. 查看原帖>> 麻烦采纳,谢谢!

洛江区13532455636: 怎样用单片机的汇编语言编写一个50ms的延时程序.(晶振频率为12MHz)ps51单片机 -
丁周辰利: DEL: MOV R7,#210 DEL1: MOV R6,#117 DEL2: DJNZ R6,DEL2NOPDJNZ R7,DEL1NOP ;此处17个NOPNOP....NOP RET 1μs+(1+234+1+2)μs*210+2μs+17=50000μs其实考虑到LCALL调用这个函数的时间,末尾应该再减少2个NOP. 另外,实际使用中需要精确延时的话应该使用定时器中断,一方面是精确,另一方面延时函数执行时,如果有中断发生,那么延时就不正确了.

洛江区13532455636: 单片机80c51,用汇编,编写一个延时子程序,通过调用此程序实现在p1.0输出周期为10ms的方波 -
丁周辰利: ORG 0000H AJMP MAIN ORG 000BH T0MS EQU NOT 5000 ; 定义定时器初值 12M晶振 5 mS = 5000 10 mS = 10000 MOV TL0, #LOW T0MS MOV TH0, #HIGH T0MS CPL P1.0 ; P1.0 取反 输出 10 mS的方波 REIT MAIN:MOV TMOD,#01H MOV TL0, #LOW T0MS MOV TH0, #HIGH T0MS SETB TR0 ; 启动定时器 SETB ET0 ; 开 T0 中断 SETB EA ; 开 总 中断 SJMP $ END

洛江区13532455636: 汇编语言编写一段延时1000个指令周期的子程序 -
丁周辰利: 要求编写延时子程序,就不要使用定时器; 也不要用C语言,因为C语言的执行时间,并不确定. 用汇编语言,是最简单、准确的. 51单片机的程序如下:DL1000:MOV R7,#248DJNZ R7,$MOV R7,#250DJNZ R7,$RET正好1000个机器周期. R7,是8位寄存器,其最大数值是255,不能直接存入500.

洛江区13532455636: 单片机汇编 如何在倒计时60s同时让led灯闪烁 -
丁周辰利: 定时器中断里面倒计时,主程序里执行LED闪烁就可以了..或是说如果不要太精确的话可以不用定时器中断,只需要在主程序循环里面调用延时函数,最小时间<=闪烁时间和定时时间最小分辨率就可以了

洛江区13532455636: 用定时器T1的方式1和循环程序两种方法分别编写400ms的延时程序的汇编语言 -
丁周辰利: 定时器方式:ORG 0000H MAIN: MOV SP,#5FH MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H MOV R2,#8 SETB TR0 LOOP: JNB TF0,$ CLR TF0 DJNZ R2,LOOP CLR TR0 SJMP $ END 延时方式:ORG 0000H MAIN: MOV SP,#5FH LCALL DELAY SJMP $ DELAY: MOV R2,#40 DELAY1: MOV R3,#20 DELAY2: MOV R4,#250 DJNZ R4,$ DJNZ R3,DELAY2 DJNZ R2,DELAY1 RET END

洛江区13532455636: 单片机中,怎么用汇编语言编写程序实现延迟40ms -
丁周辰利: 1.循环延时的方法 DELAY: ;误差 0usMOV R7,#25H DL1:MOV R6,#9AH DL0:MOV R5,#02HDJNZ R5,$DJNZ R6,DL0DJNZ R7,DL1RET不过这不实用.40MS时间单片机都 在这里循环,不作能它事.1.可以用定时中断的方法: ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网