PIC-контроллеры(P16F877A) что? как? почему я?

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 6
Зарегистрирован: Вт сен 29, 2009 17:25:07

Сообщение Valerian »

Уважаемые Коты, извините за столь наглое нарушение вашего спокойствия, но у меня возникла проблема, справиться с которой самостоятельно просто не в силах - и я рассчитываю на вашу помощь.

Не могу сказать, что совсем не знаком с электроникой, т.к. каждое утро я имею привычку включать электрический чайник, но на этом мои познания в принципе и заканчиваются. А задача поставлена так:
к порту D подключено 8 светодиодов. Организовать "бегущий огонь". Кнопки, подключенные к старшим разрядам порта B, управляют скоростью бега. (Режи работает, пока кнопки нажаты)
Мастерского познания чайника в данном случае оказалось недостаточно. Попытался разобраться сам, спаял маленькую аналоговую схему (оказалось, что это не так сложно, хотя процесс весьма трудоемкий), но просветлению в поле микроконтроллеров это никак не способствовало.

В моем представлении это выглядит так:
Изображение

как смоделировать нажатие клавиш порта B?
я представляю программу так:

//KZ - коэффициент_задержки

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

@begin:
KZ=B1+B2+B3+B4     //считаем количество нажатых клавиш
JZ @end
D1=1;                    //загорелся первый светодиод(по крайней мере я на это надеюсь)
delay(kz*'сколько_надо');
D1=0;
delay(kz*'сколько_надо');
D2=1;
delay(kz*'сколько_надо');
D2=0;
.....
D7=1;
delay(kz*'сколько_надо');
D7=0;
@end:
goto begin;
Все надо написать на ассемблере (личном, пиковском)... Пишут, что даже есть программы для моделирования... но только моделировать пока нечего... Время поджимает, а я в прострации...

Да, физически устройства нет и программатора тоже... Как делать/проверять - ума не приложу... Буду благодарен за любую информацию - желательно как можно максимум информативную, ибо времени до армагеддона 2 дня

ЗЫ я боюсь это не последнее мое столкновение с электроникой и программируемыми контроллерами в частности. Скажите, надо ли их приобретать, если да, то какие. Если есть какая-нибудь литература "для полных идиотов" - тоже буду благодарен
Реклама
Встал на лапы
Сообщения: 135
Зарегистрирован: Чт окт 25, 2007 11:00:10
Откуда: Russland

Сообщение krant »

877 я думаю вам лучше пока что отложить, с вашим инуждами вполне может справиться и PIC 16F628A.

Если вы хотите подключить кнопки на порт В , то вам необзодимо всего-лишь подать питание на нужный порт (с питанием не переусердствовать, максимальное значение лучше использовать не больше того что питает контроллер).

Как мне кажется бегущая строка пока что сложновато, попробуйте сперва хотябы зажечь диод, после им помигать, а дальше потихонечку и до бегущей строки доберётесь (именно так я когда то начинал).

К сожалению я немогу вам ничего подсказать по вашему коду, т.к. не знаком с его синтаксисом, я бы вам порекомендовал PICC :)

Схем программаторов море.
Реклама
Родился
Сообщения: 6
Зарегистрирован: Вт сен 29, 2009 17:25:07

Сообщение Valerian »

877 я думаю вам лучше пока что отложить, с вашим инуждами вполне может справиться и PIC 16F628A.
В университете только 877 и на него надо залить готовый код
К сожалению я немогу вам ничего подсказать по вашему коду, т.к. не знаком с его синтаксисом, я бы вам порекомендовал PICC
Код является не более чем изложением общей направленности мысли и был создан лично мной для демонстрации общей логики :shock:
Как мне кажется бегущая строка пока что сложновато, попробуйте сперва хотябы зажечь диод, после им помигать, а дальше потихонечку и до бегущей строки доберётесь (именно так я когда то начинал).
Пока что для меня обе эти задачи равносильно невыполнимы :?
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Сообщение otest »

Здесь почитайте http://kazus.ru/articles/20.html
Реклама
Эиком - электронные компоненты и радиодетали
Электрический кот
Аватара пользователя
Сообщения: 1051
Зарегистрирован: Вт окт 21, 2008 11:46:23
Откуда: Барнаул

Сообщение Igor_67 »

Можно и не имея физического контакта с МК и программатором, все написать и проанализировать. Вот немного литературы по ПИКам. Прочти внимательно. Те программы, которые там рекомендуются - скачай. И будет тебе счастье ( по крайней мере, хоть начнешь понимать, о чем говорить и спрашивать). Вот ссылка на учебник: http://xtrason.mylivepage.ru/file/2344/ ... C3%2C4.rar , кстати, рекомендуемые в учебнике программы тоже есть на моем сайте. :tea:
К тому же не помешало бы и даташит на указанный МК немного покурить... :idea:
Цапу крутить надо!!! Ку или не ку?
Реклама
Родился
Сообщения: 6
Зарегистрирован: Вт сен 29, 2009 17:25:07

