使用ASM的时候,变量只能字符型,也就是单字节操作,从代码看就是一条指令,4M振荡时即为1US
当使用C语言时,因为你定义的变量为整型,也就是两个字节,对应的机器指令肯定就大于等于两条了,如果是两条无跳转指令 ...
yewuyi 发表于 2011-4-19 13:46  听了老师的话,我去查看了下.as的编译文件,发现单单int k=0;可以有7条指令如:
;shine00.c: 29: int k=0;
movlw low(0)
bcf status, 5 ;RP0=0, select bank0
bcf status, 6 ;RP1=0, select bank0
movwf ([email=DELAY2@k]DELAY2@k[/email])
movlw high(0)
movwf (([email=DELAY2@k))+1]DELAY2@k))+1[/email]
写int k=0;k++;就有14条指令。所以有20us的脉冲。我真是糊涂,是第一次看到c语言的指令的编译汇编形式,呵呵
|