sample-A.asm

[ sample-A.asm ]
;***************************************
;*******
サンプル A
********
;***************************************
NAME
SP_ST
;***
sample-A
SET
0FEC0H
;スタック・ポインタ 開始アドレス
データ・セグメント 領域
DATA
DSEG
SADDRP
INT_CNT:
DS
1
;先頭 偶数番地 に配置
;********************************************************************************
;********
リセット,割込み ベクター
*********
;********************************************************************************
VECT00
CSEG
CSTART
AT
DW
0H
;リセット
CSEG
INTIT
AT
DW
00038H
;インターバルタイマ
VECT38
;********************************************************************************
;********
オプション・バイト
OPT
CSEG
OPT_BYTE
DB
01111110B
;WDT 設定
; ・インターバル割込み----しない
; ・オープン期間--------100%
; ・カウンタ動作---------許可
; ・オーバーフロー時間-----4.369s(fIL=15kHz)
; ・カウンタ動作(H/S時)--停止
DB
11111111B
;LVD 設定
; ・LVDオフ時の設定
DB
11101000B
;動作モード/CLK 設定
; ・動作モード---------HSモード
; ・周波数-----------32MHz
DB
10000100B
;オンチップ・デバック 設定
; ・オンチップデバック-----動作許可
;********************************************************************************
;********
RESET
*********
;********************************************************************************
R_VECT00
CSEG
AT
03000H
CSTART:
MOVW
SP,#SP_ST
;スタック・ポンタ 初期化
SEL
RB0
;レジスタ・バンク0 にセット
MOV
MOV
DFLCTL,#00000001B
HOCODIV,#00000000B
;データフラッシュ----------アクセス許可
;ONチップCLK----------32MHz
MOV
MOV
PER0,#10000000B
PER1,#00000000B
;周辺イネーブル0--------INTITのみ供給
;周辺イネーブル1--------全て停止
MOV
!OSMC,#010H
;INTIT 動作CLK設定
MOVW
ITMC,#0001DH
;INTIT セット
66.7usx(29+1) = 2msec
- 1 -
[ sample-A.asm ]
MOVW
MOVW
RAM_INIT1:
MOV
MOV
INCW
MOVW
CMPW
BNZ
ITMC,#0801DH
;INTIT 開始
HL,#0EF00H
;RAM 0にクリア
A,#0
[HL],A
HL
AX,#SP_ST
AX,HL
$RAM_INIT1
; 0セット
; アドレス +1
; スタック・ポインタ 開始アドレス?
;NO
EI
;割込み 許可にセット
MOV
MK1H,#11111011B
;INTIT 割込み許可
MOV
WDTE,#0ACH
;ウォッチドッグタイマ クリア
INC
A
;Aレジスタ +1
BR
$LOOP
LOOP:
;********************************************************************************
;********
割込み ルーチン
R_VECT38
CSEG
AT
02000H
;********************************************************************************
;********
インターバル タイマ(割込み 2msec)
*********
;********************************************************************************
INTIT:
SEL
RB1
;レジスタ・バンク1 にセット
MOV
ADD
MOV
A,!INT_CNT
A,#1
!INT_CNT,A
;カウンタ +1
SEL
RETI
RB0
INTITE:
END
- 2 -