P0
;*************************************
LOOP
CLRF 21H ;取码指针
CLRF ADR46 ;93C46的地址00H
MOVLW 04H
MOVWF 22H ;4组8个码
START
MOVLW EWEN ;写入使能
CALL TO9346
MOVFW 21H ;载入取码指针
CALL TABLE ;至TABLE 取码
MOVWF F5 ;存入"写入寄存器"
INCF 21H ,1 ;取下一个码
MOVFW 21H
CALL TABLE ;至TABLE 取码
MOVWF F4
MOVLW WRITE
CALL TO9346 ;写入数据
MOVLW EWDS
CALL TO9346 ;写禁止
INCF 21H ,1 ;取下一个码
INCF ADR46 ,1 ;取下一个地址
CALL DELAY1
DECFSZ 22H ,1 ;直到写完四个地址
GOTO START
MOVLW 30H ;存入877A的RAM首地址
MOVWF FSR
CLRF ADR46 ;93C46的地址00
MOVLW 04H
MOVWF 22H ;读93C46的四个地址,8个码
;*****************
A1
MOVLW READ
CALL TO9346 ;读地址中的数据
MOVFW F5
MOVWF INDF ;读出的数据存入877A的RAM
INCF FSR ,1
MOVFW F4
MOVWF INDF
INCF ADR46 ,1 ;读下一个地址
INCF FSR ,1
DECFSZ 22H ,1 ;直到读完四个地址
GOTO A1
A2
MOVLW 08H
MOVWF 22H
MOVLW 30H ;RAM 30h-37H 共8个码
MOVWF FSR
OUTPUT
MOVFW INDF
MOVWF PORTC ;输出结果到PORTC
CALL DELAY1
INCF FSR ,1
DECFSZ 22H ,1
GOTO OUTPUT
GOTO A2
;***************************
SREAD
MOVLW 80H
ADDWF ADR46 ,0 ;6位地址加上两位操作码,10XXXXXX 读指令
CALL SDT46 ;写入操作码与地址
CALL RDT46 ;读高位数据
MOVWF F5