Перейти к содержанию

Зацикливание Кода На Несколько Повторений.


hardbar

Рекомендуемые сообщения

breq это не вызов пропрограммы а условный переход

Значит будет сброс, проблем-то.

В Студии и Протеусе программа работает.

Изменено пользователем COKPOWEHEU

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

В симуляторах 0, в реальности - мусор. С другой стороны автор говорил что код доходит до определенного значения. Наверное доходит он с первого иначе бы была указана и эта странность

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Автор точно весь код выложил? Например, в задержке (wait) используется регистр timer, но нигде нет записи в него какого-либо значения.

Некоторые поправки, не вдаваясь в подробности кода:

.include "tn2313def.inc"
.list
.def temp=r16
.def temp1=r17
.def tim=r18
.def timer=r19
.def pob=r20
;-----------------------------
.macro outi
ldi temp,@1
out @0,temp
.endm
.cseg
.org 0
rjmp reset
.org 0x0013
;----------------------------
reset:
cli
outi spl,low(ramend)
outi ddra,0xff
outi ddrd,0xff
outi ddrb,0xff
outi porta,0x00
outi portd,0x00
outi portb,0x00
outi acsr,0x80
outi tccr0b,0x05
ldi timer,200
sei
;------------------------------
ReadArray:
clr temp1
ldi ZH,High(Array*2) ;загрузка начального адреса массива
ldi ZL,Low(Array*2)
r_a:
cpi temp1,31
breq main
lpm pob,Z+							 ;загрузка из ПЗУ
inc Temp1					    ;увеличение внутр. адреса
out PortB,pob    ;вывод в порт
rcall wait
rjmp r_a
;------------------------------
main:
rjmp main			
;--------------------------------
wait: ;Все что снизу задержка на таймере.
ldi tim,0
out tcnt0,tim
wt1:
in tim,tcnt0
cp tim,timer
brlo wt1
ret
;-------------------------------------
Array:
.db 0b10000001,0b01000010
.db 0b00100100,0b00011000
.db 0b00011000,0b00111100
.db 0b01111110,0b11111111
.db 0b11100111,0b11000011
.db 0b10000001,0b11000001
.db 0b11100001,0b11110001
.db 0b11111001,0b11111101
.db 0b11111111,0b01111111 ;строка где останавливаеться.
.db 0b00111111,0b00011111
.db 0b00001111,0b00000111
.db 0b00000011,0b00000001
.db 0b00000011,0b00000101
.db 0b00001001,0b00010001
.db 0b00100001,0b01000001

Изменено пользователем Геннадий
Ссылка на комментарий
Поделиться на другие сайты

Автор точно весь код выложил? Например, в задержке (wait) используется регистр timer, но нигде нет записи в него какого-либо значения.

ldi timer,200

И, видимо, вместо

breq main

нужно

breq ReadArray

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

Ссылка на комментарий
Поделиться на другие сайты

вряд ли, скорее после окончания светового эффекта надо зациклиться. Впрочем автору нужна только проверка чтения из ПЗУ (правда не слишком понятно зачем), там это несущественно.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Так я и предложил зациклится.

По крайней мере в исходнике сделано так. Т.е. световой эффект идёт по кругу.

Изменено пользователем Григорий Т.

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Что то я зашел в тупик. Не могу понять что не так сверял с сайтами и прежними проектами вроде верно. Но неработает.

Если кто может проверьте пожалуста.


.include "tn2313def.inc"
.list
.def temp=r16 ;переименуем регистр под удобное имя
.def cicle=r17
.def tim=r18
.def timer=r19
.def numer=r21
.equ ver=250
.equ niz=10
.def znag=r23
;--------------------------------------
;ПАМЯТЬ И УСТАНОВКА ПРЕРЫВАНИЙ
;--------------------------------------
.cseg ;выбор памяти. внашем случае работаем с flesh.
.org 0 ;начальный адрес
rjmp reset ;прерывание по сбросу
rjmp t0
rjmp t1
.org 0x0013
;------------------------------------------
;ИНИЦИАЛИЗАЦИЯ ПОРТОВ, ПРЕРЫВАНИЙ,ТАЙМЕРОВ.
;------------------------------------------

reset: ;
cli ;запрет прерывания
ldi temp,ramend ;установка нижней границы стека
out spl,temp ;
ldi temp,0x05 ;пред-делитель
out tccr0b,temp ;таймера
ldi temp,0x80 ;отключение
out acsr,temp ;чегото там
ldi temp,(0<<ISC00)|(1<<ISC01)|(0<<ISC10)|(1<<ISC11)
out MCUCR,temp
ldi temp,(1<<INT0)|(1<<INT1) ;глобальное разрешение прерывния
out GIMSK,temp
ldi temp,0b11111111 ;настройка порта на
out ddrb,temp ;вод.вывод
ldi temp,0b00000000 ;подтяжка резистрами
out portb,temp ;установка в порте
ldi temp,0b11110011 ;настройка порта на
out ddrd,temp ;вод.вывод
ldi temp,0b00001100 ;подтяжка резистрами
out portd,temp ;установка в порте
ldi timer,100 ;задержка
ldi numer,0b00000001
sei ;разрешение прерывания
;-------------------------------------------
;ОСНОВНАЯ ПРОГРАМА.
;-------------------------------------------

Shift:
	 sbi portd,0
	 out portb,numer




	 rcall wait		 ;вызов п/п Delay(вывод+задержка)
	 cpi numer,0b10000000 ;сравнить Temp с крайним значением
	 breq Init		 ;если равно - перейти на загрузку нач. значения

	 lsl numer		 ;иначе - сдвиг влево
	 rjmp Shift		 ;перейти в начало цикла Shift

Init: ldi numer,0b00000001 ;загрузка начального значения

	 rjmp Shift		 ;перейти в начало цикла Shift
;---------------------------------------------------------------------;
; ПП задержки
;---------------------------------------------------------------------;
wait: ;Все что снизу задержка на таймере.
ldi tim,0
out tcnt0,tim
wt1:
in tim,tcnt0
cp tim,timer
brlo wt1
ret
;---------------------------------
t0:
cli
in R5,SREG
push R5

sub timer,znag

pop r5				
out SREG,R5
sei
reti
;---------------------------------
t1:
cli
in R5,SREG
push R5

add timer,znag

pop r5				
out SREG,R5
sei
reti

Изменено пользователем hardbar

Очень люблю спасибку.

Спасибка ни кого еще не убила.

Професия: Електро-механик.

Ссылка на комментарий
Поделиться на другие сайты

R5 не имеет смысла помещать в стек (он не используется в основном цикле). Думаю, не стоит ждать срабатывания прерывания от таймера Т0. Ты сам его обнуляешь в цикле задержки, причем гораздо чаще, чем он успеет досчитать до события возникновения прерывания. Поэтому вычитания значения znag из длительности задержки (timer) не произойдет. Да и значение регистра znag не определено в программе. Как-то так, на первый взгляд.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...