EMC調査    
         
    マイコン関連    
         
    ホームページ制作    
         
    関連書籍    
         
 
 
 
 
     050-3537-1424
 
  メールはこちら
 
 
 







マイコンの使い方

上画像は、1997年に製造した弊社ワンボードコンピュータ MS-80C16、CPUにオリジナルZ80とバイナリコンパチブルな川崎製鉄KL5C80A16CFPを採用し、機械組込み分野に対応する小型・低価格CPUボード。

マイコン使い方は、メーカーが異なっても、基本的にはレジスターに目的に応じて値を設定しプログラムするだけです。

下表は、 KL5C80A16の内部のCPUの動作を設定(ライト)したりデータを取り出し(リード)するI/Oアドレス(ハードウェアまたはソフトウェアから参照可能なメモリ領域)

ブロック名 (内   容)
ライト時 リード時 アドレス
KC82(MMU) BBR1(境界/ベースレジスタ1) BBR1(境界/ベースレジスタ1) 00H
BR1(ベースレジスタ1) BR1(ベースレジスタ1) 01H
BBR2(境界/ベースレジスタ2) BBR2(境界/ベースレジスタ2) 02H
BR2(ベースレジスタ2) BR2(ベースレジスタ2) 03H
BBR3(境界/ベースレジスタ3) BBR3(境界/ベースレジスタ3) 04H
BR3(ベースレジスタ3) BR3(ベースレジスタ3) 05H
BBR4(境界/ベースレジスタ4) BBR4(境界/ベースレジスタ4) 06H
BR4(ベースレジスタ4) BR4(ベースレジスタ4) 07H
川崎製鉄予約 川崎製鉄予約 08H〜0FH
DMAコントローラ チャンネル 0 B-PAR チャンネル 0 C-PAR 10H
チャンネル 0 B-SAR チャンネル 0 C-SAR 11H
チャンネル 0 B-BCR チャンネル 0 C-BCR 12H
チャンネル 0 CR チャンネル 0 SR 1 13H
チャンネル 1 B-PAR チャンネル 1 C-PAR 14H
チャンネル 1 B-SAR チャンネル 1 C-SAR 15H
チャンネル 1 B-BCR チャンネル 1 C-BCR 16H
チャンネル 1 CR チャンネル 1 SR 17H
システム制御レジスタ 川崎製鉄予約 18H
川崎製鉄予約 19H
川崎製鉄予約 1AH
SCR 0 SCR 0 1BH
SCR 1 SCR 1 1CH
SCR 2 SCR 2 1DH
SCR 3 SCR 3 1EH
SCR 4 SCR 4 1FH
タイマ/カウンタ チャンネル 0 カウンタ 20H
チャンネル 0 コントロールワード ステータス 21H
チャンネル 1 カウンタ   22H
チャンネル 1 コントロールワード  ステータス   23H
チャンネル 2 カウンタ  24H
チャンネル 2 コントロールワード  ステータス  25H
チャンネル 3 カウンタ 26H
チャンネル 3 コントロールワード  ステータス  27H
UART  RATE設定 RATE設定 28H
川崎製鉄予約 29H
チャンネル 0 送信データ チャンネル 0 受信データ/拡張ステータス A 2AH
チャンネル 0 モード/コマンド チャンネル 0 ステータス  /拡張ステータス B 2BH
チャンネル 1 送信データ  チャンネル 1 受信データ/拡張ステータス A 2CH
チャンネル 1 モード/コマンド  チャンネル 1 ステータス /拡張ステータス B 2DH
川崎製鉄予約 2EH
川崎製鉄予約 2FH
クロック同期   チャンネル 0 送信データ  チャンネル 0 受信データ  30H
シリアルI/O チャンネル 0 モード/コマンド設定 チャンネル 0 ステータス 31H
チャンネル 1 送信データ  チャンネル 1 受信データ  32H
チャンネル 1 モード/コマンド設定 チャンネル 1 ステータス  33H
割り込みコントローラ LERL/PGRL ISRL 34H
LERH/PGRH ISRH 35H
IMRL IMRL 36H
IVR/IMRH IMRH 37H
パラレルポート   ポート 0 ポート 0 38H
ビット操作コマンド ポート 0 方向制御レジスタ(固定) 39H
ポート 1 ポート 1 3AH
ポート 1 方向制御レジスタ ポート 1 方向制御レジスタ  3BH
ポート 2 ポート 2 3CH
ポート 2 方向制御レジスタ ポート 2 方向制御レジスタ  3DH
ポート 3 ポート 3 3EH
ポート 3 方向制御レジスタ ポート 3 方向制御レジスタ 3FH


下記は、アセンブラ言語のサンプルプログラム

●PORT出力

◇プログラム名 :PORT2.ASM