Сообщение Valerian »

Можно и не имея физического контакта с МК и программатором, все написать и проанализировать. Вот немного литературы по ПИКам. Прочти внимательно. Те программы, которые там рекомендуются - скачай. И будет тебе счастье ( по крайней мере, хоть начнешь понимать, о чем говорить и спрашивать). Вот ссылка на учебник:
Вы можете скачать файл с помощью секретного кода. :(
Реклама
Электрический кот
Аватара пользователя
Сообщения: 1051
Зарегистрирован: Вт окт 21, 2008 11:46:23
Откуда: Барнаул

Сообщение Igor_67 »

Не понял вопроса! О каком секретном коде вы говорите? :dont_know:
Ниже то прочитайте, надо просто тупо зарегиться. Какие проблемы?
Отсылаю на свой сайт по причине того, что емкие файлы на "Коте" не крепятся к месаге. А жаль...
Последний раз редактировалось Igor_67 Вт сен 29, 2009 19:26:11, всего редактировалось 1 раз.
Цапу крутить надо!!! Ку или не ку?
Родился
Сообщения: 6
Зарегистрирован: Вт сен 29, 2009 17:25:07

Сообщение Valerian »

извините, разобрался - бесплатное скачивание для зарегистрированных пользователей. Большое спасибо
Электрический кот
Аватара пользователя
Сообщения: 1051
Зарегистрирован: Вт окт 21, 2008 11:46:23
Откуда: Барнаул

Сообщение Igor_67 »

Да не за что, пользуйтесь на здоровье!
Цапу крутить надо!!! Ку или не ку?
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

как-то странно выглядит все
человек учится в универе и внезапно ему дают задание, где он ничего не понимает
либо не ходил на заанятия, либо декан заставил гуманитариев изучать сею науку
но во второе я что-то слабо верю

автор, а какой вариант ответа у тебя?
Электрический кот
Аватара пользователя
Сообщения: 1051
Зарегистрирован: Вт окт 21, 2008 11:46:23
Откуда: Барнаул

Сообщение Igor_67 »

Да какая разница? Самое главное в этой ситуёвине, что человек ХОЧЕТ разобраться! ИМХО! Ну или, по крайней мере, ему таки придется это сделать... :)))
Последний раз редактировалось Igor_67 Вт сен 29, 2009 19:34:29, всего редактировалось 1 раз.
Цапу крутить надо!!! Ку или не ку?
Встал на лапы
Сообщения: 135
Зарегистрирован: Чт окт 25, 2007 11:00:10
Откуда: Russland

Сообщение krant »

в среде PICC

это описывается в 3 строчки (причём две из них для вас может быть позже станут как слова "Здравствуйте" перед началом разговора)

while(1){
output_high(PIN_B1);
}

где while(1) - это бесконечный цикл. если вы не знакомы с синтаксисом С, то "{" и "}" это грубо говоря "метки" которые подсказывают компилятору: "здесь начинается ("{") и заканчивается ("}") код относящийся к условию while(1)"

вторая строчка непосредственно зажигает диод на Ножке B1 (грубо говоря вместо В1 может стоять Е5, А4,В2, т.е. любой пин порта ввода-вывода).

Кстати, вместо :
output_high(PIN_B1),
так же можно писать:
output_bit(PIN_B1,1) (1 - это значение бита, либо 0 (тока нет, порт при этом может испольнять роль "минуса", либо 1 - ток есть).
так же можно зажигать весь порт целиком:
output_b(255) (число может ввариироваться от 0~255, при значении 0 не горит ниодин диод, при 255 горят все ножки, от B0 до B7).
Электрический кот
Аватара пользователя
Сообщения: 1051
Зарегистрирован: Вт окт 21, 2008 11:46:23
Откуда: Барнаул

Сообщение Igor_67 »

На "СИ", конечно проще, но у него задание то написать на АСМе... :dont_know:
Цапу крутить надо!!! Ку или не ку?
Встал на лапы
Сообщения: 135
Зарегистрирован: Чт окт 25, 2007 11:00:10
Откуда: Russland

Сообщение krant »

ох моя невнимательность :beer:

Надо былобы уточнить, надо предоставить hex или же исходники тоже.
Родился
Сообщения: 6
Зарегистрирован: Вт сен 29, 2009 17:25:07

Сообщение Valerian »

Си как-то более приятен :))
А есть какие-нибудь программы для интерпретации С в асм и цифр в асм? :roll:


