;****************************************************** ; タイマ割込みによる2進数インクリメント表示 ;------------------------------------------------------ ; CTCのCh0で1秒毎に割り込みをかける ; 割込みがかかる度にマシン語モニタに表示している ; 2進数を+1する ;****************************************************** 0D03 SCAN EQU 0D03h 0D06 INICLKSIO EQU 0D06h 0D2D TIMER1m EQU 0D2Dh ; ;--------------- メインルーチン ----------------------- 8000 ORG 8000h 8000 31 00 90 LD SP,9000h 8003 ED 5E IM 2 8005 3E 88 LD A,HIGH VCTTBL ;……@ 8007 ED 47 LD I,A 8009 CD 06 0D CALL INICLKSIO ;モニタユニット初期化 800C CD 46 80 CALL INICTC ;CTC " 800F CD 54 80 CALL INIINTR ;割込コントローラ " 8012 AF XOR A ;表示0クリア 8013 32 00 90 LD (COUNT),A 8016 CD 33 80 CALL BITSET 8019 FB MAIN_10: EI 801A CD 03 0D CALL SCAN ;LEDスキャン 801D CD 2D 0D CALL TIMER1m ;モニタ1msタイマ 8020 18 F7 JR MAIN_10 ; ;--------------- 割込みルーチン ----------------------- 8022 E5 TIMER_1s: PUSH HL ;1s毎に割込む 8023 F5 PUSH AF 8024 3A 00 90 LD A,(COUNT) ;カウント インクリメント 8027 3C INC A 8028 32 00 90 LD (COUNT),A 802B CD 33 80 CALL BITSET ;2進数変換 802E F1 POP AF 802F E1 POP HL 8030 FB EI 8031 ED 4D RETI ; 8033 21 F8 FF BITSET: LD HL,DISP_BUF ;16進→2進変換 8036 07 BITSET_01: RLCA ;&ディスプレイバッファ 8037 38 04 JR C,BITSET_02 ; にセット 8039 36 3F LD (HL),3Fh ;セグメントデータ 0 803B 18 02 JR BITSET_03 803D 36 06 BITSET_02: LD (HL),06h ;セグメントデータ 1 803F 2C BITSET_03: INC L 8040 20 F4 JR NZ,BITSET_01 8042 C9 RET ; 8043 FB DMY_INT: EI 8044 ED 4D RETI ; ;--------------- イニシャライズ ----------------------- 8046 3E 04 INICTC: LD A,00000100b ;周期1sのクロック 8048 D3 21 OUT (21h),A 804A 11 4B 4C LD DE,19531 804D 0E 20 LD C,20h 804F ED 59 OUT (C),E 8051 ED 51 OUT (C),D 8053 C9 RET ; 8054 3E 00 INIINTR: LD A,00000000b ;LERL 8056 D3 34 OUT (34h),A 8058 3E 10 LD A,00010000b ;LERH 805A D3 35 OUT (35h),A 805C 3E 00 LD A,LOW VCTTBL ;IVR 805E D3 37 OUT (37h),A 8060 3E 00 LD A,00000000b ;PGRL 8062 D3 34 OUT (34h),A 8064 3E 00 LD A,00000000b ;PGRH 8066 D3 35 OUT (35h),A 8068 3E FF LD A,11111111b ;IMRL 806A D3 36 OUT (36h),A 806C 3E EF LD A,11101111b ;IMRH 806E D3 37 OUT (37h),A 8070 C9 RET ; ;--------------- 割り込みベクタテーブル --------------- 8800 ORG 8800h 8800 43 80 VCTTBL: DW DMY_INT ;IR0 8802 43 80 DW DMY_INT ;IR1 8804 43 80 DW DMY_INT ;IR2 8806 43 80 DW DMY_INT ;IR3 8808 43 80 DW DMY_INT ;IR4 880A 43 80 DW DMY_INT ;IR5 880C 43 80 DW DMY_INT ;IR6 880E 43 80 DW DMY_INT ;IR7 8810 43 80 DW DMY_INT ;IR8 8812 43 80 DW DMY_INT ;IR9 8814 43 80 DW DMY_INT ;IR10 8816 43 80 DW DMY_INT ;IR11 8818 22 80 DW TIMER_1S ;IR12 881A 43 80 DW DMY_INT ;IR13 881C 43 80 DW DMY_INT ;IR14 881E 43 80 DW DMY_INT ;IR15 ; ;--------------- ワークエリア ------------------------- 9000 ORG 9000h 9000 COUNT DS 1 FFF8 ORG 0FFF8h FFF8 DISP_BUF DS 8 0000 END