§ Схема портов
Порты начинаются с 20h до 5Fh — гарантированно. Но есть и расширенные порты:
§ Периферия #1
Чтение из поортов
$00 Последний ASCII символ от клавиатуры
$01 Значение 100 Гц таймера
$02 [0] =1 Был получен новый символ. При чтении сбрасывается
$03 [0] =1 Был получен VBlank, конец рисования кадра
$04 [3:0] SD Error
[5:4] SD Card Type
[6] SD Done :: Успешное выполнение команды
[7] SD Busy :: 1-Устройство занято
Запись в порты
$00 [2:0] Цвет бордюра
$01 [0] Номер видеостраницы 0=$8000, 1=$A000
$02 SD LBA [ 7: 0]
$03 SD LBA [15: 8]
$04 SD LBA [23:16]
$05 SD LBA [31:24]
$06 SD CMD =0 Читать =1 Писать
Маппинг памяти
$0000-$00FF Порты
$0100-$7FFF Общая память
$8000-$9FFF Видеостраница #1
$A000-$BFFF Видеостраница #2
$C000-$FBFF Общая память
$FC00-$FFFF SD i/o 1K
§ Порты Arduino
Микроконтроллер Atmega328P:
| 0/8 |1/9 | 2/A | 3/B | 4/C | 5/D | 6/E | 7/F
---+-------+-------+--------+--------+--------+--------+--------+-----
20 | ... | ... | ... | PINB | DDB | PORTB | PINC | DDC
28 | PORTC | PIND | DDD | PORTD | ... | ... | .. | ...
30 | ... | ... | ... | ... | ... | TIFR0 | TIFR1 | TIFR2
38 | ... | ... | ... | PCIFR | EIFR | EIMSK | GPIOR0 | EECR
40 | EEDR | EEARL | EEARH | GTCCR | TCCR0A | TCCR0B | TCNT0 | OCR0A
48 | OCR0B | ... | GPIOR1 | GPIOR2 | SPCR | SPSR | SPDR | ...
50 | ACSR | ... | ... | SMCR | MCUSR | MCUCR | ... | SPMCSR
58 | ... | ... | ... | RAMPZ | ... | SPL | SPH | SREG
Свободные порты резервированы для дальнейшего использования, но я займу для них место под собственную периферию.