новая попытка. Имеет право на жизнь? В чем протестировать бы?

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


#include "P16F877A.INC"

	ORG	0
START	BSF	STATUS,RP0
	CLRF	TRISB		; порты A и D на вывод
	CLRF	TRISD		;
	BCF	STATUS,RP0

BEGIN	MOVLW	0xFF		
	MOVWF	PORTB		;забили порт B еденицами(в битах нажатых кнопок должен установиться 0)
	MOVLW	0x01		
	MOV	PORTD,W

TRY	MOVLW	RD1
	ADDLW	RD2
	ADDLW	RD3
	ADDLW	RD4
	JZ	BEGIN
	CALL	DELAY
	RLF 	PORTD
	JMP @TRY

DELAY				;задержка
	NOP;
	NOP;
	NOP;
	NOP;
	NOP;
	NOP;
	DEC	W
	JNZ	@DELAY
              
         END
Надо былобы уточнить, надо предоставить hex или же исходники тоже.
полный отчет с блок-схемой и словесном описании работы :shock:
Встал на лапы
Сообщения: 135
Зарегистрирован: Чт окт 25, 2007 11:00:10
Откуда: Russland

Сообщение krant »

проверить всё это дело можешь в Proteus. Скачивай и пользуйся.
Друг Кота
Аватара пользователя
Сообщения: 7379
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

MOVWF PORTB ;забили порт B еденицами(в битах нажатых кнопок должен установиться 0)
Порт спалишь. Это не MSC51. Port B не надо программировать на вывод. Надо на ввод.
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Сообщение otest »

Бросилось в глаза
при переходе по CALL должен быть выход RETURN.
Друг Кота
Аватара пользователя
Сообщения: 7379
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Вообще-то для предотвращения армаггедона мало данных. Например не указано от чего тактируется микросхема. Кстати, мне подумалось, что в таком случае приемлемую задержку можно организовать watchdog-ом. Надо сконфигурировать пределитель на watchdog и установить коэффициент деления такой, чтобы соответствовал максимальной скорости. а дальше примерно так:
сравнить переменную delay с числом набранным кнопками (если кнопки замыкаются на массу, то предварительно инвертировать xorlw 0xff)
если больше, то обнуляем delay и сдвигаем огоньки.
Иначе инкрементируем delay.
Укладываем процессор в sleep и по побудке переходим на начало этого цикла.
Вот пример как я делал для 628-го кристалла UTP сканер (здесь были аналогичные конструкции)

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

;    старт программы. начальная инициализация.
;
         __CONFIG        _CP_OFF & _PWRTE_ON & _WDT_ON & _ER_OSC_CLKOUT & _LVP_OFF & _BODEN_OFF
; Настройка портов:
; RB0-7 - выходы на разъем
; RA0-4 - пока выходы висящие. кроме 1, к которому подключена кнопка
start:
        page0                   ; регистры 00-7f
        clrf    porta           ;
        clrf    portb
        page1                   ; регистры 80-ff
        movlw   b'00000000'
        movwf   trisb
        movlw   b'00000000' | 1<<key
        movwf   trisa
;
        movlw   1<<NOT_RBPU | 1<<PSA | 1<<PS2 | 1<<PS1          ; коэф.деления 1:64, подкл.к WDT,
        movwf   option_reg      ; тактируется от внут., нагрузки выкл.
;
        page0
;
;
        clrwdt
startclock:
;
        incf    i
        movf    i, w
        call    scanseq
        movwf   portb
        sleep
;
        goto    startclock
;
Коэффициент 1:64 - это около 1 секунды, думаю, для этой задачи я взял бы в 16 раз меньше - 1:4.
Мявтор!
Аватара пользователя
Сообщения: 878
Зарегистрирован: Чт авг 07, 2008 09:12:38
Откуда: не скажу

Сообщение Настя »

Valerian - вот вам счастье. С вас бутылка буратино.
Асменный проект, откомпилированный в MPLAB IDE v8.30
+ проект Протеуса 7.2 (SP6)

см вложенные файлы

...а чтобы вам скучно не было, кнопки на D, светодиоды на B.
Вам остается перекинуть местами линии B и D и не забыть
использовать возможность внутренних подтягивающих
резисторов на линиях порта B (перекидывать в программе).

+ картинка схема
Вложения
test.GIF
картинка схема
(33.3 КБ) 639 скачиваний
test.rar
Асменный проект, откомпилированный в MPLAB IDE v8.30
+ проект Протеуса 7.2 (SP6)
(25.7 КБ) 184 скачивания
натуральная блондинка
Контактная информация:
Закрыто

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