[ 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 -
© Copyright 2024