[H8-ML(4239)] Re: AKI-H8 8048F インターバルタイマ
From: 槫林 <mkurebayashi@xxxxxxxxxxxxxxxxxx>
Date: 2003年12月19日(金)08時34分18秒
槫林です。

int型の最大は32767ですね・・・・。
申し訳ないです。

槫林 wrote:
> 槫林です。
> 
> 何処がLEDの表示かわかりませんが(たぶん*P5bかな?)、
> timerがint型だからじゃないでしょうか?
> int型の最大は32768だと思うので、その辺から崩れているでわ?
> あと、ポートはvolatileで宣言した方が良いかと。
> 違ったら、どなたか私にツッコミを入れてください。
> 
> でわ
> 
> K.Mekata wrote:
> 
>>はじめまして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; }
>>
>>}
>>
>>
>>
>>
> 
> 
> 
> 
> 
> 



スレッド概略
[4230(R)](起点)
 └[4234(U)]
   └[表示中]
     └[4240(1)]


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


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