![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?08b1c8b)
H8/3052Fとポテンショメータ(通信ケーブルはRS232-C)を利用して得られるA/DデータをPCに表示させようとしています。
SCIとPCに最初から入っているハイパーターミナルを利用してA/Dデータを得たいのですが上手く行きません。
参考にしている資料のサンプルプログラム(文字をPCに返す)が上手く行ったのでそれと、A/Dデータ変換プログラムを組み合わせて行いました。
ですが、結果として文字列が表示されるものの数値データが帰ってきませんでした。
組みなおしましたが、出てくるのは文字(プログラム変更で無限に出る場合あり)と無限スペース(改行?)で進展しません。
考えとしては、文字データを返すプログラム文とは別に数値データを返すプログラム文にしないといけないのかな?と、思って調べたのですがこの考えを裏づけるものはありませんでした。(着目点が違うのかもしれませんが・・・)
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
それほど長くないのであれば、ソースコード(全部)見せていただけますか?
この回答への補足
int add,add1;
char tmp[20] ;
void ioinit( void ) ;
void int_imia0( void ) ;
void ituinit() ;
void setGRA( double deg ) ;
void adinit(void)
{
AD.ADCSR.BIT.ADF = 0;
AD.ADCSR.BIT.ADIE = 0;
AD.ADCSR.BIT.ADST = 0;
AD.ADCSR.BIT.SCAN = 1;
AD.ADCSR.BIT.CKS = 1;
AD.ADCSR.BIT.CH = 1;
}
typedef enum {
BR2400 = 80,
BR4800 = 162,
BR9600 = 80,
BR19200 = 40,
BR38400 = 19,
BR57600 = 13,
BR115200 = 5,
} BaudRate;
void initSCI1 (BaudRate b)
{
int i;
SCI1.SCR.BYTE = SCI1.SMR.BYTE = 0;
SCI1.BRR = b;
for (i = 0; i < 3000; i++) ;
SCI1.SCR.BYTE = 0x30;
SCI1.SSR.BYTE;
SCI1.SSR.BYTE = 0x80;
}
void SCI1_OUT_d (char c)
{
while (SCI1.SSR.BIT.TDRE == 0) ;
SCI1.TDR = c;
SCI1.SSR.BIT.TDRE = 0;
}
void SCI1_OUT_s (char *st)
{
while (*st) SCI1_OUT_d(*st++);
}
char SCI1_IN_d (void)
{
char c;
while (!(SCI1.SSR.BYTE & 0x78)) ;
if (SCI1.SSR.BIT.RDRF == 1) {
c = SCI1.RDR;
SCI1.SSR.BIT.RDRF = 0;
}
else {
SCI1.SSR.BYTE &= 0x80;
c = 0;
}
return c;
}
int cnt ;
double T = 2.0 ;
double A = 30.0 ;
int main(void)
{
unsigned char rd = 0;
int i;
adinit();
ioinit();
ituinit();
initSCI1(BR19200);
while( P4.DR.BIT.B4 ) ;
//while(1)
SCI1_OUT_s("WELCOME!!") ;
cnt = 0 ;
ITU.TSTR.BIT.STR0 = 1;
EI;
while(1){
AD.ADCSR.BIT.ADST = 1;
while(AD.ADCSR.BIT.ADF == 0);
add = AD.ADDRA >> 6;
add1 = AD.ADDRB >> 6;
AD.ADCSR.BIT.ADF = 0;
add = (int)((add *(5.0/1024.0)*1000.0)+0.5);
add1 = (int)((add1*(5.0/1024.0)*1000.0)+0.5);
//sprintf(tmp,"%d",add) ;
//SCI1_OUT_s(tmp) ;
P5.DR.BIT.B0 = 1 ;
}
}
void int_imia0 (void)
{
ITU0.TSR.BIT.IMFA = 0;
++cnt ;
double w ;
w = -A * (2.0*PI/T) * cos( (2.0*PI/T) * (double)(cnt)/500.0 ) ;
setGRA( w ) ;
P5.DR.BIT.B1 = 0 ;
if( abs(w) < 8.58 )
P5.DR.BIT.B1 = 1 ;
sprintf( tmp, "%d", add ) ;
SCI1_OUT_s( "A/D1 : " ) ;
SCI1_OUT_s( tmp ) ;
}
void ioinit(void)
{
PB.DDR = 0xff;
P4.DDR = 0x00 ;
P4.PCR.BYTE = 0xff ;
P5.DDR = 0xff ;
P5.DR.BIT.B0 = 0 ;
P5.DR.BIT.B1 = 0 ;
}
void ituinit()
{
ITU0.TCR.BYTE = 0x22;
ITU0.GRA = 12499;
ITU0.TIER.BIT.IMIEA = 1;
ITU0.TSR.BIT.IMFA = 0;
ITU3.TCR.BYTE = 0x22;
ITU4.TCR.BYTE = 0x22;
ITU.TMDR.BIT.PWM3 = 1;
ITU.TMDR.BIT.PWM4 = 1;
ITU3.GRB = 62;
ITU4.GRB = 62;
}
void setGRA(double deg)
{
if( abs( deg ) < 8.58){
deg = 0 ;
}else if( abs( deg ) > 4537 ){
if( deg < 0 ){
deg=-4537 ;
}else{
deg=4537 ;
}
}
if( deg == 0 ){
ITU.TSTR.BIT.STR3 = 0 ;
ITU.TSTR.BIT.STR4 = 0 ;
}else if(deg>0){
ITU.TSTR.BIT.STR3 = 1 ;
ITU.TSTR.BIT.STR4 = 0 ;
ITU3.GRA = (180000.0*25.0/(8.0*deg))-1.0;
}
else{
deg *= -1 ;
ITU.TSTR.BIT.STR3 = 0 ;
ITU.TSTR.BIT.STR4 = 1 ;
ITU4.GRA = (180000.0*25.0/(8.0*deg))-1.0;
}
}
以上です。コメントされているところを有効にしたりすると、無限改行?になったりします。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Visual Basic(VBA) Excel VBA 書式変更で困ってます。 オートフィルターの日付フィルターを用いて データの絞り込 2 2022/07/26 22:16
- その他(Microsoft Office) wordの差し込み印刷での日付表示 2 2023/08/15 16:51
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
配列でデータが入っている要素...
-
メモ帳(テキストデータ)をExc...
-
【エクセル】測定時間がバラバ...
-
ブレーカー落ちで壊れたりしな...
-
配列の勉強をしています。使用...
-
VB RS-232C 通信プログラム
-
多量のSUMIF式を軽くしたい
-
アクセス2000で画像データ...
-
0が含まれる幾何平均が「#NUM!」
-
パースとはなんですか?
-
Excellで並べ替えについて(記号...
-
Accessで該当データにフラグを...
-
ExcelデータをVB.netで検索する...
-
VB6でCSVの取込をする
-
Excel VBAでのオートフィルター...
-
[C言語] コメント文字列を無視...
-
javaのsocket通信で20KB以上の...
-
ドラゴンクエストのぼうけんの...
-
Excelのマクロでワードのテキス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
【エクセル】測定時間がバラバ...
-
VBA 空白セルを削除ではない方...
-
メモ帳(テキストデータ)をExc...
-
配列でデータが入っている要素...
-
ブレーカー落ちで壊れたりしな...
-
特定のデータの抽出方法を教え...
-
エクセルで2つの時系列のデー...
-
EXCELVBAでSQLserverからデータ...
-
VBAを使ってOutlookメール本文...
-
Accessで該当データにフラグを...
-
この行は既に別のテーブルに属...
-
[C言語] コメント文字列を無視...
-
ユーザーフォームのテキストボ...
-
二分探索の平均探索回数
-
Excel VBAでのオートフィルター...
-
多量のSUMIF式を軽くしたい
-
カンマからスラッシュに
-
CString型の文字列連結について
-
C# でDataTableの更新を高速化...
おすすめ情報