[H8-ML(4230)] AKI-H8 8048F インターバルタイマ
From: "K.Mekata" <r9603536@xxxxxxxxxxxxxxx>
Date: 2003年12月18日(木)10時19分14秒
はじめましてK.Mekataです。

秋月電子のAKI-H80 と、マザーボード AE-H8MB
コンパイラは秋月電子の物を使用しています。

インタバルタイマで、LEDをちかちかさせようと考えているのですが
動作しない理由がいま1つわかりません。

自分で「これはやった」とおもっているのは、
アセンブラにより、割り込みベクタ 050Hを乗っ取る
WDTをインターバルタイマとして使用するように設定。
割り込みを有効に。

というかんじなのですが、LEDは点灯してくれません。
どうか解決方法を教えていただけませんか?

----resetv.mar

 .CPU 300HA
 .IMPORT _timer1INT
 .SECTION A,DATA,LOCATE=H'000000
 .IMPORT _main

 .DATA.L H'00100  ;リセットベクトル

    .ORG    H'000050  ;IMIA1
    .DATA.L _timer1INT

 .ORG H'000100
 MOV.L #H'FFF10,ER7 ;スタックポインタ設定
 jmp @_main
 
 .END 


--mytest.c

int timer;

void main (void)
{

 char *P4a = (char *) 0xfffc5;
 char *P4b = (char *) 0xfffc7;
 char *P4c = (char *) 0xfffda; 

 char *P5a = (char *) 0xfffc8;
 char *P5b = (char *) 0xfffca;
 char *P5c = (char *) 0xfffdb;

 char *wdta = (char *) 0xfffa8;
 char *wdtb = (char *) 0xfffa8;
 char *wdtc = (char *) 0xfffaa;

 unsigned int data;

 *P4c = 0xff;
 *P4a = 0x00;

 *P5a = 0xff;

 *wdta = 0x05a27; /* 0010 0111 */
 *wdtb = 0x0a500;


 timer=0;

 while (1) {
  if ( (*P4b & 16) == 0 ) {
   *P5b = 0xff;
  } else {
/*   *P5b = 0x00;
*/
  }

  if ( timer == 32768 ) {
   *P5b = 0xff;
  }
  if ( timer == 0 ) {
   *P5b = 0x00;
  }


 }

}

#pragma interrupt(timer1INT)
void timer1INT(void)
{
 char *wdta = (char *) 0xfffa8;
 char *wdtb = (char *) 0xfffa8;
 char *wdtc = (char *) 0xfffaa;

 char *P5a = (char *) 0xfffc8;
 char *P5b = (char *) 0xfffca;
 char *P5c = (char *) 0xfffdb;

 int dummy;
 dummy = *wdta;
 dummy &= 0x7f;
 *wdta = dummy;


 *P5a = 0xff;
 *P5b = 0xff;

 timer++;
 if ( timer > 65536 ) { timer = 0; }

}


スレッド概略
[表示中](起点)
 ├[4233(1)]
 ├[4234(2)]
 ├[4235(3)]
 ├[4236(4)]
 └[4237(5)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]