全体表示

[ リスト | 詳細 ]

記事検索
検索

全26ページ

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]

[ 前のページ | 次のページ ]

完成コードなど

一応、僕なりに

完成したプログラムを
ブリーフケースに入れておくことにしました

自分のハードディスクはよくクラッシュあるいは
リナックスなどOSの入れ替えなどで全部クリーンにして

しまうこともあるので、外部のメモリエリアを使ってます


今のところ

レジスタ検査用のC言語版(実態はアセンブラ)インクルードファイル
78k0用のマクロアセンブラ基本形が入れてあります。

マクロアセンブラの書法って
擬似命令が多くって、ややこしい。。。

セグメントもぜーーんぶ、固定した単純な形式のを
自分の覚え用に記載しておきます。


コンパイルの際は
通常、スタート番地が記載された
RamStart.asm または
RomStart.asm をプロジェクトから削除しておくこと


LEDを明滅させるコードです

@@CNST      CSEG
@@R_INIT    CSEG	
@@INIT	 DSEG	
@@DATA  	 DSEG	
@@R_INIS	 CSEG	
@@CODE  	 CSEG
TSTA CSEG    AT      0F000H  ;RamStart.asmはプロジェクトから削除
_main:

	push	hl
	clr1	PM6.1

L004:
	movw	hl,#00H

L005:
	movw	ax,hl
	cmpw	ax,#07530H
	or1	CY,a.7
	bnc 	$L006
	incw	hl
	br		$L005

L006:
	set1	CY
	xor1	CY,P6.1
	mov1	P6.1,CY
	br 		$L004

	pop	hl
	xor a,a
	ret
	END

割り込み処理の前準備



やっと、入力を感知しての割り込み制御の準備に入れそうです

当初、USBを通じて、キーボードからのインキーをスキャンして

割り込みモードに入ろうと思ったのですが

今回の78k0ではbiosの関係上できないようです。

したがって、いずれかのポートの入力状態を感知して

何らかの割り込みを行うようにしたいと思った次第です


そこで、今回はポート12からスイッチを感知して
内臓LEDを明滅させることを考えてます

まずは、ループ処理のなかで、感知と明滅がうまく動くかの確認です。

スイッチ構造は、ブレッドボード上で
P12とV5の間に抵抗をいれて、それから
P12とGNDの間をジャンパコードでショートさせるという方法にしました。

結果は、見事明滅しました。


//list5_1.c
#pragma sfr

void func01(){                    //本当の割り込み処理ではここを割り込みルーチンに変える
	short i;
	for(i=0;i<30000;i++){}
	P6.1 ^= 0x01;
	}

void main(){
	PM6.1 = 0;
	PM1.2 = 1;
	while(1){
	if(P1.2 == 0) func01();
	}

}
トランジスタ技術8月号P147のリスト5

PM1.2 の ポートって 0じゃなく 1じゃないでしょうか????

雑誌によると PM1.2 = 0  とありますが
次のページの 図25 upd78f0730のI/Oポート制御レジスタ の図を見ても
入力モードは 1のはずです。。。

雑誌のコードそのままで実行すると、すぐに終了してしまいます

ちなみに、僕は PM1.2 = 1 にすると ちゃんと正常に
スイッチオンで breakとなります。。。


以下がその成功コードです。
//list5
#pragma sfr
#include "trgbios.h"

void main(){

	PM1.2 = 1; //スイッチのポートを入力にする  <−−−−−−−注意点
	trg_puts("P12に接続したスイッチを押してください\n");
	while(1){
	
	  if(P1.2 == 0) break;	
	
	}
	trg_puts("スイッチが押されました\n");


}

トランジスタの疑問

トランジスタの2SA1015と2SC1815は「コンプリメンタリ」といわれるようですが
何のことやら???

規格が一緒みたいなことが書いてありますが、出力方向がエミッタとコレクタで
異なるだけで、かける抵抗値やバイアスに対する出力特性は一緒ってことで

結局、今回の場合リレーを”E"側か”c”側かどっちにつなぐかということで
いいのかなぁぁぁ???

実は、最初マルツ電波さんのページを見てたけど、2SA1015しかなかったので
躊躇してしまって。。。。




イメージ 1

イメージ 2

ネットで探すと、発振回路などでちょうどこの両方のトランジスタを使っているようですが
コンプリメンタリ?というならひとつの(一種類の)トランジスタで回路つくれば良いじゃんって
シロート的には思っちゃうんですがぁぁぁ

全26ページ

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]

[ 前のページ | 次のページ ]


.


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事