;ctc割り込みによるモータ定速回転 2001.11.07 藤川雅男。 ; jikken.z80 CTC0 EQU 10H ; CTC1 EQU 11H ; CTC2 EQU 12H ; CTC3 EQU 13H ; SIOCA EQU 19H ; RS-232C SIODA EQU 18H SIOCB EQU 1BH SIODB EQU 1AH PAD: EQU 1CH ; PAC: EQU 1DH ; PBD: EQU 1EH ; PBC: EQU 1FH ; PCD EQU 80H ;前壁センサ CON: EQU PAD ; PUSH-SW LED EQU PAD PSW EQU PAD MOT EQU PAD ;Aポート出力でモータ制御 SEN EQU PBD ;Bポート入力(負論理)でセンサ SASETU EQU 00000000b USETU EQU 10100000b ZENSHIN EQU 10000000b KOUTAI EQU 00100000b ; ;---------------------------------------------本文ここから ; PROGRAM START JP MAIN HOKO: DB ZENSHIN ;移動方向(ZENSHINなど) MOTD: DS 1 ;モータへの出力信号バッファ ; DS 0F7H DS 0FBH ;8100H DW INTR0 ;CTC0割り込みアドレス DW INTR1 ;CTC1割り込みアドレス DW INTR2 ;CTC2割り込みアドレス DW INTR3 ;CTC3割り込みアドレス MAIN: DI LD SP,0 CALL CPUINI CALL PIOINI CALL CTCINI ; LD A,USETU LD (HOKO),A LD A,ZENSHIN LD (MOTD),A LD A,0D5H ;CTC1,3イニシャライズ OUT (CTC3),A OUT (CTC1),A LD A,50 OUT (CTC3),A OUT (CTC1),A EI ; MAIN2: JR $ ; ; CPU INITIALIZE ROUTINE ; CPUINI: IM 2 LD A,81H LD I,A RET ; PIOINI: LD A,0CFh ;モード3 OUT (PBC),A LD A,11111111b OUT (PBC),A ;PB全部入力 LD A,0CFh OUT (PAC),A LD A,00000011b OUT (PAC),A ;PA7〜PA2出力、PA1PA0入力 RET ; CTCINI: LD A,0 OUT (CTC0),A LD A,15H ;CTC#0のイニシャライズ OUT (CTC0),A LD A,70 ;回転速度基準時間 OUT (CTC0),A RET ; ; 割り込み処理 ; INTR0: EI RETI ; INTR1: PUSH AF PUSH BC LD A,(HOKO) OR 01000000b LD B,A LD A,(MOTD) OR B LD (MOTD),A OUT (MOT),A AND 10111111b OUT (MOT),A POP BC POP AF EI RETI ; INTR2: EI RETI ; INTR3: PUSH AF PUSH BC LD A,(HOKO) OR 00010000b LD B,A LD A,(MOTD) OR B LD (MOTD),A OUT (MOT),A AND 11101111b OUT (MOT),A POP BC POP AF EI RETI END