头文件:intrins.h
库函数:_crol_()
编译器版本:3.20
原函数反汇编如下(截取自程序段):
...
mov r0,#01h ;var=_crol_(var,1)
mov r7,06h ;var's address is 06h,temp var
mov a,r7
inc r0
sjmp jp2
jp1:
rl a
jp2:
djnz r0,jp1
--> ;此处并没有将数据写回var(address is 06H)
rrc a ;out_dat=var&0x01
mov 0a2h,c ;
...
相同的函数在keil7.01下编译为:
...
mov r7,44h ;var=_crol_(var,1);
mov r0,#01h
mov a,r7
inc r0
sjmp jp2
jp1:
rl a
jp2:
djnz r0,jp1
mov r7,a ;此处将数据写回var(address is 44h),ram var
mov 44h,r7
;以下为其他操作
mov a,44h ;out_dat=var&0x01
rrc a
...
相信现在有很多人仍习惯于使用以前的franklin命令行编译器。至少我就一直在用。
写好一个批处理 , 一条命令完成全部工作,很舒服。不过希望那些怀旧的单片机程序
开发者,以后要慎用它了。FranklinC库中其他函数是否有问题,我不知道。不过既然
keil编译出来的程序没问题,那么我们不妨全都转到keil下。