はじめまして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; }
}