Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2013, 00:02   #1
jommm
Новичок
Джуниор
 
Регистрация: 25.03.2011
Сообщений: 1
Печаль ошибка target out of code

Ребят подскажите что к чему возможно ошибка из-за переполнения битов. У меня почему то не получается её исправить. Заранее благодарен.


D1 BIT P1.0; Обозначение битов портов
D2 BIT P1.4
D3 BIT P1.7
D4 BIT P3.4

ORG 0003H; Адрес вектора прерываний INT0
JMP START; Переход на начало выполнения программы
JMP INTERAPTION; Переход на метку для работы с прерыванием

START:
MOV P2,#00H; Обнуление порта Р2, выключение светодиодов VD0-VD7
MOV P3,#04H; В порте Р3.2 находится единица
MOV TMOD,#01010001B; Настройка таймеров-счетчиков (т/с0-таймер, т/с1-счетчик)
MOV TCON,#00000100B; Определение вида прерывания (по переходу из 1 в 0)
MOV IE,#00000001B; Разрешение прерывания INT0
SETB EA; Разрешение всех прерываний

OSN_PROGRAMMA:
; Загораются нечетные светодиоды
M1:
MOV A,#0AAH; Включено 4 светодиода нечетных
MOV R1,#02H;

Nechet_svet: MOV P2,A;
MOV R2,A;
SETB TR0; Включение счетчика
WAIT_M_1: MOV A,TL0;

PR_D1:
JNB D1,D_1; Если замкнут первый датчик переход на подпрограмму
PR_D2:
JNB D2,D_2; Если замкнут второй датчик переход на подпрограмму
PR_D3:
JNB D3,D_3; Если замкнут третий датчик переход на подпрограмму
PR_D4:
JNB D4,D_4

CLR TR0;
MOV TL0,#00H;
MOV A,R2;
XRL A,#0FFH;

DJNZ R1, Nechet_svet

CJNE A,#03H,WAIT_M_1;


;Подпрограмма обработки прерывания
INTERAPTION: PUSH ACC; запись в стек А
PUSH 01H; запись в стек R1
PUSH P2; запись в стек P2
PUSH TL0; запись в стек TL0

MOV P2, #00H; Очистка порта P2
MOV TL0,#00H; Очистка TL0
CLR TR0; выключение счетчика


SETB TR0; включение счетчика
POP TL0; чтение из сетка TL0
POP P2; чтение из стека P2
POP 01H; чтение из стека R1
POP ACC; чтение из стека А
RETI; выход из прерывания

JMP OSN_PROGRAMMA

;Датчик D1 замкнут, отсчет 100 импульсов
D_1:
;Включение светодиодов первого и второго
MOV TL0,#00H; Очистка TL0
S_1:
MOV P2,#01H; включаем 0 светодиод
MOV P2,#02H; включаем 1 светодиод
MOV A, TL0
CJNE A,#1EH,S_1; Ждем до 30 импульса
;Включение светодиодов 5,6
S_2:
MOV P2,#10H; включаем 4 светодиод
MOV P2,#20H; включаем 5 светодиод
MOV A, TL0
CJNE A,#46H,S_2; Ждем до 70 импульса
;Включение светодиодов 6,7
S_3:
MOV P2,#40H; включаем 6 светодиод
MOV P2,#80H; включаем 7 светодиод
MOV A, TL0
CJNE A,#64H,S_3; Ждем до 100 импульса
JMP PR_D1

;Попеременный огонь третьего и четвертого светодиода на 2 импульс
D_2:
OGON:
MOV P2,#04H; ВКЛЮЧЕН 3 СВЕТОДИОД
MOV R1,#02H
MOV P2,#08H; ВКЛЮЧЕН 4 СВЕТОДИОД
MOV R1,#02H
SETB TR0; включение счетчика
WAIT_OG:
MOV A, TL0
CJNE A,#02H,WAIT_OG; ждем 2 импульс
CLR TR0; выключение счетчика
MOV TL0,#00H; Очистка TL0
MOV A,R2
DJNZ R1,OGON;
JMP PR_D2


; Горят все светодиоды
D_3:
MOV P2,#00H; Включен ПЕРВЫЙ светодиод
MOV R1,#0AH
SETB TR0; включение счетчика
WAIT_D3:
MOV A, TL0
CJNE A,#0AH,WAIT_D3; ждем 10 импульс
CLR TR0; выключение счетчика
MOV TL0,#00H; Очистка TL0
MOV P2,#0FFH;
DJNZ R1, D_3;
JMP PR_D3

;Бегущий огонь НА 4-Й ИМПУЛЬС
D_4:
MOV A,#0FEH; Определяем что должен быть включен 0 светодиод
MOV R1,#08H
BEG_OGON:
MOV P2, A; Включаем 0 светодиод
MOV R2,A
SETB TR0; включение счетчика
WAIT_B_O:
MOV A, TL0
CJNE A,#04h, WAIT_B_O; ждем 4 импульс
CLR TR0; выключение счетчика
MOV TL0,#00H; Очистка TL0

MOV A,R2
RL A;
DJNZ R1,BEG_OGON;
JMP PR_D4

END
jommm вне форума Ответить с цитированием
Старый 08.06.2013, 06:33   #2
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Команда JNB <bit>, <re18>. Команда "переход, если бит не установлен"

М.б в данном месте:
JNB D1,D_1; Если замкнут первый датчик переход на подпрограмму
( если бит D1 не установлен (?датчик не замкнут) то переход на D_1 )
команда должна быть
JB D1,D_1;
( если бит D1 установлен (?датчик замкнут) то переход на D_1 )
и аналогично в последующих случаях ?
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка Unable to invoke Code.... sisofcase Общие вопросы Delphi 16 14.07.2011 20:02
Ошибка при компиляции:System Error. Code: 2. Waik Общие вопросы Delphi 0 28.05.2011 20:43
ошибка Unreachable code ArtiSoft Общие вопросы по Java, Java SE, Kotlin 5 23.04.2010 10:46