关与EMC单片机判断整型数据范围的宏语句
今天做了一个整型数据范围判断的宏语句,不怕高手们笑话,我从下午2点一直做到现在发贴,但还是感觉不满意,语句太多了!!!同行们有做EMC单片机经验丰富的给我一个简短的宏,谢谢!!!!!!
下面是我做的宏,请同行们提出宝贵意见!!!
/**********************************************/
这个宏用C表达出来就是
if( ( downH_downL <= HIBIT_LOWBIT)&& (HIBIT_LOWBIT <= upH_upL ) )
{ ACC=1;}
else
{ACC=0;}
/******************************/
HIBIT:整型数据的高8位
LOWBIT:整型数据的底8位
@downH:下限值的高8位
@downL:下限值的底8位
@upH:上限值的高8位
@upL:上限值的底8位
INrange MACRO HIBIT,LOWBIT,@downH,@downL,@upH,@upL
MOV A,@downL
SUB A,LOWBIT
JBS R3,C;
JMP $+6 ;跳到借位程序
MOV A,@downH
SUB A,HIBIT;
JBS R3,C;
JMP $+35;NO;跳转到赋假标志值
JMP $+12;COMPAup; 跳到上限值比较
MOV A,@1;开始借位程序
SUB A,HIBIT;
JBS R3,C;
JMP $+30;HIBIT==0,不能借位,跳转到赋假标志值
DEC HIBIT;HIBIT>=1,可以借位,故将HIBIT减一
MOV A,@downH;
SUB A,HIBIT;
INC HIBIT;将HIBI值还原
JBC R3,C;
JMP $+2;HI_TLOW>=downH_downL,跳到上限值比较程序
JMP $+23; HI_LOW<downH_downL,跳到赋假标志值
MOV A, LOWBIT;开始上限值比较
SUB A,@upL
JBS R3,C;
JMP $+6;跳到借位程序
MOV A,HIBIT;
SUB A,@upH;
JBS R3,C;
JMP $+15;;跳转到赋假标志值
JMP $+12;;跳转到赋真标志值
mov a,@0xff ;开始借位程序
SUB A,HIBIT;
JBS R3,C;
JMP $+2;
JMP $+9; HI_LOW> upH_upL 转到赋假标志值
INC HIBIT;HIBIT不等于0XFF,可以借位,故将HIBIT加一
MOV A,HIBIT;
SUB A,@upH;
DEC HIBIT;还原HIBIT
JBS R3,C;
JMP $+3;;跳转到赋假标志值
mov a,@1;
JMP $+2; 跳出这个宏
mov a,@0;
endm EMC 现在的C编译器可以比较好用了,怎么还要写宏呢
页:
[1]