Полная версия этой страницы:
Помогите пожалуйста
Arch_Grey
May 18 2007, 07:57
Цитата(Igorb @ May 18 2007, 07:55)

Для MPLAB IDE - надо понимать именно на ассемблере? Если не обязательно, то к MPLAB IDE можно например подключить HT-PIC, где в примерах есть работа с АЦП и ЖКИ и разобраться с ними довольно просто.
Если же хочется помучиться, то:
для работы с ЖКИ
http://ww1.microchip.com/downloads/en/AppNotes/00587b.pdf,
а для АЦП есть пример в Mid-Range MCU Family Reference Manual.
Да именно на ассамблере и только MPLAB IDE. Спасибо.
Цитата(Igorb @ May 18 2007, 15:08)

Да именно на ассамблере и только MPLAB IDE. Спасибо.
Студенты отупели и обленились "под корень".
Для кого это было переведено на русский язык и выложено в свободный доступ?
http://www.microchip.ru/lit/?mid=1x0 - работа с АЦП описана подробно.
Вот кусочек из работающей программы. Перед вызовом подпрограммы в буферный регистр KanalADC нужно загрузить требуемый номер канала.
Код
;============================================================================
; подпрограмма измерения напряжения в нужном канале АЦП
;----------------------------------------------------------------------------
; номер нужного канала берется из буфера номера канала
; результат остается в буфере АЦП
;----------------------------------------------------------------------------
IZM_ADC: movf KanalADC,W;номер канала и источник тактиров. АЦП -> в W
bcf STATUS,RP0;выбор банка регистров 0
movwf ADCON0;номер канала АЦП -> в регистр управления АЦП
call T_ADC ;ожид. перед запуском АЦП (д/зарядки емкостей АЦП)
bsf ADCON0,GO ;Запуск А/Ц преобразования
Wait2: btfss ADCON0,GO ;Ожидание завершения преобразования
goto IzmEnd
goto Wait2
IzmEnd: return
Насчет светодиода: при каком условии (по показаниям АЦП) он должен зажигаться? И как он подключен к требуемому порту (анадом, катодом)?
Насчет ЖКИ - неплохо было бы указать, на каком ЖКИ, т.к. в природе их существует много разных.
Здравствуйте. Это снова я. большое спасибо за помощь!!!!!! (И незачем так ругаться я не облинился просто времени мало!!!!!!!!!!!!) С АЦП вроде разобрался вот програмка, в Протеуся вроде все работает.
Проверте плиз.
;Пример работы АЦП
;Определить изменениеUo
list p=16f877
#include <P16F877.INC>
;************************************************************
; переменные
Count equ 0x000
;************************************************************
; вектор, соответствующий полному сбросу
org 00000h ; вектор сброса
goto Start
;************************************************************
;program code starts here
org 00020h ; начало программы в EPROM
Start
clrf PORTB ; Очистка защелки PORTB
bsf STATUS,RP0 ; Переход в банк 1
clrf TRISB ; Настройка выводов PORTB на выход
bcf ADCON1,0
bcf ADCON1,1
bcf ADCON1,2
bcf ADCON1,3
bsf ADCON1,7
bcf STATUS,RP0
bsf ADCON0,0
bcf ADCON0,3
bcf ADCON0,4
bcf ADCON0,5
bcf ADCON0,6
bcf ADCON0,7
bsf ADCON0,2
Loop1
btfsc ADCON0,2
goto Loop1
movf ADRESH,w
movwf FSR
Loop2
bcf ADCON0,2
bsf ADCON0,2
Loop3
btfsc ADCON0,2
goto Loop3
movf ADRESH,w
subwf FSR,0
Loop4
btfsc STATUS,2
goto Loop2
clrw
movlw 0x01
movwf PORTB
goto Loop2
END
А вот с ЖКИ как заклинело немогу вехать и всё, читал инфу но всеравно не могу вьехать. Индикатор на HD44780. Да пожалуста подскажите где скачать таблицу кодов (символов).
Вот фаил со схемой.
volodya
May 21 2007, 08:06
Цитата(Igorb @ May 21 2007, 07:28)

Здравствуйте. Это снова я. большое спасибо за помощь!!!!!! (И незачем так ругаться я не облинился просто времени мало!!!!!!!!!!!!) С АЦП вроде разобрался вот програмка, в Протеуся вроде все работает.
А вот с ЖКИ как заклинело немогу вехать и всё, читал инфу но всеравно не могу вьехать. Индикатор на HD44780. Да пожалуста подскажите где скачать таблицу кодов (символов).
Вот фаил со схемой.
В МПЛАБ ИДЕ (7.50 7.60 точно, 7.10 неуверен) есть АПЛИКАТШИН МАЕСТРО с готовыми модулями для
различного оборудования , в том числе прога для взаимодействия с ЛСД диспл.
присмотритесь. Там только задержки тактирования в ручную формировать нужно.
Цитата(Igorb @ May 21 2007, 07:28)

