槫林です。
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; }
>>
>>}
>>
>>
>>
>>
>
>
>
>
>
>