Таймер для AMTEL 89C2051
11.01.2011, 14:57
|
|
|
Прохожий
Регистрация: 02.12.2010
Сообщений: 5
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Таймер для AT89C2051
Ребят. Помогите малец.
Написал прогу для таймера.
Нужно чтоб схемка с двумя 7сегментными индикаторами считала секунды.
Доходила до 60, а потом начинала заново с 0.
Я собрал схемку и написал прогу. Но... два индикатора считают одновременно, т.е получается такая фигня: 00, 11, 22, 33, ... , 99.
Нужно хотя бы до 14 доделать её)
Прикрепил rar файл. Там и схемка и программка на ассемб.
Последний раз редактировалось Avers90; 11.01.2011 в 15:12.
|
|
|
|
11.01.2011, 15:18
|
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,394
Сказал спасибо: 2,016
Сказали Спасибо 1,356 раз(а) в 591 сообщении(ях)
|
Re: Таймер для AMTEL 89C2051
"малец" помочь вам вряд ли возможно, ибо, как я вижу, вы не удосужились даже блок-схемку или алгоритм нарисовать. Ну посмотрите сами и ответьте хотя б на два вопроса - что делает подпрограмма prind и где куда "пойдет" процессор после выполнения инициализации?
__________________
[ жизнь приятна и красива, если выпить литр пива ]
|
|
|
|
11.01.2011, 15:29
|
|
|
Прохожий
Регистрация: 02.12.2010
Сообщений: 5
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Таймер для AMTEL 89C2051
Просто у нас преподаватель сам толком не разбирается в этом.
Задал нам написать за 4 дня. Первый раз ведёт у нас этот предмет.
Не сочтите за наглость, но помочь могли как нибудь с этой программкой?
Схему собирал наподобие как в учебнике Белова.
Подпрограммка prind насколько мне известно выбирает из знакогенератора число и выводит его на индикатор.
Впервые столкнулся с протеусом и ассемблером, а времени чтоб изучить практически нет. Если не трудно, хоть как нить помогите разобраться.
Если бы проблем не было, я бы и не написал сюда.
|
|
|
|
11.01.2011, 18:11
|
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,394
Сказал спасибо: 2,016
Сказали Спасибо 1,356 раз(а) в 591 сообщении(ях)
|
Re: Таймер для AMTEL 89C2051
Сообщение от Avers90
|
?
Схему собирал наподобие как в учебнике Белова.
|
Покажите схему в jpeg-е или еще чем-то удобоваримом... Протеусами и прочим не пользуюсь я. Обещать не могу, но хотя б на грубые ошибки укажу.
Сейчас у вас та подпрограмма подряд выводит на p1 весь знакогенератор и делает очень много лишнего. Подозреваю, что было задумано вначале сделать переход по содержимому аккумулятора... как в ПИКах... тоже непонятно зачем, когда можно к DPTR-у прибавить...
Давайте схему, попробуем, если будут паузы в делах
__________________
[ жизнь приятна и красива, если выпить литр пива ]
|
|
|
|
11.01.2011, 18:23
|
|
|
Прохожий
Регистрация: 02.12.2010
Сообщений: 5
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Таймер для AMTEL 89C2051
Решил пойти со знакогенератором в лоб, ибо в голове я знаю как сделать легче, а из-за того, что не имею большого представления в данной микросхеме сообразить не могу.
Вместо дешифратора, который в книге использовал 74LS155.
+ транзисторы я убрал(а по моим подозрениям надо бы их было оставить)
7сегментные индикаторы я использовал катодные.
nml
если для Вас будет это затруднительно или как то ещё тогда не делайте.
Не хочу напрягать вас.
|
|
|
|
11.01.2011, 18:45
|
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,394
Сказал спасибо: 2,016
Сказали Спасибо 1,356 раз(а) в 591 сообщении(ях)
|
Re: Таймер для AMTEL 89C2051
Как я понял - "катодные" - это с общим катодом? То есть для зажигания сегмента на сегмент надо подать "1", а на катод - "0". Убрав транзистор, заменили дешифратор - с иверсными выходами - логично, но хватит ли тока 8 мА - сомневаюсь. Ну да ладно, для курсовика может и сойдет. Скажете, что по 1 mA на сегмент - слАбо, но горит  Или скажете, что индикатор калькуляторный - я как-то делал на таком, не помню название - крохотные цимферки под линзочками, там 1 мА был вполне неплохо виден.
после метки main: иначе процессор "уйдет" туда куда не надо. Все делается в прерывании, потому основной цикл просто крутимся на месте
процедура должна вызлядеть так (проглядел - movc A,@A+DPTR)
|
Код:
|
prind: push psw
push DPH
push DPL
mov DPTR,#zg0
movc a,@a+DPTR
mov c,bufT
mov acc.7,c
mov p1,a
pop DPL
pop DPH
pop psw
ret |
И все! Уберите 10 раз повторение.
Это на первый, самый бросившийся в глаза. На остальное пока нет времени, увы
__________________
[ жизнь приятна и красива, если выпить литр пива ]
Последний раз редактировалось nml; 11.01.2011 в 18:58.
|
|
|
|
11.01.2011, 19:43
|
|
|
Прохожий
Регистрация: 02.12.2010
Сообщений: 5
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Таймер для AMTEL 89C2051
nml.
О чем я хотел сказать.
В таком виде prind не запускался у меня. Я не знаю почему. Пришлось писать такой длинный вариант.
А на счёт main.
Он зацикливается на этой метке. И дальше не шагает. Тем самым на индикаторах горят 8.
|
|
|
|
11.01.2011, 19:50
|
|
|
Прохожий
Регистрация: 02.12.2010
Сообщений: 5
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Таймер для AMTEL 89C2051
С main разобрался.
|
|
|
|
11.01.2011, 20:59
|
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,394
Сказал спасибо: 2,016
Сказали Спасибо 1,356 раз(а) в 591 сообщении(ях)
|
Re: Таймер для AMTEL 89C2051
Сообщение от Avers90
|
|
В таком виде prind не запускался у меня. Я не знаю почему. Пришлось писать такой длинный вариант.
|
"Не запускался" - это что значит? В вашем варианте сначала выводился найденный по индексу - а - и базе - dptr - байт, то есть вроде все логично. Но потом по порядку выводились 1,2,3... Смысла сего я не улавливаю.
В цикле main программа и должна крутиться, до появления прерывания.
С выводом мерцающей точки у вас тоже как-то странно. Я бы сделал так
|
Код:
|
;vivod tochki
mov c,timsec.0 ;mercanie tochki
mov a,nomR
cjne a,#1,dn2 ;proverka nomera razryada
clrb c ;tochky vikluchaem
dn2: mov bufT,c ;pomewaem rezyltat v byfer tochki
;Vivod simvola
add a,#tim ;vichislyaem adres v byfere
mov r0,a
mov a,@r0 ;chtenie koda simvola iz byfera
call prind ;vivod na indikator
inc nomR ;yvalichenie nomera tekywego razryada
mov a,nomR
cjne a,#4,dn3 ;Eto poslednii razryad?
mov nomR,#0 ;esli da,to pereiti na pervii
dn3: |
__________________
[ жизнь приятна и красива, если выпить литр пива ]
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:53.
|
|