单片机编程

单片机编程程序里的$什么意思

在单片机汇编语言的保留字符中,符号$用于表示当前指令行所在地址。在本题目所给出的汇编子程序中,指令行DJNZ R4,$表示这是一条有条件的转移指令,即R4寄存器中数值减1,如果寄存器值不等于0,转到指定的地址执行程序。而此行指令所指定地址$,就是本行指令所在的地址,所以会重复执行本条指令,直到R4寄存器中内容减至0后,转而执行下条指令。
此处之所以出现这样的写法,完全是为了凑延时吋间。从子程序给出的注释信息可以看出,这是一段500ms的延时程序。在经典的51系列单片机中,执行一条DJNZ操作指令需要2个机器周期,一个机器周期又是12个系统时钟周期。对于系统时钟频率11..0592MHz的单片机,执行一次DJNZ指令占用的时间为2×12x1/11.0592,大约等于2us。因R4寄存器赋初值250,该重复操作所产生延时为2×250=500us。这500us延时又被嵌套在LOOP1和LOOP2两重循环中,LOOP1循环200次,LOOP2循环5次,由此可以计算出子程序总的延时为500×200x5=500(ms)。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-05-08
单片机汇编语言中,符号$表示当前行地址。图中djnz r2,$指令的意思是当R2减1不为0时,仍然执行当前行指令,知道R2减1到0时,继续下一条指令。本回答被提问者采纳
第2个回答  2019-01-19
美元符号$常在转移类指令的操作数字段中使用,用于表示该转移指令操作码所在的地址。如:
JNB F0,$
表示若PSW寄存器中的F0=0.,则机器总是执行该指令,当F0=1时,才往下执行下一条指令。它与如下指令是等价的:
HERE:JNB F0,HERE
同样的道理,D3: DJNZ R7,$ (在本句中,标号D3其实可以省略)
等效于 D3: DJNZ R7,D3 (在本句中,标号D3就不能省略)
第3个回答  2019-03-22
在51汇编语言中,$表示本条指令当前所在的内存地址。本题目程序中的DJNZ R4,$ 是条件转移指令,即当R4减1不等于0,就跳转到后面参数所指示的地址,因在这里R4后面跟随的参数是$,所以当R4减1不为0时,程序就重复执行本条指令。
第4个回答  2019-01-26
单片机编程中$这个字符常用在汇编语言的编程语句中,表示“当前行”地址,比如:
SJMP $;指令意思是短转移到当前行,其实就是原地踏步,死循环。
DJNZ R2,$;意思是当R2减1不为零时继续本行操作。
相似回答