Ⅰ 单片机中有哪两种注释,符号是什么
为单片机编程时,用汇编语言写程序时,用分号 ; 表示注释符号。
用C语言写程序时,有两种注释符号,//为本行注释符
/*
注释内容
*/
为一段多行注释符。
Ⅱ 菜鸟请教单片机C编程中0x80,0x0f, 0xf0,0xc0都是什么意思。。。
C语言里0x表示后面的数是16进制数,16进制数可以包含0~9,a,b,c,d,e,f。它与10进制对应如:
0x80 = 8 * 16 + 0 = 128
0x0f = 0*16 + 15 = 15
0xf0 = 15 * 16 + 0 = 240
0xc0 = 12 * 16 + 0 = 192
C语言里面乘法是星号*,如4*5
Ⅲ 单片机编程
在单片机汇编语言的保留字符中,符号$用于表示当前指令行所在地址。在本题目所给出的汇编子程序中,指令行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)。