17/02/22 18:48:18.83 Db7MQC2T.net
>>490
もともとは、ISR()のエピローグ/プロローグが大きいんで削りたい、ってのが目的なんだけど
該当部分の、具体的な該当コードは↓、石はPIC18F14K50
void IsrHigh(void);
uint16_t wTxData;
asm ("global _IsrHighFook");
void IsrHighFook(void) @ 0x0808
{
asm("goto _IsrHigh");
}
void IsrHigh(void)
{
#asm
btfss RABIF_bit, c
bra ret_ie
bcf RABIF_bit, c
btfsc _wTxData, 0, c
btfss RB7_bit, c
bra rst_rc5
set_rc5: <- ラベルを使ったところに 赤!
bsf RC5_bit, c
bra ret_ie
rst_rc5: <-赤!
bcf RC5_bit, c
ret_ie: <-赤!
retfie f
#endasm
} <- ここにも 赤!
確かに、ご指摘の方法で済む処はそんな風にして逃げたりしてる
下のように書き換えると
asm ("btfss RABIF_bit, c"); <- この手のが通らない
asm ("btfss INTCON, 0, c"); <- こんな風にベタで書くと通るのは解ったけど
どっちも、イマイチなんだよね