◇動作説明
プログラムを実行すると、ポートP27を出力モードにしON/OFFさせます。出力はコネクターCN2の23番ピンです。

; PORT output test
; name :PORT2
; platform :MSG-80C16

; I/O definition
PORT0 equ 038h
BITCL equ 039h
PORT1 equ 03ah
PORT1_d equ 03bh
PORT2 equ 03ch
PORT2_d equ 03dh
PORT3 equ 03eh
PORT3_d equ 03fh

;
.z80

org 8000h

; ld sp,9ff0h

; port direction initialize

ld a,10000000b ;ポートP27を出力に設定
out (PORT2_d),a ;方向制御レジスタ

; port output test

loop:

ld a,10000000b
out (PORT2),a ;bit7に1を出力(LED OFF)

ld de,10000 ;set time

call delay

ld a,00000000b

out (PORT2),a ;bit7に0を出力(LED ON)

ld de,10000 ;set time

call delay

jr loop

; Delay proc

; Set delay time to DE reg.

delay:

push bc
push hl
delay1:
ld b,59
djnz $
dec de
ld a,d
or e
jr nz,delay1

pop hl
pop bc
ret

end

●PORT入出力機能

◇プログラム名 :PORT.ASM
◇動作説明

プログラムを実行すると、まずポート1、2、3を出力モードにし、順次ポートをON/OFFさせます。
また、PORT0は、P00〜P03が出力、P04〜P07が入力に固定ですので、P04〜P07の入力がHI/LOに変化する事により、P00、P10、P20、P30がHI/LOとなるプログラムです。

プログラムの最後でP04がHiのときP00がHi、P04がLoのときP00がLo、P05がHiのときP10がHi、P05がLoのときP10がLo、P06がHiのときP20がHi、P06がLoのときP20がLo、P07がHiのときP30がHi、P07がLoのときP30がLo、となります。

HI/LOのディレイは約1秒ですので調整して使用してください。

; PORT input/output test
; name :PORT
; platform :MSG-80C16
; CREATE LTD.

; I/O definition
PORT0 equ 038h
BITCL equ 039h
PORT1 equ 03ah
PORT1_d equ 03bh
PORT2 equ 03ch
PORT2_d equ 03dh
PORT3 equ 03eh
PORT3_d equ 03fh
;
.z80
org 8000h

; ld sp,9ff0h

; port direction initialize
ld b,3
ld hl,init0
init0lp:
ld c,(hl)
inc hl
outi
jr nz,init0lp

; port output test
;all off
ld b,4
ld hl,init1
init02p:
ld c,(hl)
inc hl
outi
jr nz,init02p

;on test port0
ld b,8
ld hl,init2
init03p:
ld c,(hl)
inc hl
ld de,10000 ;set dely time
call delay
outi
jr nz,init03p

;on test bit03,bit0-;7
ld b,28 ;port0;3,0-7
ld hl,init3
init04p:
ld c,(hl)
inc hl
ld de,10000 ;set dely time
call delay
outi
jr nz,init04p

;port0 bit4-7 input test
in a,(port0)
bit 4,a
jp z,next1
ld a,00000001b ;port0 bit0 set
out (39h),a
ld de,10000 ;set dely time
call delay
next1:
in a,(port0)
bit 5,a
jp z,next2
ld a,00010001b ;port1 bit0 set
out (39h),a
ld de,10000 ;set dely time
call delay
next2:
in a,(port0)
bit 6,a
jp z,next3
ld a,00100001b ;port2 bit0 set
out (39h),a
ld de,10000 ;set dely time
call delay

next3:
in a,(port0)
bit 7,a
jp z,next4
ld a,00110001b ;port3 bit0 set
out (39h),a
ld de,10000 ;set dely time
call delay
next4:
nop
nop
nop
nop
nop
nop
nop
nop
nop
rst 30h

; Delay proc
; Set delay time to DE reg.
delay:
push bc
push hl
delay1:
ld b,59
djnz $
dec de
ld a,d
or e
jr nz,delay1
pop hl
pop bc
ret

init0: db PORT1_d, 11111111b
db PORT2_d, 11111111b
db PORT3_d, 11111111b

init1:
db PORT0, 00001111b ;off
db PORT1, 11111111b ;off
db PORT2, 11111111b ;off
db PORT3, 11111111b ;off
init2:
db PORT0, 00000000b ;on
db PORT0, 00001111b ;off
db PORT1, 00000000b ;on
db PORT1, 11111111b ;off
db PORT2, 00000000b ;on
db PORT2, 11111111b ;off
db PORT3, 00000000b ;on
db PORT3, 11111111b ;off

