El 6526 posee los siguientes 16 registros:
Reg. $00 PRA (PoRt A): Puerto A, se pueden leer el estado
de los pines configurados como entrada o escribir en los que estan
configurados como salida.
|
bit 7 (MSB)
|
6
|
5
|
4
|
3
|
2
|
1
|
bit 0 (LSB)
|
PRA
|
PA7
|
PA6
|
PA5
|
PA4
|
PA3
|
PA2
|
PA1
|
PA0
|
Reg. $01 PRB (PoRt B): Idem PRA.
|
bit 7 (MSB)
|
6
|
5
|
4
|
3
|
2
|
1
|
bit 0 (LSB)
|
PRB
|
PB7
|
PB6
|
PB5
|
PB4
|
PB3
|
PB2
|
PB1
|
PB0
|
Reg. $02 DDRA: Selecciona la dirección de cada linea
individual del puerto A.
0 = Entrada - 1 = Salida.
|
bit 7 (MSB)
|
6
|
5
|
4
|
3
|
2
|
1
|
bit 0 (LSB)
|
DDRA
|
DPA7
|
DPA6
|
DPA5
|
DPA4
|
DPA3
|
DPA2
|
DPA1
|
DPA0
|
Reg. $03 DDRB: Idem DDRA para el puerto B.
|
bit 7 (MSB)
|
6
|
5
|
4
|
3
|
2
|
1
|
bit 0 (LSB)
|
DDRB
|
DPB7
|
DPB6
|
DPB5
|
DPB4
|
DPB3
|
DPB2
|
DPB1
|
DPB0
|
Regs. $04 TA LO y $05 TA HI (Timer A): Estos dos registros
se combinan para formar los 16-bits del temporizador A. Una lectora
a estos registros entrega el estado actual del temporizador, mientras
que al escribir se carga el temporizador con un nuevo valor.
Read
|
bit 7 (MSB)
|
6
|
5
|
4
|
3
|
2
|
1
|
bit 0 (LSB)
|
$04
TA LO
|
TAL7
|
TAL6
|
TAL5
|
TAL4
|
TAL3
|
TAL2
|
TAL1
|
TAL0
|
$05
TA HI
|
TAH7
|
TAH6
|
TAH5
|
TAH4
|
TAH3
|
TAH2
|
TAH1
|
TAH0
|
Write
|
bit 7 (MSB)
|
6
|
5
|
4
|
3
|
2
|
1
|
bit 0 (LSB)
|
$04
TA LO
|
PAL7
|
PAL6
|
PAL5
|
PAL4
|
PAL3
|
PAL2
|
PAL1
|
PAL0
|
$05
TA HI
|
PAH7
|
PAH6
|
PAH5
|
PAH4
|
PAH3
|
PAH2
|
PAH1
|
PAH0
|
Regs. $06 TB LO y $07 TB HI (Timer B): Idem TA LO y TA HI
para el temporizador B.
Read
|
bit 7 (MSB)
|
6
|
5
|
4
|
3
|
2
|
1
|
bit 0 (LSB)
|
$06
TB LO
|
TBL7
|
TBL6
|
TBL5
|
TBL4
|
TBL3
|
TBL2
|
TBL1
|
TBL0
|
$07
TB HI
|
TBH7
|
TBH6
|
TBH5
|
TBH4
|
TBH3
|
TBH2
|
TBH1
|
TBH0
|
Write
|
bit 7 (MSB)
|
6
|
5
|
4
|
3
|
2
|
1
|
bit 0 (LSB)
|
$06
TB LO
|
PBL7
|
PBL6
|
PBL5
|
PBL4
|
PBL3
|
PBL2
|
PBL1
|
PBL0
|
$07
TB HI
|
PBH7
|
PBH6
|
PBH5
|
PBH4
|
PBH3
|
PBH2
|
PBH1
|
PBH0
|
Regs. $08 a $0B Time Of Day/Alarm: Estos registros setean
o retornan el estado del reloj de tiempo real. La información
esta en BCD.
Una lectura o escritura al registro $0B provoca que el reloj retenga
su estado actual y no continue hasta que se realice la correspondiente
lectura o escritura al registro $08.
Si el bit 7 del registro CRB ($0F) esta en 1, al escribir en estos
registros se setea la alarma en lugar del reloj.
|
bit 7 (MSB)
|
6
|
5
|
4
|
3
|
2
|
1
|
bit 0 (LSB)
|
$08
TOD 10THS
|
0
|
0
|
0
|
0
|
T8
|
T4
|
T2
|
T1
|
$09
TOD SEC
|
0
|
SH4
|
SH2
|
SH1
|
SL8
|
SL4
|
SL2
|
SL1
|
$0A
TOD MIN
|
0
|
MH4
|
MH2
|
MH1
|
ML8
|
ML4
|
ML2
|
ML1
|
$0B TOD HR
|
PM
|
0
|
0
|
HH
|
HL8
|
HL4
|
HL2
|
HL1
|
Reg. $0C SDR (Serial Port): En este registro se puede setear
o leer el contenido del registro de desplazamiento del puerto serie,
según este configurado.
|
bit 7 (MSB)
|
6
|
5
|
4
|
3
|
2
|
1
|
bit 0 (LSB)
|
SDR
|
S7
|
S6
|
S5
|
S4
|
S3
|
S2
|
S1
|
S0
|
Reg. $0D ICR (Interrupt Control Register): El 6526 tiene
5 fuentes de interrupción, cuando los timers llegan a 0,
la alarma del reloj TOD, cuando el puerto serie esta lleno/vacio
y -FLAG.
Este unico registro provee tanto información sobre las interrupciones
como el enmascaramiento de estas.
Cualquier bit que no este enmascarado (en 0) causara que el bit
IR se setee y que el pin -IRQ pase a 0. Esto se revierte al realizar
una lectura al registro.
Si al escribir al registro, si el bit 7 esta en cero, los restantes
bits en 1 pondran en 0 al correspondiente bit de la mascara, los
que esten en 0 no tendran efecto. Por el contrario, si el bit 7
esta en 1 los restantes bit en 1 setearan el correspondiente bit.
Read
|
bit 7 (MSB)
|
6
|
5
|
4
|
3
|
2
|
1
|
bit 0 (LSB)
|
ICR
|
IR
|
0
|
0
|
FLG
|
SP
|
ALRM
|
TB
|
TA
|
Write
|
|
|
|
|
|
|
|
|
ICR
|
S/C
|
X
|
X
|
FLG
|
SP
|
ALRM
|
TB
|
TA
|
Regs. $0E (CRA) y $0F (CRB): Estos son los dos registros
de control del 6526, CRA controla al Timer A mientras que CRB hace
lo propio con Timer B.
CRA:
|
|
|
Bit
|
Nombre
|
Función
|
0
|
START
|
1 = Arrancar Timer A.
0 = Detener Timer A. Este bit se resetea automaticamente cuando
la cuenta llega a 0.
|
1
|
PBON
|
1 = La salida del Timer A aparece en PB6.
0 = PB6 opera de la forma normal.
|
2
|
OUTMODE
|
1 = TOGGLE, 0 = Pulso.
|
3
|
RUNMODE
|
1 = Una sola vez.
0 = Continuo.
|
4
|
LOAD
|
1 = FORCE LOAD
|
5
|
INMODE
|
1 = Timer A cuenta transiciones positivas en CNT
0 = Timer A cuenta los pulsos de Ø2.
|
6
|
SPMODE
|
1 = Puerto serie como salida (CNT maneja el reloj del registro
de desplazamiento)
0 = Puerto serie como entrada (se requiere reloj externo)
|
7
|
TOIN
|
1 = 50 Hz
0 = 60 Hz
|
CRB:
|
|
|
Bit
|
Nombre
|
Función
|
|
|
CRB0 a CRB4 son identicos en funcionamiento a CRA0 a CRA4
pero para el Timer B.
|
5,6
|
INMODE
|
00 : Timer B cuenta pulsos Ø2.
01 : Timer B cuenta transiciones positivas en CNT
10 : Timer B cuenta los pulsos de fin de cuenta del Timer
A
11 : Timer B cuenta los pulsos de fin de cuenta del Timer
A mientras CNT es alta.
|
7
|
ALARM
|
1 = Escrituras en los registros TOD setea la alarma.
0 = Escrituras en los registros TOD setea el reloj TOD.
|
|