| NedoPC Project
| NedoPC Forum
| NedoPC Group
|
NedoPC-85-A
22 июня 2004 года была закончена сборка и отладка тестовой платы
микроконтроллера NedoPC-85-A на основе процессора P8085AH (клон старого интеловского 8085),
работающего на частоте 2 МГц. Плата имеет на борту перепрограммируемое ПЗУ KM2865A-25
(8Kx8) и статическое ОЗУ HM6264P-12 (8Kx8), а также 3 корпуса мелкой логики:
74ALS573, 74LS138, 74LS08. Общая стоимость комплектующих: $27. Потребляемый
ток не более 200 мА.
Внешний вид собранной платы:
Внешний вид платы без больших микросхем:
Внешний вид платы со стороны пайки:
Принципиальная схема устройства (для увеличения нужно кликнуть на картинку):
Как видно, адресное пространство делится на 8 частей по 8 килобайт каждая:
| Range | CS |
| #0000...#1FFF | ROM |
| #2000...#3FFF | RAM |
| #4000...#5FFF | - |
| #6000...#7FFF | - |
| #8000...#9FFF | - |
| #A000...#BFFF | _CS |
| #C000...#DFFF | RAM |
| #E000...#FFFF | ROM |
Сигнал _CS является выходным сигналом платы, наряду с некоторомы другими
сигналами, составляющими ряд из 15 контактов:
| Pin | Name | Description |
| 1 | GND | Заземляющий контакт |
| 2 | _CS | Выбор внешнего устройства (акт.0) |
| 3 | ALE | На данных младший байт адреса (акт.1) |
| 4 | M_IO | Использование памяти (1) или портов (0) |
| 5 | _RD | Разрешение чтения (акт.0) |
| 6 | _WR | Разрешение записи (акт.0) |
| 7 | D0 | Бит 0 данных (или адреса) |
| 8 | D1 | Бит 1 данных (или адреса) |
| 9 | D2 | Бит 2 данных (или адреса) |
| 10 | D3 | Бит 3 данных (или адреса) |
| 11 | D4 | Бит 4 данных (или адреса) |
| 12 | D5 | Бит 5 данных (или адреса) |
| 13 | D6 | Бит 6 данных (или адреса) |
| 14 | D7 | Бит 7 данных (или адреса) |
| 15 | VCC | Питающий контакт (+5В) |
Назовем этот интерфейс "Nedo Interface 15" (по числу контактов)
или для краткости NI-15
(позже мы создадим ряд схем для работы с платой NedoPC-85-A через
этот интерфейс). Итак, что же этот интерфейс позволяет:
- читать 1 байт из 256 байтов внешней памяти (диапазон допустимых
адресов #A000...#A0FF и далее с шагом 256 байт до #BF00...#BFFF)
- писать 1 байт в 256 байтов внешней памяти (диапазон допустимых
адресов #A000...#A0FF и далее с шагом 256 байт до #BF00...#BFFF)
- читать 1 байт из 32 портов ввода (диапазон допустимых
номеров портов #A0...#BF)
- писать 1 байт в 32 порта вывода (диапазон допустимых
номеров портов #A0...#BF)
Без дополнительной схемы демультиплескирования данных и младшего байта
адреса по сигналу ALE, интерфейс адресует 1 байт по любому адресу из диапазона
#A000...#BFFF или 1 порт по любому номеру порта из диапазона #A0...#BF.
С помощью интерфейса NI-15 плата втыкается в любую стандартную breadboard
и при некоторой обвязке позволяет производить определенные действия
(например мигать светодиодами по зашитой в ПЗУ программе):
Принципиальная схема девайса (для увеличения нужно кликнуть на картинку):
Пример простой программы для мигания светодиодами по очереди справа-налево:
ORG 0
START:
JMP #E003
_E003:
MVI B,1
LOOP1:
LXI H,0
LOOP2:
DCX H
MOV A,H
ORA L
JNZ LOOP2
MOV A,B
OUT #A0
RLC
MOV B,A
JMP LOOP1
|
А вот оттранслированный листинг программы (в адресах #0000 и #E000):
| Adr1 | Adr2 | Code | Command | Comment |
| #0000 | #E000 | #C3 | JMP #E003 | Переход в последнее окно |
| #0001 | #E001 | #03 | | |
| #0002 | #E002 | #E0 | | |
| #0003 | #E003 | #06 | MVI B,1 | Начальное состояние |
| #0004 | #E004 | #01 | | |
| #0005 | #E005 | #21 | LXI H, #0000 | Обнуление счетчика |
| #0006 | #E006 | #00 | | |
| #0007 | #E007 | #00 | | |
| #0008 | #E008 | #2B | DCX H | Декремент счетчика |
| #0009 | #E009 | #7C | MOV A,H | Проверка на 16-битный 0 |
| #000A | #E00A | #B5 | ORA L | |
| #000B | #E00B | #C2 | JNZ #E008 | Повтор если еще не 0 |
| #000C | #E00C | #08 | | |
| #000D | #E00D | #E0 | | |
| #000E | #E00E | #78 | MOV A,B | Копируем состояние в A |
| #000F | #E00F | #D3 | OUT #A0 | Отправляем в порт #A0 |
| #0010 | #E010 | #A0 | | |
| #0011 | #E011 | #07 | RLC | Сдвиг влево |
| #0012 | #E012 | #47 | MOV B,A | Сохранение состояния |
| #0013 | #E013 | #C3 | JMP #E005 | Переход на начало цикла |
| #0014 | #E014 | #05 | | |
| #0015 | #E015 | #E0 | | |
Программирование ПЗУ осуществляется с помощью программатора
NedoProg-1. При частоте процессора 2 МГц
(частота кристалла 4 МГц) прохождение всей линейки из 8 светодиодов по
одному составляет 6.3 секунды.
Обсудить на форуме
^ Вверх
|