
HEWのプログラミングで、割り込みの勉強をしているんですが
なかなかうまくいきません・・・
割り込みを使わないで、実験回路のLEDをスイッチを押すことで
つけることはできました。
が、割り込みを使うとアドレスエラーとなり実行できません。。。
割り込みのプログラムはこんな感じです。
// vector 66 External trap IRQ2
__interrupt(vect=66) void INT_IRQ2(void){
led_out[0] = 0x00; //LEDを消す
if(P1.PORT.BIT.B0 == 0) //スイッチが押されたら
{
led_out[0] = led[0]; //押されている間、点灯する
}
P2.DR.BYTE = led_out[0];
}
mainプログラムは、
#include "iodefine.h"
#include <machine.h>
const unsigned char led[8] = {
//0 1 2 3 4 5 6 7
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80
};
unsigned char led_out[8];
void main(void)
{
P2.DDR = 0xff;//ledを出力に設定
P1.DDR = 0x00;//全部入力に設定
INT_IRQ2();
set_imask_ccr(0);
while(1)
{
}
}
割り込みの設定がわるいのでしょうか?
スイッチは、P1に接続してLEDはP2に接続しています・・・
No.1ベストアンサー
- 回答日時:
mainの中からINT_IRQ2()を呼び出しちゃいけません。
割り込み処理関数は「特殊な呼ばれ方」をするので「特殊な戻り方」をするようになっています。
それなのに「mainの中から普通の呼び方で呼ぶ」と「特殊な戻り方」をしようとして辻褄が合わなくなり、暴走します。
割り込みからもmainからも、どちらからも同じ処理をしたいなら、以下のように「どっちからも呼ぶ、普通の関数」を作りましょう。
#include "iodefine.h"
#include <machine.h>
const unsigned char led[8] = {
//0 1 2 3 4 5 6 7
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80
};
unsigned char led_out[8];
void set_led(void) {
led_out[0] = 0x00; //LEDを消す
if(P1.PORT.BIT.B0 == 0) //スイッチが押されたら
{
led_out[0] = led[0]; //押されている間、点灯する
}
P2.DR.BYTE = led_out[0];
}
// vector 66 External trap IRQ2
__interrupt(vect=66) void INT_IRQ2(void){
set_led();
}
void main(void)
{
P2.DDR = 0xff;//ledを出力に設定
P1.DDR = 0x00;//全部入力に設定
set_led();//INT_IRQ2()は呼んではいけない
set_imask_ccr(0);
while(1)
{
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 照明・ライト 懐中電灯は、スイッチを一回押すとランタン用のLEDが点いて、もう一回押すと懐中電灯用の別のLED電球 1 2023/04/05 20:18
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- その他(趣味・アウトドア・車) Arudino nanoが正常に動作しない原因 1 2022/10/30 18:29
- 照明・ライト LED照明 4 2023/04/20 12:17
- 照明・ライト 調光スイッチとLED電球の組み合わせについて 5 2022/11/21 11:46
- Microsoft ASP LEDで電光掲示板に「A B C D E」と表示したいのですが・・・ 1 2023/07/04 07:37
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- その他(パソコン・周辺機器) USB端子間に挟んで使う、スイッチのような物は売られていますか。 3 2022/08/25 22:26
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MachXO2の内部クロックの設定
-
Excelで文字の点滅方法
-
センサーライトについて
-
スマートキーの赤い点滅ランプ...
-
仕事場で帰る際、電気のスイッ...
-
蛍光灯の点灯時にだけ、時々、...
-
フォグランプ
-
ダイアグとは・・・?
-
【軽自動車のO/D OFFが運転席の...
-
PD対応充電ケーブルのランプの...
-
PCXのスマートキーでエンジンを...
-
トイレ使用中の人感センサーラ...
-
IHコンロが、この様な状態にな...
-
tiktokライトの大会は年何回あ...
-
F5 BIG-IPの待機系の...
-
至急お願いします スマホを落と...
-
車の前の方のライト?をピンク...
-
デスクライトタッチセンサーの原理
-
シーリングライト(蛍光灯からL...
-
駐車場で
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MachXO2の内部クロックの設定
-
Excelで文字の点滅方法
-
トイレ使用中の人感センサーラ...
-
スマートキーの赤い点滅ランプ...
-
EAのゲームで画面が点滅する
-
LEDライトから出る放射線はライ...
-
仕事場で帰る際、電気のスイッ...
-
単三電池一本でLEDが点灯する商...
-
PD対応充電ケーブルのランプの...
-
ダイアグとは・・・?
-
LED電球を付け替えしようと...
-
鉄製品の表面に溝が掘ってあり...
-
車の前の方のライト?をピンク...
-
蛍光灯が一回で点灯しません。
-
雷が近くでなっている時に、リ...
-
PS3コントローラーが充電できな...
-
電球の明るさで45ルーメンとい...
-
バッテリー女が次のようなもの...
-
USBメモリーのアクセスラン...
-
人感センサーライトが何もない...
おすすめ情報