2025/04/05(土)MCS-48 8048と8243を使った構成での注意事項(覚書)

久しぶりにMCS-48システムのプログラムを書くにあたって自分への覚書
  1. P2(0-3)はP4-P7を使うとラッチされたデータは失われる
  2. BUSポートを他と共用する場合はMOVX命令を使いINS A,BUS/OUTL BUS,A/ANL BUS,#/ORL BUS,#は使わないこと
  3. 8243は8048の疑似双方向ポートではない。ポート(4ビット)単位で入力または出力ポートとして機能する

続きを読む

2021/05/11(火)MCS48 8048ボードにピンソケットの追加

2006年に製作したボードにピンソケットを追加

Arduino用に購入した7SEGのLEDモジュールを8048で使って見たくて2006年に製作したボードにピンソケットを追加してみた。プログラムの作成には相変わらずアセンブラとPROMライタによる書き込みとソケット抜き差しが必要だがこれで少しはこのボードの有効活用が出来るかな。

8048開発ボード

2021/04/09(金)8048マイコンと直結可能なデバイスを調べてみた

8CHトランジスタアレイ

秋月電子さんのページには8CHトランジスタアレイとしてTD62083とTBD62083の両方が売っている。この2つの違いはTD62083がダーリントントランジスタでTBD62083がMOSトランジスタ。入力PINに流れる電流が異なる。データシートから読み取るにTD62083は2.7V/1mAでTBD62083は2.5V/0.1mA。8048の出力はCMOSでは無くHレベルの出力電流はとても少ない(VoH=2.5V/-50uA)。試して見たいなぁ。

23LC512 SPI SRAM

同じく秋月さんに23LC512が売っている。これはSPIインターフェースのSRAMでこれも8048に接続して使用出来そう。SPI通信なら同期通信なのでソフトウェアでなんとでもなる。問題なのは8048にはUARTが無いので非同期シリアル通信を効率よく裁けないことだ。SPI通信のUARTデバイスだとMAX3100があるけれど入手は難しそうだな。

2007/05/08(火)8048の外付け領域をFeRAMに換装

8048ボードの自己書き換え成功

もう1年以上も前に作った8048マイコンボードV2による自己書き換えに成功した。但し、自己書き換えと言っても8748の内部EPROMではないけど。外部プログラムメモリーとしてEEPROMのX2816を使った場合は書き込み後に暫くアドレス線を静止させなければならず、8048ではこれが非常に難しく暗礁に乗り上げたままだった。

しかし世の中にはRAMTRONのFRAM FM1608というデバイスがある事を知り、SRAMのように書き込めROMのように扱える夢のデバイスがある。今回はこれに置き換えて挑戦してみた

続きを読む

2006/11/18(土)8048と24LC64

シリアル EEPROM 24LC64

20061118_0.jpg

8048マイコンボードの空きスペースに24LC64を追加して、I2C経由でシリアルEEPROMの制御に挑戦。

マイクロチップのWEBサイトに日本語のデータシートがあるのを始め、東芝のWEBサイトにも4KBitではあるが、同じ2線式の製品のデータシートを参考に作ってみた。2線式でデータ線は基本的にプルアップされたラインを入出力で扱う訳で、8048の擬似入出力ポートとピッタリマッチ。

温度ロガー

このボードにはDS18B20/DS1822とLCDが付いているが、これで部屋の温度を定期的にこのEEPROMに記録して行けば、実用的な物が仕上がるなぁ。あと、時間も正確に判れば最高だな。クロックを正確に6MHzにトリミングするか、はたまたリアルタイムクロックなチップを取り付けるかどうしようかな。

2816大活躍

このボードは8748/8749用に作った物だが、一応外部ROMとして2716用のソケットを付けておいて大正解。2716コンパチブルなEEPROMの2816(x2816)で開発を行っているが、今回も大活躍だ。消去しなくて良いのはもちろん、書き込み時間も短い。現在XICORの名前はなく、2004年の3月にIntersil社に買収されてしまったが、EEPROM製品はまだ64KBIT以上は入手可能らしい。まぁ今時2KBYTEだとかパラレルだとかは時代遅れなんですがね。あっ8048自体が1976年の物か。30年は経ってるな。

2006/06/04(日)8048使用 デジタル温度計 V2 完成

今度は個人宅でサーバー運用

実は、このprotom.orgって色々な所で寄生していて、昨日の夜11時に旧サーバを停止して、本日の昼には立ち上がる予定だったんですが、DNSサーバのキャッシュ時間を縮めておくのを忘れたため、周辺のPCがなかなか新IPアドレスに向いてくれなくて右往左往してしまいました。

配線完了

LED 8048 温度計

約3時間かかりました。しかし、7SEGのLEDのスタティック駆動って結局全部の本数を配線するって事ですね。最後は少し嫌になりました・・

まっ、いつものUEW線での配線なんですが、ちょっと込み入ってますね。

小さく作るにはテクニックより目の良さと集中力が必要だな。

なんとか簡単にプリント基板って作れない物だろうか。

CD-Rに直接プリントとかってプリンターがあるから、プリント基板に直接パターンを印刷して、そのままエッチングっていうプリンター無いでしょうか。

8048デジタル温度計 V2 完成

LED 8048 温度計

DS18B20はほんとに凄い。無校正の状態で0.1℃単位で測定出来るそれにデータシートでは誤差0.5℃だ。が、この8748バージョンは失敗だった。折角出来たのでデジカメで写真を撮っていると、温度がどんどん上がっていくのが確認できる。

最初は、電気スタンドのライトの光が当たってそれが影響しているのかなと思った・・・が、

設計ミス

