74HC164 с PIC

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Sams
Открыл глаза
Сообщения: 44
Зарегистрирован: Вт апр 19, 2011 16:35:57

74HC164 с PIC

Сообщение Sams »

Всем доброго времени суток. Хочу спаять простенькую схемку - статистическая светодиодная индикация на 8-ью светодиодах, использую 8-ми битный регистр сдвига - микросхема 74HC164. Т.е. к каждому из выходов микросхемы по одному светодиоду, а управляющий сигнал, сброс и собственно данные - к МК PIC16F84A.

Проблем не возникает абсолютно никаких, все довольно просто. Вопрос заключается в оптимизации.

До чего я додумался:

Изображение

RA0 - сброс
RA1 - данные
RA2 - управляющий сигнал

Алгоритм программы таков:
1. Устанавливаем или сбрасываем RA1 - задаем данные.
2. Устанавливаем бит RA2, т.е. делаем фронт управляющего сигнала.
3. Сбрасываем бит RA2, т.е спад управляющего сигнала.

Программа получается довольно таки громоздкой:

Код: Выделить всё

	bsf	PORTA,0
	bsf	PORTA,1
	bsf	PORTA,2
	bcf	PORTA,2
	bsf	PORTA,2
	bcf	PORTA,2
	bsf	PORTA,2
	bcf	PORTA,2
	bsf	PORTA,2
	bcf	PORTA,2
	bsf	PORTA,2
	bcf	PORTA,2
	bcf	PORTA,1
	bsf	PORTA,2
	bcf	PORTA,2
	bsf	PORTA,2
	bcf	PORTA,2
	bsf	PORTA,1
	bsf	PORTA,2
	bcf	PORTA,2


Собственно в чем заключается вопрос, как более рациональней организовать это дело? Возможно как-то управляющий сигнал повесить на таймер? Или в основном используется такой метод?

Заранее благодарен.
Реклама
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: 74HC164 с PIC

Сообщение dosikus »

Sams писал(а):
Собственно в чем заключается вопрос, как более рациональней организовать это дело?
Забудьте про вашу "программу" , это бред.
Ищите софтовый SPI
Реклама
Sams
Открыл глаза
Сообщения: 44
Зарегистрирован: Вт апр 19, 2011 16:35:57

Re: 74HC164 с PIC

Сообщение Sams »

а есть какие-либо примеры реализации?
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: 74HC164 с PIC

Сообщение pyzhman »

Смысл прицеплять Reset к МК? Все равно забиваем данные, они затрут предыдущее состояние. Какая разница, будут они затирать нули или единицы или то и другое в куче? А программно организовать цикл на 8 шагов. В каждом шаге установка нужного значения на RA1, импульс на RA2.
Docendo discimus
Реклама
Эиком - электронные компоненты и радиодетали
Sams
Открыл глаза
Сообщения: 44
Зарегистрирован: Вт апр 19, 2011 16:35:57

Re: 74HC164 с PIC

Сообщение Sams »

Смысл прицеплять Reset к МК? Все равно забиваем данные, они затрут предыдущее состояние. Какая разница, будут они затирать нули или единицы или то и другое в куче?
Согласен. Но:
1. Я просто тестировал, осваивал принцип работы микросхемы.
2. Если нужно записать в регистр все нули, зачем делать кучу лишних "движений", когда можно подав один импульс получит желаемый результат. Да, может быть оно того и не стоит - терять целую ножку МК, но в данной схеме я могу себе позволить такую роскошь.
А программно организовать цикл на 8 шагов. В каждом шаге установка нужного значения на RA1, импульс на RA2.
Ну это фактически тоже самое, что я и сделал. Просто не в цикле, а расписал как в примитивном линейном программировании.
Реклама
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: 74HC164 с PIC

Сообщение pyzhman »

Sams писал(а):я могу себе позволить такую роскошь.
Вы спрашивали про оптимизацию...
Sams писал(а):Просто не в цикле
Так вы спрашивали про оптимизацию...
Docendo discimus
Реклама
Sams
Открыл глаза
Сообщения: 44
Зарегистрирован: Вт апр 19, 2011 16:35:57

Re: 74HC164 с PIC

Сообщение Sams »

Я спрашивал не про оптимизацию конкретно своего метода, а оптимизацию в целом с использованием регистров сдвига. Я уверен, что есть нечто более рациональней, чем метод, использованный мною.
Оптимизировать свой код я смогу без проблем. Я просто хочу узнать как еще это можно организовать.

я могу себе позволить такую роскошь.
Вы спрашивали про оптимизацию...
Ну собственно RESET тут вообще не играет роли. Хорошо, я с вами согласен, лучше ее полностью не задействовать, лишняя трата драгоценных выводов.
FlySnake
Мучитель микросхем
Сообщения: 429
Зарегистрирован: Пт ноя 20, 2009 20:38:12
Откуда: Калининград (Koenigsberg)
Контактная информация:

Re: 74HC164 с PIC

Сообщение FlySnake »

Вот пример как я делал когда-то

Код: Выделить всё

#define SDC GPIO,4 
#define SDO GPIO,2

.....

 spi_wr       movlw .8                                ; load count value
                 movwf COUNTER0                  ;
                 bcf SDC                                 ; clock low
                 bcf SDO                                 ; data low
                 rrf     DOUT,f                          ; shift digit code into carry
                 btfsc STATUS,C                  ; zero? if yes - keep it low
                 bsf SDO                                 ; else set to high
                 bsf SDC                                 ; pulse clock
                 bcf SDC                                 ;
                 decfsz COUNTER0,f               ; ... 8 times
                 goto $-7                                ;
                 return
DOUT - байт для задвигания в регистры. Можно его передавать в W при вызове spi_wr
Сброс в этих регистрах полезен когда их большой массив последовательно и нужно быстро обновить данные, например много индикаторов и перезадвижки будут заметны на глаз.
Sams
Открыл глаза
Сообщения: 44
Зарегистрирован: Вт апр 19, 2011 16:35:57

Re: 74HC164 с PIC

Сообщение Sams »

Всем спасибо. Буду совершенствовать данный метод.
Ищите софтовый SPI
А что по поводу SPI, я так глянул, там для моей задачи наоборот слишком громоздко. Но спасибо за инфу, буду хоть знать о существовании оного.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»