И незачем так ругаться я не облинился просто времени мало!
Известная проблема, если не делать дело вовремя, а оставлять до того момента, когда уже "времени мало". НЕ оправдание.
Цитата
А вот с ЖКИ как заклинело немогу вехать и всё, читал инфу но всеравно не могу вьехать. Индикатор на HD44780. Да пожалуста подскажите где скачать таблицу кодов (символов).
Что именно тебе не понятно? Рассказывать все - слишком длинно.
http://www.gaw.ru/html.cgi/txt/app/lcd/pic_to_44780.htm - Иcпользование ЖКИ индикаторов на базе контроллера HD44780 и его аналогов совместно с PIC-микроконтроллерами. Там же - пример программы. Мало будет - дам свой (из работающей программы).
Таблица символов одинакова для них всех в части английского алфавита и цифр. В части русского (где он есть вообще) есть разнобой. Смотреть лучше на сайте изготовителя. В прилагаемом файле - один из примеров.
Совет на будущее - не вкладывай картинки в формате BMP - слишком большой размер. GIF, JPG, PNG - гораздо компактнее при достаточном качестве.
Спасибо буду разбираться
Скажите пли кок перейти на вторую строчку?????????
Дополнение (по схеме).
1) не ясно назначение транзистора Q2. Закорачивать батарею через резистор R12 по команде контроллера?
2) какая-то хитрая батарея, дающая 5 В?
3) включение питания ЖКИ: такое - не годится. На ЖКИ всегда будет подаваться не полное напряжение питания, а примерно (Uвых.контролл.-0,6В). Или так и хотелось? Правильно будет вывод Vdd ЖКИ подключить к +5В напостоянно, а вывод Vss ЖКИ - к коллектору транзистора Q1 (коллектор от цепи +5В отключить, естественно).
Схема была не совсем доделала Q2 включат пищалку (на выложеной схеме не стоит) (Схема скачана с Микрочипа- тестовая плата PICDEM 2 Plus) , батарея виртуальная чтоб стабилизатор не рисовать. Напряжение питания на ЖКИ подаётся через переменник (схему уже исправил)
Подскажите плиз как перейти на вторую строчку ЖКИ адре насколько я понял у неё нач с 40h как на него перепрыгнуть???
Замечания по программе:
1) "; переменные
Count equ 0x000" - нулевая ячейка памяти имеет спецфункцию, использовать ее как "свою" переменную не стоит. Для "своих" переменных в этом контроллере адреса - начиная с 20h. В этой программе переменная и не используется - зачем вообще написано?
2) в регистрах ADCON0, ADCON1 не обязательно устанавливать каждый бит отдельно, можно туда писать целый байт сразу (или изменять несколько бит регистра по заданной маске) - экономится количество команд программы и быстродействие.
3) Регистр FSR - это тоже регистр спецфункции, и в твоей программе он используется не по назначению. Лучше так не делать (он в программе может и "по назначению" понадобиться, а ты его занял).
4) команда "clrw" лишняя. Константу в W можно грузить и без предварительной очистки.
5) В PORTB не обязательно грузить целый байт, можно управлять каждым битом (пином) индивидуально.
Общее пожелание - рекомендую хотя бы на первых порах не лениться и писать комментарии чуть не к каждой строчке программы. Иначе через 2 недели будешь вспоминать - а что же я тут ХОТЕЛ сделать?
Да и логические ошибки легче искать, двойная запись получается: вот это задумывалось (комментарий), а вот это реально сделано (команды). Это, конечно, дополнительная работа, но когда через пару месяцев нужно вернуться к этой программе - проблем гораздо меньше по вхождению в суть.
Цитата(Igorb @ May 21 2007, 11:49)

Подскажите плиз как перейти на вторую строчку ЖКИ адре насколько я понял у неё нач с 40h как на него перепрыгнуть???
Нужно вначале в виде команды заслать в ЖКИ требуемый адрес. Далее посылать данные, они в ОЗУ ЖКИ будут располагаться с заданного адреса.
Ладно, вот тебе в приложении программа реального (выпускаемого сейчас) прибора. Я из нее вытер опознавательные признаки организации-разработчика и самого прибора. В ней все равно много для тебя лишнего, но "изюм выковыривать" мне некогда. Схему не прикладываю, т.к. все, что тебе от нее может понадобиться, в программе прокомментировано. То, что тебя сейчас не касается, можешь смело пролистывать. Подпрограммы для ЖКИ - где-то после середины программы.
Сразу скажу, что многое сделано не оптимально (в частности, формирование сообщений для отображения на ЖКИ), зато наглядно. А быстродействие и объем программы в данном случае не были критичны.
Спасибо за помощь, буду юзать.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.