Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 30.12.2007, 16:47  
J-t
Частый гость
 
Регистрация: 18.10.2007
Сообщений: 22
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
J-t на пути к лучшему
По умолчанию Работа порта ввода-вывода у Pic16f628A

Всем привет.
Вот какая штука:
Есть кнопка, микроконтроллер и два светодиода.
Принцип: нажимаю кнопку- загорается один светодиод, нажимаю еще раз- загорается второй, в итоге два горят.
Написал программу, зажигаю светодиод командой BSF и указанием нужного бита в PORTB. И что получаю: при нажатии один раз- первый загорается, при нажатии второй раз- первый гаснет а второй загорается. Неужели при установке одного бита регистра в 1, остальные обнуляются? Что не так делаю? Подскажите.
Реклама:
J-t вне форума  
Непрочитано 30.12.2007, 17:18  
vdlab
Гражданин KAZUS.RU
 
Аватар для vdlab
 
Регистрация: 17.07.2006
Адрес: PV.DP.UA
Сообщений: 620
Сказал спасибо: 3
Сказали Спасибо 60 раз(а) в 48 сообщении(ях)
vdlab на пути к лучшему
По умолчанию

Код в студию.
__________________
Если ты читаешь это - значит тебе нечем заняться...
vdlab вне форума  
Непрочитано 30.12.2007, 17:25  
J-t
Частый гость
 
Регистрация: 18.10.2007
Сообщений: 22
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
J-t на пути к лучшему
По умолчанию

Код:
start
               clrwdt
               clrf         INTCON
               clrf         PORTB
               movlw        0x7
               movwf        CMCON
               bsf          STATUS,RP0
               movlw        0x2
               movwf        TRISB
               movlw        0x87
               movwf        OPTIONR                                                    bcf          STATUS,RP0   
M0 
               clrf         PORTB
               call         SV               
               btfss        PORTB,1
               goto         M1
               goto         M0
M1
               call         SV
               bsf          PORTB,4
               call         SV
               bsf          PORTB,6
M2
               btfss        PORTB,1
               goto         M3
               goto         M2
M3
               call         SV
               bsf          PORTB,5
M4               
               btfss        PORTB,1
               goto         M0
               goto         M4
                
SV			
                clrwdt
              	movlw           MR                        
                movwf           CNT1                       
                movlw           CR                        
                movwf           CNT2                       
                movlw           ST                        
                movwf           CNT3                         
dloop                                                 
                decfsz          CNT1,f                
                                                      
                goto            $+2                   
                decfsz          CNT2,f                
                goto            dloop                 
                decfsz          CNT3,f              
                goto            dloop               
                return              

               end
J-t вне форума  
Непрочитано 30.12.2007, 18:53  
Kabron
Почётный гражданин KAZUS.RU
 
Аватар для Kabron
 
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,535
Сказал спасибо: 698
Сказали Спасибо 4,313 раз(а) в 1,977 сообщении(ях)
Kabron на пути к лучшему
По умолчанию

Перед изменением считывай состояние порта в переменную, модифицируй ее и записывай измененное значение обратно в порт. Это издержки Read-Modify-Write.
Kabron вне форума  
Непрочитано 30.12.2007, 19:31  
J-t
Частый гость
 
Регистрация: 18.10.2007
Сообщений: 22
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
J-t на пути к лучшему
По умолчанию

То есть это так как в CNCT- программирование станков с ЧПУ, команда отменяется другой командой из этой же группы:
т.е. bsf PORTB,1- установка первого бита
bsf PORTB,2- отмена установки первого и установка второго. Так получается?
Я пробовал записать константу в порт
movlw 0x10
movwf PORTB

а затем bsf PORTB,5
всеравно 4-й бит сбрасывается.
Спасибо за подсказку почитаю про чтение-модификация-запись.
И еще вопрос: возможно ли в MPLAB управлять портами, которые настроены на вход? Они читаются как 0, что не всегда удобно. Я предполагаю, что возможно, как это сделать. И вообще есть ли толковая литература про MPLAB, для новых версий?
Спасибо за ответы.
Всех с наступающим!
J-t вне форума  
Непрочитано 30.12.2007, 19:50  
vdlab
Гражданин KAZUS.RU
 
