Eis o trecho do código que não estava funcionando, e a pequena correção, destacada em vermelho.
10750 I2CPB: ; PUT BYTE
10760 PUSH BC
10770 LD D,A
10780 LD B,8
10790 I2PB1: XOR A
10800 SLA D
10810 ADC A,SDALO
10820 OUT(C),A
10830 LD A,SCLHI
10840 OUT(C),A
10850 DEC A ; A=SCLLO
10860 OUT (C),A
10870 DJNZ I2PB1
Se eu não inicializar o valor de A com Zero, a soma com SDALO+CY vai dar um valor indefinido.
Eu tive que corrigir este mesmo erro em outro trecho do código, mas depois consegui fazer a leitura sequencial de vários bytes na E2PROM.
Segue abaixo a captura da tela, lendo um trecho já conhecido da E2PROM
11150 I2CAK:;GIVE ACK CY=VALOR ACK
11155 XOR A
11160 ADC A,SDALO
11170 OUT (C),A
11180 LD A,SCLHI
11190 OUT (C),A
11200 DEC A
11210 OUT (C),A
11220 LD A,SDAHI
11230 OUT (C),A
11240 RET

Nenhum comentário:
Postar um comentário