H8を使ってモータを、正逆回転するプログラムについてです。 よろしくお願いします。
H8(3067F.h)を使って2.5Vを基準として、2.5Vより上5.0まで正転し、2.5V以下0Vなら逆転、2.5Vなら静止するプログラムを作成したいのですが正逆回転のところで困っています。
#include <3067F.h>
#pragma interrupt(adi)
void initITU(void);
void initITU1(void);
void initAD(void);
void initPA(void);
main()
{
initPA();
initAD();
initITU();
initITU1();/* Initalize ITU ch1 */
ITU.TSTR.BIT.STR1 = 1;/* Start ITU ch1 */
AD.CSR.BIT.ADST = 1;/* A/D変換 start */
while(1){
;
}
}
void initPA(void){
PADDR = 0xff;/* PortA 出力モード */
PADR.BYTE = 0x00;/* PA Clear */
}
void initAD(void){
AD.CR.BIT.TRGE = 0;/* AD変換外部トリガ開始禁止 */
AD.CSR.BYTE = 0x00;/* ADCSR初期化, ch0のみ */
AD.CSR.BIT.ADIE = 1;/* AD変換終了後割り込み */
AD.CSR.BIT.CKS = 0;/* AD変換時間 : 135ステート */
AD.CSR.BIT.SCAN = 0;/* 単一モード */
}
void initITU(void)
{
ITU.TSTR.BYTE = 0x00;
ITU.TSNC.BYTE = 0x00;
ITU.TISRA.BYTE = 0x00;/* Disable Interruption */
ITU.TISRB.BYTE = 0x00;/* Disable Interruption */
ITU.TISRC.BYTE = 0x00;/* Disable Interruption */
}
void initITU1(void)
{
ITU.TMDR.BIT.PWM1 = 1;/* CH1 PWM mode */
ITU1.TCR.BYTE = 0x20;/* clear GRA comparematch,1/clock */
ITU1.GRA = 0;/* A/D変換器の保証bitは上位8bit */
ITU1.GRB = 0;
ITU1.TIOR.BYTE = 0X00;/* prohibit GRA&GRB'output of comparematch */
}
void adi(void)
{
AD.CSR.BIT.ADST = 0;/* A/D変換停止 */
if(AD.DRA && 0x80)/* open */
{
PADR.BIT.B1 = 1;
PADR.BIT.B2 = 0;
ITU1.GRB = (AD.DRA >> 8);
}
else{
(AD.DRA - 0x80) = 0/* close */
PADR.BIT.B1 = 1;
PADR.BIT.B2 = 0;
ITU1.GRB = (AD.DRA >> 8);
}
AD.CSR.BIT.ADF = 0;
AD.CSR.BIT.ADST = 1;/* A/D変換開始 */
}
プログラムは、このようになっています。
AD変換停止後のif文のあたりでコンパイルできなくなるのですがどうしたらいいでしょうか?
お願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
別にビット論理積とANDを間違えたところで意図しない動作にはなってもコンパイルエラーにはならないんじゃないかなぁ。
むしろコンパイルエラーはこれではなかろーかと。
> (AD.DRA - 0x80) = 0/* close */
ぶっちゃけ何がしたい行なのかさっぱり不明ですが、
・行終端がない
・左辺が通らない(はず)
ありがとうございます。
言葉足らずになっていて、ご迷惑をかけました。
初投稿なので少し戸惑ってしまっていました。次回からはもう少ししっかりとした物にしてから質問点とともに投稿したいと思います。
ご注意と回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# C言語 共用体について コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1 4 2022/04/25 20:34
- その他(AV機器・カメラ) オーディオインターフェイスの24bitなど量子化bit数はどこで設定できるのでしょうか? 1 2022/06/26 07:58
- 英語 インタビューの英語 2 2022/06/07 14:22
- 英語 できるだけ直訳で英語の翻訳をお願いします。(英語→日本語) 1 2022/10/15 20:59
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- その他(プログラミング・Web制作) python fbprophetについて 1 2022/09/29 19:44
- 英語 英語得意な方、お願いします。 5 2022/08/20 14:08
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
int main()、void main()、void...
-
【gcc・cygwin】multiple defin...
-
既定のコンストラクタがありま...
-
多重定義が起きている?--lnk20...
-
【VC++6.0】イベントハンドラ関...
-
静的でないメンバ関数の呼び出...
-
ArduinoでMouse関数を使用して...
-
Notepad++の関数リスト表示の変...
-
プログラミング初心者です。C言...
-
C言語 ① 5秒間 1秒間隔で点滅を...
-
戻り値を返す関数の前に(void)...
-
C# Controls.Addで動的に配置し...
-
typedef unsigned int UINT;が...
-
_beginthreadにて発生するコン...
-
(void)0 はどんな意味ですか
-
void main()って誰が最初?:AN...
-
critical error c0000005
-
gcc: incompatible pointer type
-
privateなnamespaceメンバ
-
SC_SIZEがわからない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Notepad++の関数リスト表示の変...
-
ArduinoでMouse関数を使用して...
-
【gcc・cygwin】multiple defin...
-
戻り値を返す関数の前に(void)...
-
多重定義が起きている?--lnk20...
-
C++にてtemplateで受け取った任...
-
既定のコンストラクタがありま...
-
静的でないメンバ関数の呼び出...
-
gcc: incompatible pointer type
-
C# Controls.Addで動的に配置し...
-
int main()、void main()、void...
-
(void)0 はどんな意味ですか
-
VC++でGetKeyboardStateがうま...
-
void*型の配列について
-
C# KeyDownイベントでショート...
-
const_castのつかいどころを教...
-
H8マイコンのシリアル通信につ...
-
コールバックって・・・
-
関数ポインタについて
-
void main()って誰が最初?:AN...
おすすめ情報