init3:
db PORT0, 11110111b ;bit3 on
db PORT0, 11111011b ;bit2 on
db PORT0, 11111101b ;bit1 on
db PORT0, 11111110b ;bit0 on

db PORT1, 01111111b ;bit7 on
db PORT1, 10111111b ;bit6 on
db PORT1, 11011111b ;bit5 on
db PORT1, 11101111b ;bit4 on
db PORT1, 11110111b ;bit3 on
db PORT1, 11111011b ;bit2 on
db PORT1, 11111101b ;bit1 on
db PORT1, 11111110b ;bit0 on

db PORT2, 01111111b ;bit7 on
db PORT2, 10111111b ;bit6 on
db PORT2, 11011111b ;bit5 on
db PORT2, 11101111b ;bit4 on
db PORT2, 11110111b ;bit3 on
db PORT2, 11111011b ;bit2 on
db PORT2, 11111101b ;bit1 on
db PORT2, 11111110b ;bit0 on

db PORT3, 01111111b ;bit7 on
db PORT3, 10111111b ;bit6 on
db PORT3, 11011111b ;bit5 on
db PORT3, 11101111b ;bit4 on
db PORT3, 11110111b ;bit3 on
db PORT3, 11111011b ;bit2 on
db PORT3, 11111101b ;bit1 on
db PORT3, 11111110b ;bit0 on

end

●UART機能

◇プログラム名 :RSTEST.ASM
◇動作の確認に必要なツール

1.全2重あるいは半2重通信ができるターミナルが必要です。パソコンをターミナルにしたものが使用できます。通信条件は、以下の通りです。

9600BPS、パリティなし、データ長8ビット、1ストップビット。

2.ROMライター。プログラムをROMに焼き込みます。

◇動作説明

ターミナルからアルファベットが受信されると、その文字をターミナルに送信する。文字のループバックを行ないます。

;*******************************************************************
;
; Z−Vision Remote
;
; RS232C通信確認テスト用プログラム
;
; 初期設定及び、送受信確認
; (rsinit) (rsout,rsin)
;
;*******************************************************************
;
BBR1 EQU 0
BR1 EQU 1
BBR2 EQU 2
BR2 EQU 3
BBR3 EQU 4
BR3 EQU 5
BBR4 EQU 6
BR4 EQU 7

SCR0 EQU 1BH
SCR1 EQU 1CH
SCR2 EQU 1DH
SCR3 EQU 1EH
SCR4 EQU 1FH

UART_RT EQU 28H
UART_D0 EQU 2AH
UART_M0 EQU 2BH
UART_D1 EQU 2CH
UART_M1 EQU 2DH

BR9600 EQU 11100110B ;コマンド・レジスタB設定値(BCK)
BR19200 EQU 11100101B ;BCK
BR38400 EQU 11100100B ;BCK
BR76800 EQU 11100011B ;BCK

U_RESET EQU 0111111B ;ソフトウエア・リセット・コマンド
U_RATE EQU 10000000B + 124 ;RATE設定レジスタ設定値
U_MODE EQU 00001110B ;モード・パラメータ(8 BIT,NO_PARITY,STOP=1)
U_CMDA EQU 00110111B ;コマンド・レジスタA設定値(送受信可、TRS=ON DTR=ON)
U_CMDB EQU BR9600
;
;STACKB equ 9ff0h ;stack area bottom
STACKB equ 0F400H ;stack area bottom

org 0h

LD A,1FH ;MMU設定
OUT (BBR4),A ;8000-FFFF → F8000-FFFFF

ld sp,STACKB ;システム・スタックのボトム

call rsinit
;
loop:
call rsin
ld b,a
call rsout
jr loop
;
;
;*******************************************************************
;
; RS232C初期設定
;
;*******************************************************************
rsinit:

ld a,U_RATE ;内臓ボーレートジェネレータの設定
out (UART_RT),a
xor a ;A=00H
out (UART_M0),a ;カマンド・モードに移行
ld a,U_RESET ;UARTのリセット
out (UART_M0),a
ld a,U_MODE ;モード・レジスタの設定
out (UART_M0),a
ld a,U_CMDA ;コマンド・レジスタA設定
out (UART_M0),a
ld a,U_CMDB ;コマンド・レジスタB設定
out (UART_M0),a
ret
;
;*******************************************************************
;
; データ送信
;
;*******************************************************************
rsout: ;console character output from register c
IN A,(UART_M0) ;ステータス・チェック
BIT 0,A ;TXRDY = 1 ?
JP Z,rsout
LD A,b
OUT (UART_D0),A ;送信データの書き込み
ret
;*******************************************************************
;
; データ受信
;
;*******************************************************************
rsin: ;console character output from register c
IN A,(UART_M0) ;ステータス・チェック
BIT 1,A ; RXRDY = 1 ?
JP Z,rsin
IN A,(UART_D0) ;受信データの読み込み
ret
;
end

●割り込み機能

◇プログラム名 :INT.ASM

◇動作させるために必要な配線等:ポートP20をプルアッフしてアクティブLOになる?モーメンタリスィツチをつける。
◇動作の確認に必要なツール

テスターあるいはオシロスコープ等電圧レベルが確認できるもの。

ポートにLEDを抵抗を通して接続すると動作が視覚的の確認できます。

注意 ポートがドライブできる電流は±4mAです。ご注意ください。

◇動作説明

プログラムを実行すると、割り込みコントローラを初期化しポートP26にタイマー0からのを割り込みを接続し、また出力に設定したポートP27に入力に設定したポートP20からの割り込みを接続しポートP26、27それぞれをON/OFFさせます。

; CTC/INTERRUPT sample program
; name :int.asm
; platform :MS-80C16

;
; I/O アドレス
INCLUDE c16ioadrs.asm
;
.z80
org 8000h

di

ld a,11000000b ;P26,P27を出力に設定
out (PORT2_d),a

ld a,10000000b
out (PORT2),a ;bit7に0を出力(LED OFF)

ld a,11001111b ;P20=IR0,P21=IR1に接続,反転入力
out (SCR1),a

im 2 ;モード2割り込みに設定

call timer ;タイマーの初期化

; LERL/H 初期化、リセット後はレベル・モード
ld a,00000001b ;IR[7:1]レベル、IR[0]エッジ
out (LERL),a ;
ld a,00010000b ;IR[12]エッジ
out (LERH),a ;
; IVR初期化
ld hl,inttb ;
ld a,h ;
ld i,a ;上位ベクタをIレジスタにセット
ld a,l ;
out (IVR),a ;下位ベクタをIVRにセット
; IMR初期化
ld a,11111110b ;IR[0]割り込み許可
out (IMRL),a ;
ld a,11101111b ;IR[12]割り込み許可
out (IMRH),a ;

ei ;割り込み可
loop: jr $

INTP20:
ei
push af
push bc
ld a,01111111b
out (PORT2),a ;bit7に0を出力(LED ON)
p2lp:
call delay
in a,(PORT2) ;bit0が0の間bit7に0を出力
bit 0,a
jr z,p2lp
extp2:
ld a,11111111b
out (PORT2),a
pop bc
pop af
reti

INTTIM:
ei
and 10111111b
out (PORT2),a ;bit6に0を出力(LED ON)

call delay

or 01000000b
out (PORT2),a

call delay

reti

delay:
ld bc,0060h
dlp: djnz dlp
dec c
jp nz, dlp
ret

timer:
ld a,04h ;チャンネル0、連続カウント
out (CTC0C),a ;256分周(GATE機能無)、出力非反転モード

ld a,035H
out (CTC0),a ;カウント初期値(下位側)設定
out (CTC0),a ;カウント初期値(上位側)設定
ret

;
;割り込みベクターテーブル
;
org ($+1FH) AND 0FFE0H ;偶数アドレスに調整
;

inttb:
DW INTP20 ; IR[ 0] タイマ/カウンタチャンネル2割り込み/外部端子P20
DW 0 ; IR[ 1] タイマ/カウンタチャンネル3割り込み/外部端子P21
DW 0 ; IR[ 2] クロックドウキ同期シリアルI/O送受信割込(チャンネル1)/外部端子P20
DW 0 ; IR[ 3] USART TXRDY 出力(チャンネル1)
DW 0 ; IR[ 4] USART RXRDY 出力(チャンネル1)
DW 0 ; IR[ 5] USART ブレイク検出/エラー検出割り込み(チャンネル1)
DW 0 ; IR[ 6] DMAコントローラのDMTC0
DW 0 ; IR[ 7] DMAコントローラのDMTC1
DW 0 ; IR[ 8] クロック同期シリアルI/Oの送受信割込(チャンネル0)
DW 0 ; IR[ 9] USART TXRDY 出力(チャンネル0)
DW 0 ; IR[10] USART RXRDY 出力(チャンネル0)
DW 0 ; IR[11] USART ブレイク検出/エラー検出割り込み(チャンネル0)
DW INTTIM ; IR[12] タイマ/カウンタチャンネル0割り込み
DW 0 ; IR[13] タイマ/カウンタチャンネル1割り込み
DW 0 ; IR[14] 外部端子P22
DW 0 ; IR[15] 外部端子P23

end

 

Copyright © 松田システム技研 All Rights Reserved.
050-3537-1424
050-3537-1425
商号名 : 松田システム技研   代表 : 松田 誠一
事務所の所在地 : 〒899-5302 鹿児島県姶良郡蒲生町上久徳2615
  地図は、こちら