何気なく8748を指で触れるとあちちち!かなり熱いのである。やっぱり、LEDとポート直結はまずかったらしい。いくら同じIntelだからって、何時からおまえはPentiumになったんだ!といわんばかりの熱さだ。しかし、今更各ポートに抵抗を付けるスペースなど基板の何処にもないのだ!あー。3時間かけてUEW線をハンダ付けしたのはなんだったんだ?もう寝よ。

100Ω

で、取り急ぎ、LEDのコモンからVCCへの配線の途中に100オーム入れて見ました(7セグのLED3個で100オームの抵抗一本を共有)これがドンピシャで、8748は熱くなりません。明るさもまぁまぁ。今晩はこのボードを枕元に置いて寝てみよう。火事にならないよね。きっと。

2006/03/26(日)MCS48 8048ボード EEPROM セルフプログラミング

EE-PROMの動作

8048ボードV2ではプログラムメモリーを自己書き換えできるように設計したが、上手く動作せず日曜日を一日費やすが結局上手くいかず挫折。movx @R0,A などで書き込んだ瞬間に8048の動作が変になってしまう。これは予想だが、書き込みが完了するまでは次の動作に移れないのではないだろうか。

今回用いているX2816BPの資料はみつからないが同等品種のX2816Cでは書き込みが完了するまではD7のビットには最後に書き込んだデータの反転ビットが現れると書いてある。つまり今回の構成では書き込み命令を発行した瞬間に、次のプログラムのインストラクションフェッチサイクルではとんでもない命令を実行してしまうという事だろうか。

74LS123を使って書き込み後に5msの間CPUを停止するように8048のSS端子に接続して見たがこれも上手く行かない。これが上手く行かないのはなぜか現在では理解できない。

内蔵モードならOK

20060326_1.jpg

それでは8748の出番である。8748の内蔵プログラムから外付けのEE-PROMに対して書き込みを行ったらどうだろうか。急いでボードにジャンパーを取り付けて内蔵/外付けモード切替式に改造。全く同じプログラムを8748に書き込んで起動すると何事も無かったようにプログラムはスルスルと走り切る。その後EE-PROMの2816をライターで読み出すと見事にデータが書き込まれている。仕組みは至極簡単。アドレス上位3ビットをP20-P22にOUTL P2,Aで書き込んだ後、下位アドレスをR0にデータをAccにセットしてMOVX @R0,Aするだけ。その後5mS分をループで費やすも良し、MOVX A,@R0で書き込んだデータと同じ値が返って来るまでポーリングしても良しだ。

IMSA-48

では一体どんな回路になっているんだろうか。やはり、外付けプログラムメモリーをEE-PROMにして尚且つ自分自身を書き換えるのは無理があるのか。

この写真で見る限りやっぱりRAMにしないとダメだろうか。ちなみにIMSAI 8048についてはこちらを参照

2022.11.30 追記 こちらのサイトにマニュアル・回路図までアップロードしてありました。

https://vintagecomputer.ca/imsai-8048-control-computer

PRAM

共立電子 PRAM-64

何年か前に大阪の共立電子で「PRAM-64」なる物を\100-で購入してきた事があり8048の自己書き換えが上手く行かずに途方にくれている時、気分転換にこのPRAM-64の書き込みに挑戦してみた。データシートがないのでなんとも言えないが、これは多分、消去しなくて良いEP-ROMの代替品ではないだろうか。

という事で早速ROMライターに差し込んで、デバイスは多分2764だろうという事で書き込みをするが、当然の如くエラーとなる。本体にはスイッチが付いておりこれの役割も不明。格闘する事一時間。なんと書き込みに成功した。以下は結果だけを記録してお

スイッチを下側に倒して一旦ブランクチェックを行う。これによって全アドレスがFFになる

今度はスイッチを上側に倒して通常通り書き込みを行う

書き込みデバイスとしてIntel2764のQuickアルゴリズムを使う

しかしどうやってRAMの全領域をFFにセットしているのだろうか?もしかしてこのRAMって電源を切った後の初期データが全部FFとか?

2005/11/27(日)8048を使った室温モニター

またまた8048

8048な室温モニター

約2年間もこのボードでせっせと8048していますが、回路図って描いたことありませんでした。書くほどの事は無かったという感じです。

この図で左側の部分が今回のメインで、TTL発振回路の抵抗の部分にサーミスタが入っています

サーミスタは温度に敏感に反応して抵抗値が高く(温度が下がる)なったり低くなったり(温度が上がる)しますので、結果この発振回路のパルス幅は温度と共に変化します。

8048でこのパルス幅を読み取って、変化したらBEEP音を鳴らそうという物です。久しく8048を使ってないのとアナログ回路も超久しぶりだったので、結局丸一日を費やすことになってしまった。

発振回路

8048な室温モニター

最初ここに74LS04を使ったのが間違いの始まりで、サーミスタが15K~10Kオーム位なのですが、LS-TTLではこの値は高すぎたようです。ちなみにこのサーミスタも最近やっとディジットで見つけました(ちゃんと買えば幾らでもあるけれど)昔は良く使われていたパーツなのですが(と要っても30年くらい前?ゲルマトランジスタのB級プッシュプル回路のバイアス用に)探し方が悪いのか小さな物が見つかりませんでした。ちなみに写真で手前にコードが延びた先の黒い物がサーミスタ。購入したものはチューブで絶縁してありました

見張り番

温度が高くなると高い音で、低くなると低い音でBEEP音がなります。今も横で室温をカウント(発振回路のパルス幅を)していますが、現在の値は 0x67 です。(全く補正していいないので意味はないが)明日の朝は一体どの程度の値なのでしょうか。今日は8048が添い寝してくれるみたいです