В продолжение темы AT89C51ED2 и XRAM
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено alexan 23 сентября 2004 г. 09:13

Виноват, что отвлекся в прошлой теме. Так вот бит EXTRAM стоит в нуле, со схемой тоже бед не было, предыдущий аналогичный камень AT89S8252 отработал на ней без проблем, а спец. для товарища просившего код, ниже выкладываю. Может кто все же подскажет, где может быть собака зарыта, и почему при чтении из XRAM, она выходит по FAIL, причем обычно еще на первом цикле, но при этом раз с десятого ей удается пройти пяток тест-ячеек. Буду благодарен!

А вот и код:
EEE .EQU 00000010B
MO .EQU 00100000B
XRS2 .EQU 00010000B
XRS1 .EQU 00001000B
XRS0 .EQU 00000100B
EXTRAM .EQU 00000010B
DPS .EQU 00000001B

XRL AUXR, #EXTRAM
ORL AUXR, #XRS2
XRL AUXR, #XRS1
XRL AUXR, #XRS0
XRL EECON, #EEE

XRL AUXR1, #DPS ;Активируем DPTR0
MOV DPTR, #0H ;DPTR0 хранит адрес тест-ячейки
RUN_FIRST1:
ORL AUXR1, #DPS ;Активируем DPTR1
MOV DPTR, #0H ;DPTR1 хранит адрес текущей ячейки
XRL AUXR1, #DPS ;Активируем DPTR0
CLR A
MOVX @DPTR, A ;Записываем в тест-ячейку все нули
ORL AUXR1, #DPS ;Активируем DPTR1

RUN1: ;Проверяем совпадение адресов текущей и тест-ячейки
MOV B, DPL
XRL AUXR1, #DPS ;Активируем DPTR0
MOV A, DPL
CJNE A, B, CONT ;Если не совпадают - продолжаем выполнение программы
MOV A, DPH
ORL AUXR1, #DPS ;Активируем DPTR1
MOV B, DPH
CJNE A, B, CONT ;Если не совпадают - продолжаем выполнение программы
INC DPTR ;Если совпадают - переходим к следующей ячейке
MOV A, DPH
CJNE A, #01h, CONT ;Проверяем достижение последнего адреса текущей ячейки
JMP TEST_NEXT1
CONT:
CLR A
MOVX @DPTR, A ;Записываем в текущую ячейку все нули
XRL AUXR1, #DPS ;Активируем DPTR0
MOVX A, @DPTR ;Читаем тест-ячейку
CJNE A, #00h, FAIL ;Проверяем содержимое тест-ячейки
ORL AUXR1, #DPS ;Активируем DPTR1
MOVX A, @DPTR ;Читаем текущую ячейку
CJNE A, #00h, FAIL ;Проверяем содержимое текущей ячейки
XRL AUXR1, #DPS ;Активируем DPTR0
MOVX A, @DPTR ;Читаем тест-ячейку
CJNE A, #00h, FAIL ;Проверяем содержимое тест-ячейки
ORL AUXR1, #DPS ;Активируем DPTR1
INC DPTR ;Переходим к следующей ячейке
MOV A, DPH
CJNE A, #01h, RUN1 ;Проверяем достижение последнего адреса текущей ячейки
TEST_NEXT1:
XRL AUXR1, #DPS ;Активируем DPTR0
INC DPTR ;Переходим к следующей тест-ячейке
MOV P2, DPL ;Выводим в порт адрес тест-ячейки
MOV A, DPH
CJNE A, #01h, RUN_FIRST1;Проверяем достижение последнего адреса тест-ячейки
STOP:
MOV P2, #0AAh
JMP STOP

FAIL: MOV P3, #00h
JMP FAIL

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru