Форум » Для начинающих. » Сдвиговый регистр 74hc595 » Ответить

Сдвиговый регистр 74hc595

filaret111: Доброго времени суток! кто делал световые эффекты на 74нс595 под управлением pic16f84f помогите разобраться с программой управления сдвиговым регистром? или если у кого есть скинте исходник. Заранее СПАСИБО!

Ответов - 12

Photographer: filaret111 пишет: pic16f84f помогите разобраться с программой управления сдвиговым регистром? Давайте попробуем помочь разобраться с Вашей программой. Итак, чего Вы достигли и что не получается?

RW1ZK: filaret111 пишет: помогите разобраться с программой управления сдвиговым регистром Подобного добра в инете просто море! Если под 12F629 вас устроит, то держите: http://zalil.ru/30307225

filaret111: мне бы под 16f84a, другого нет. а с регистром просто хотелось бы разобраться, очень интересная микросхема), только вот самому не получается. вот программа LIST p=16F84a ; "Привязка" MPLAB к микроконтроллеру PIC16F84A. [pre2] __CONFIG 03FF1H PC equ 02h Status equ 03h TrisB equ 06h PortB equ 06h IntCon equ 0Bh OptionR equ 01h LRAM1 equ 10h ;регистр выбора активного бита 74нс595 LRAM2 equ 11h ;регистр вывода данных в 74нс595 LRAM3 equ 12h ;регистр количества стробов LRAM4 equ 13h LRAM5 equ 14h LRAM6 equ 15h RP0 equ 5 C equ 0 W equ 0 F equ 1 Z equ 2 org 0 Start clrf IntCon bsf Status,RP0 ;переход в первый банк clrf PortB ;установить все выходы порта В на выход movlw .143 ;установить коэффициент деления, выключение подтягивающих регистров movwf OptionR bcf Status,RP0 ;переход в нулевой банк clrf PortB ;сброс всех защёлок порта В в ноль movlw .16 ; movwf LRAM1 LARM1 decfsz LRAM1,f ;декремент регистра переключения светодиодов btfss Status,Z ;проверка флага нулевого результата, goto Start ;если ноль то переход на начало исполнения программы movf LRAM1,w ;копировать число регистра выбора активного бита 74нс595 call BEG ;условный переход в пп BEG movwf LRAM2 ;копировать число из аккумулятора в регистр вывода данных в 74нс595 movlw .8 ;Записать константу в регистр колличества стробов под данные movwf LRAM3 VIVOD rlf LRAM2,f ;сдвиг влево регистра вывода данных btfss Status,Z ;проверка флага нулевого результата goto ONE goto ZERO ONE bcf PortB,1 ;если ноль то вывести ноль на шину данных goto STROB ZERO bsf PortB,1 ;если не ноль то вывести единицу на шину данных nop STROB bsf PortB,2 ;строб по выводу данных nop bcf PortB,2 decfsz LRAM3,f ;декремент регистра колличества стробов goto VIVOD bsf PortB,3 ;строб по закреплению данных в 74нс595 nop bcf PortB,3 nop movlw .200 ;з movwf LRAM4 ; а movlw .250 ; д movwf LRAM5 ; е movlw .5 ; р movwf LRAM6 ; жка ZADER clrwdt ;сброс сторожевого таймера decfsz LRAM4,f goto ZADER decfsz LRAM5,f goto ZADER decfsz LRAM6,f goto ZADER goto LARM1 BEG addwf PC,f ;записать число в аккумулятор retlw b'00000001' retlw b'00000010' retlw b'00000100' retlw b'00001000' retlw b'00010000' retlw b'00100000' retlw b'01000000' retlw b'10000000' retlw b'01000000' retlw b'00100000' retlw b'00010000' retlw b'00001000' retlw b'00000100' retlw b'00000010' retlw b'00000001' retlw b'00000000' end[/pre2]


RW1ZK: Вы для начала просмотрите предложенный вариант. Неужели нужно написать программу за Вас? Разницы между камнями - минимум. Комментарии в программе есть, так что вперёд и с песней! Что не ясно - милости прошу.

Sergey Roslik: filaret111 пишет: Доброго времени суток! кто делал световые эффекты на 74нс595 Вы с этой микросхемой разобрались, как она работает?

Алексей: filaret111 пишет: VIVOD rlf LRAM2,f ;сдвиг влево регистра вывода данных btfss Status,Z ;проверка флага нулевого результата А вы точно уверены что нужно флаг Z проверять???, наверное все таки флаг С. Раз уж сдвигаете, а потом выводите в порт, то Z здесь не при чем... Наверное поэтому и не работает... дальше не вникал...

filaret111: я нашёл инфу по нему сдесьЗнакомство с регистром сдвига 74нс595 , на работе есть оборудование с этими микросхемами, надо было его сделать(там как раз накрылось 2шт, искал че за микросхема и чем можно заменить), нашёл в нэти эту инфу и меня заинтересовала эта микросхема. Вообщем разобрался но видимо не совсем

Sergey Roslik: А сколько лампочек всего? Схема есть

Алексей: filaret111 пишет: но видимо не совсем Это скорее всего из за флага...

Photographer: [pre2] LARM1 decfsz LRAM1,f ;декремент регистра переключения светодиодов btfss Status,Z ;проверка флага нулевого результата, goto Start ;если ноль то переход на начало исполнения программы [/pre2] Команда decfsz не влияет на флаг Status,Z Поэтому [pre2] BEG addwf PC,f ;записать число в аккумулятор [/pre2] Будет всегда переходить на одну и ту же строчку [pre2] retlw b'00000000' [/pre2] Сам сможешь исправить?

filaret111: Спасибо Вам Photographer заменил команду decfsz LRAM1,f на decf LRAM1,f и спасибо Алексею за то что заметил мою невнимательность, грешен я, всё заработало

Photographer: Проблемка такая. Объявил регистры [pre2] shift_reg :NUM_SHIFT_REG[/pre2] Как теперь перебрать эти регистры... ? Например [pre2] rlf shift_reg+"переменная" [/pre2] Похоже прибавить к адресу переменную невозможно. Как по другому сделать... указатели? Что то с косвенной адресацией надо делать. Разобрался. Получилось через косвенную адресацию. Этот пост можно удалять



полная версия страницы