你好
这个问题回答透彻比较繁琐,楼上的两位说的都不错,我这样解释,不知你能明白吗。
1.void delay() 是一个子程序的名字,是软件
2.{ for(i=0;i<10;i++) } 是这个子程序的内容,作用 操作硬件的软件,操作的硬件i(名字)。
3. unsigned char i;定义该子程序操作的硬件(内存中的一个
寄存器,数值范围0-255),无符号8位变量,想这个你应该知道。
你要是学习过汇编,这个就不难理解,下面给出这个程序的汇编,你对比一下,示例说明,不一定能用,哈哈,好久没玩过汇编,都快忘记了。就是说明
c语言与汇编的异同。
equ i 0030H //定义内存地址30(
16进制)的寄存器为i,在汇编中,也可不定义,直接对30H进行操作。汇编中数字不带H,为10进制,后缀带H为16进制。
delay: //定义子程序,方便调用,也可为其他名字,如loop1等。
L1:inc i //寄存器i(30H)加一。L1为行号。
cjne i 10 L1 //比较不等则转,这里回到上一行。相等则往下执行。
ret //子程序返回
对于你对楼上两位的追问,c语言就是一个平台(或者说环境),就像一个游戏,你想玩好就必须遵从
游戏规则,或者说他就是这样用才行,否则免谈。
再说一下unsigned char i;就是c语言按自身的规定,或随机给你定义一个可操作的51内存变量,不一定是30H,可能是30H-07FFH中的任何一个,想搞明白,的详细研究c了。不过作为c51的应用,会用就行,就行office的
办公软件,会用就好,没必要去追究他是怎么运行的。