若R6为0程序向下执行,若R6不为0程序跳转到D2处
1、延时假设fosc=12MHz,则一个机器周期为1us,若要求达到10ms延时。 MOV R6,#20 ; 1个机器周期 D2:MOV R7,#249 1个机器周期 DJNZ R7,$;2个机器周期 DJNZ R6,D2;2个机器周期t=1+20×(1+249×2+2)=10021μs≈10ms 2、闪烁灯在P1.0端口上接一个发光二极管L1,使L1不停一亮一灭,亮0.2S,灭0.2...
D1: MOV R6,#250 ; D2: DJNZ R6,D2 ; 1. 2. MOV : 在250 前面有个 # 号,这又是什么意思呢?这个 # 就是用来说明 250 就是一个被传递的东西本身,而不是传递者。 DJNZ (D ec 1 J mp if N ot Z ero): 第一个参数中的值减 1 ,然后看一下,这个值是否等于 0 ,如果等于 0 ,就往下执行...
D2是R6不等于0跳转到得地址,虽然是标号,当他也是地址。所以他就存在偏移量。
DJNZ 指令练习 1、假设fosc=12MHz,则一个机器周期为1us,若要求达到10ms延时, 则: MOV R6,#20 ; 1个机器周期 D2: MO...
比如当晶振频率是12MHz的时候,1个机器时间是t=12/12MHz=1us 然后看循环R7*R6=62500次,对于MOV R6,#250共执行250次,DJNZ R6,D2执行62500次,DJNZ R7,D1执行250次,则每句消耗2个机器时间有:T=(250+62500+250)*2=126000us=126ms=0.126s 故延时越0.126秒 ...
DELAY: MOV R7,#250 ;(6)D1: MOV R6,#250 ;(7)D2: DJNZ R6,D2 ;(8)... 分享回复赞 51单片机吧 lin_coola 【跟豆子一起学单片机】6课:单片机并行口结构从硬件电路的连线能看出,有四个按钮被接入到P3口的P32,P33,P34,P35。第一条指令的用途我们能猜到:使P3口全部为高电平。第二条指令是MOV ...
都是PC+rel,你的想法是对的。Sjmp实现原地跳转时只能用$,没听说过直接用绝对地址的数值来表示的。"D2"在源代码中是标号,但是编译器在将其翻译为机器代码时会自动计算出它的物理地址并且用在指令中。一般只源代码中都使用标号来表示地址,几乎不同数字来直接表示地址,因为计算地址是很复杂的问题。
你的频率是12M就更好算,知道频率12M,那么机器周期为12乘以(1/12)=1us,以1s为例,当计250个数时,要用时1s乘以250=250us,再来计算定时1s计数器要溢岀多少次,也就是1000000/250=4000,这就是12M的频率下计算的方法,明白吧?你慢慢理解一下就明白了。祝你学好单片机。