フライトのようす1 (メディアプレーヤ用, 約4.3MB)
フライトのようす2 (リアルプレーヤ用, 約6.3MB)
◇CD-ROMに収録したプログラムの修正版
ダウンロードの前にお読みください
irxs411.zipのダウンロード (5KB)
irxs411.asm irxs411.HEX ファイルが収録されています.
LP1 MOVLW D'25' ; 2.5ms以上のギャップを検出するための25を
MOVWF COUNT ; COUNTにセット
LP2 BTFSS GPIO, 3 ; 入力がHighならスキップしてギャップかチェック
GOTO LP1 ; 入力がLowの間ここでループ
CALL WAIT ; 100μs待ち
DECF COUNT, F ; COUNTをデクリメント
BTFSC STATUS, Z ; ギャップでなければスキップ
GOTO LP3 ; ギャップなら検出完了でLP3へ
BTFSC GPIO, 3 ; 入力がLowならスキップして
GOTO LP2
GOTO LP1 ; ギャップを検出するためにLP1へ
p.126 リスト7.1
delay(500); 2ヵ所を → delay(244);
[補足事項]
delay( )関数の引数にchar型を宣言した場合、引数として渡せるのは255(FFh)までとなります。
リスト7.1ではdelay(char);と宣言して、引数に500(1F4h)を使っていますが、
この場合下位8ビットの244(F4h)だけが引数として渡されることになります。
引数として500を渡すためにはdelay( )関数の引数に16ビットのunsigned long型かlong型を
宣言する必要があります。
char型を使う場合は2回に分けるなどの工夫が必要です。
リスト7.1のdelay( )関数の引数にunsigned long型を使ったプログラム例を下記に示します。
#include hexcodes.h;
#pragma config |= 0x2184
void delay(unsigned long millisec)
{
uns8 i;
do {
TMR0 = 0;
while (TMR0 < 61)
;
} while (-- millisec > 0);
for (i = 0; i < 255; i++)
;
for (i = 0; i < 207; i++)
;
}
void main(void)
{
#pragma update_RP 1
#asm
DW __CALL(0x3ff)
#endasm
OSCCAL = W;
TRISIO = 0b.0000.0000;
OPTION_REG = 0b.0000.0011;
CMCON = 0b.0000.0111;
#pragma update_RP 0
GPIO = 0b.0000.0000;
for(;;) {
GPIO4 = 1;
delay(500); // 499.997msec
nop2(); // タイム調整
GPIO4 = 0;
delay(500);
}
}
◇CD-ROMに収録したプログラムの修正版
ダウンロードの前にお読みください
irxs.zip のダウンロード (3KB)
以下のファイルが収録されています。
irxs300.asm irxs400.asm irxs300.HEX irxs400.HEX