Аватар для vdlab
 
Регистрация: 17.07.2006
Адрес: PV.DP.UA
Сообщений: 620
Сказал спасибо: 3
Сказали Спасибо 60 раз(а) в 48 сообщении(ях)
vdlab на пути к лучшему
По умолчанию

только что попробовал, если исключить задержку, все нормально работает, функцию задержки нужно полностью переработать, если листинг приведен правильно, то во первых МК из нее не выйдет, во вторых, в ней не предусмотрена команда "clrwdt".

Просмотрел еще раз, из подпрограммы выйти то он выйдет, но уж больно заковыристым способом она организована.
И еще, указывайте, значения своих пременных, телепаты в отпуске, поэтому какие должны быть значения задержки можно только догадываться.
__________________
Если ты читаешь это - значит тебе нечем заняться...
vdlab вне форума  
Непрочитано 30.12.2007, 20:01  
J-t
Частый гость
 
Регистрация: 18.10.2007
Сообщений: 22
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
J-t на пути к лучшему
По умолчанию

Задержка на 0,5 секунды. Перед WDT предделитель с к деления 1:128.
Если его убрать то при частоте тактового генератора 20МГц при нажатии кнопки один раз, пик воспринимает, что она была нажата дважды.
Можно ваш код посмотреть?
Можно сюда seges@ukr.net
J-t вне форума  
Непрочитано 31.12.2007, 00:49  
J-t
Частый гость
 
Регистрация: 18.10.2007
Сообщений: 22
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
J-t на пути к лучшему
По умолчанию

Всем спасибо.
Разобрался. Не предусмотрел гасящие резисторы на порты с нагрузкой (нагрузка-светодиод).
Поставил, все работает.
По поводу задержки, буду признателен за подсказку и по вопросу MPLAB тоже.
Всем успеха в наступающем году.
J-t вне форума  
Непрочитано 31.12.2007, 01:08  
Kabron
Почётный гражданин KAZUS.RU
 
Аватар для Kabron
 
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,535
Сказал спасибо: 698
Сказали Спасибо 4,313 раз(а) в 1,977 сообщении(ях)
Kabron на пути к лучшему
По умолчанию

Сообщение от Kabron
Перед изменением считывай состояние порта в переменную, модифицируй ее и записывай измененное значение обратно в порт. Это издержки Read-Modify-Write.
Пардон, это я лажанулся с понятно чего. Прямое управление битом соседних не портит.
Kabron вне форума  
Непрочитано 31.12.2007, 01:50  
J-t
Частый гость
 
Регистрация: 18.10.2007
Сообщений: 22
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
J-t на пути к лучшему
По умолчанию

Вообщем ситуация такая. Для тех кто не знал и кому интересно.
При изменении состояния одного или нескольких бит в регистре порта, все проходит по схеме- чтение-модификация-запись. Что это значит: это значит, что при отработке команды на изменение бита в регистре порта, порт считывается в отдельный регистр, потом там модифицируется в зависимости от команды, потом записывается обратно. В моем случае, я посадил светодиоды прям на землю катодом, а анодом к порту, что при чтении порта определило его состояние как 0, вот после модификации он в нуль и установился- сбросился. А когда поставил резистор, получился своеобразный делитель из сопротивления резистора и сопротивления диода, что и дало корректное считывание единицы из порта.
Всем спасибо, тема закрыта.
J-t вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Согласование уровней ввода вывода в одном устройстве. kovkaa Микроконтроллеры, АЦП, память и т.д 15 17.06.2009 13:55
Модуль цифрового ввода-вывода! Superki Производственное оборудование 1 08.04.2009 00:25
Подключение к плате PCI дискретного ввода rolax Ремонт оргтехники 0 24.05.2008 22:23
работа USART в PIC16F628A CERGEI1982 Микроконтроллеры, АЦП, память и т.д 23 09.04.2007 14:39
RA4/TOCKI в режиме порта вывода Кирилка Микроконтроллеры, АЦП, память и т.д 1 11.02.2004 00:18


Часовой пояс GMT +4, время: 19:08.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot