at89c4051 发表于 2008-9-1 00:41:20

关与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

w77l 发表于 2008-11-29 16:30:44

EMC&nbsp;现在的C编译器可以比较好用了,怎么还要写宏呢
页: [1]
查看完整版本: 关与EMC单片机判断整型数据范围的宏语句