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

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

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

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

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

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

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

 
Опции темы
Непрочитано 07.12.2009, 17:37  
prim_lion
Прохожий
 
Регистрация: 28.06.2008
Сообщений: 2
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
prim_lion на пути к лучшему
По умолчанию Вопрос по pic16f877a

Хочу просто подать на порт B0 единицу
программа на ассемблере:
....
clrf PORTB
bsf STATUS,RP0
movlw b'00000000'
movwf TRISB
movlw b'00001111'
movwf PORTB
bcf INTCON,7
bcf OPTION_REG,7
bcf STATUS,RP0

movlw b'00000001'
bsf STATUS,RP0
movwf PORTB
bcf STATUS,RP0
--------
Питание подаю 5вольт на 11,32 ногу, земля 12,31
Кварцовый резонатор на 8МГц..
На выходе B0 подключен светодиод через резистор.
......
Вопрос в том что в теории,симуляции в протеусе, все нормально работает, а на практике получается на всех выходах порта B покаывает напряжение порядка 0.1 вольта.
В чем может быть проблема.
P.s. я только учусь, если что то простое, прошу не стебаться
Реклама:
prim_lion вне форума  
Непрочитано 07.12.2009, 17:54  
HHIMERA
Заблокирован
 
Регистрация: 07.12.2009
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
HHIMERA на пути к лучшему
По умолчанию Re: Вопрос по pic16f877a

Разберитесь с банками и регистрами...

Код:
bsf STATUS,RP0
movlw b'00000000'    ; здесь у Вас всё на выход
movwf TRISB
;movlw b'00001111'    ; а здесь Вы ставите младшую тетраду на вход - 
;movwf PORTB           ; на самом деле Вы пишите в TRISB - банк не переключили

Последний раз редактировалось HHIMERA; 07.12.2009 в 17:57.
HHIMERA вне форума  
Непрочитано 07.12.2009, 18:01  
HHIMERA
Заблокирован
 
Регистрация: 07.12.2009
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
HHIMERA на пути к лучшему
По умолчанию Re: Вопрос по pic16f877a

Код:
clrf PORTB
bsf STATUS,RP0
movlw b'00000000'
movwf TRISB
;movlw b'00001111'
;movwf PORTB
bcf INTCON,7
bcf OPTION_REG,7

bcf STATUS,RP0
movlw b'00000001'
;bsf STATUS,RP0
movwf PORTB
;bcf STATUS,RP0
Где-то так...
HHIMERA вне форума  
Непрочитано 07.12.2009, 20:20  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию Re: Вопрос по pic16f877a

Сообщение от HHIMERA Посмотреть сообщение
Код:
clrf PORTB
bsf STATUS,RP0
movlw b'00000000'
movwf TRISB
;movlw b'00001111'
;movwf PORTB
bcf INTCON,7
bcf OPTION_REG,7

bcf STATUS,RP0
movlw b'00000001'
;bsf STATUS,RP0
movwf PORTB
;bcf STATUS,RP0
Где-то так...
Для PORTB и TRISB у F877 должно работать и так, но вообще то у F877 аж 4 банка RAM, следовательно выбираются они двумя битами RP0 и RP1.

Переключаем RAM BANK для регистров TRISA, TRISC, TRISD, TRISE, :
Код:
bsf STATUS,RP0
bcf STATUS,RP1
переключаем для регистров PORTA, PORTC, PORTD, PORTE:
Код:
bcf STATUS,RP0
bcf STATUS,RP1
Но лучше выбирать вот так,
Переключаем RAM BANK для регистров TRISA, TRISC, TRISD, TRISE, :
Код:
BANKSEL 80
переключаем для регистров PORTA, PORTC, PORTD, PORTE:
Код:
BANKSEL 0
Тогда ассемблер, сам поставит необходимое количество битов для выбраного в проекте типа контроллера:
picavr вне форума  
Непрочитано 07.12.2009, 23:02  
Popeye
Почётный гражданин KAZUS.RU
 
Аватар для Popeye
 
Регистрация: 05.08.2007
Адрес: Болгария Перник
Сообщений: 1,771
Сказал спасибо: 74
Сказали Спасибо 357 раз(а) в 245 сообщении(ях)
Popeye на пути к лучшему
По умолчанию Re: Вопрос по pic16f877a

Все выше написаное так. Маленькое дополнение, BANKSEL имеет и более изощренное употребление.
Код:
BANKSEL TRISB  ;Выбираем банк, в котором находится TRISB. Компилятор сам установит RP0 и RP1
movLw   b'00000000' ;Можно поставить и перед BANKSEL. Инструкция movLw от текущего банка памяти не зависит.
movWf   TRISB ;Весь порт на вывод
movLw   b'00000001'  ;Другой порядок употребления BANKSEL 
BANKSEL PORTB  ;Выбираем банк, в котором находится PORTB
movWf   PORTB  ;Устанавливам содержимое выводов порта
BANKSEL 0    ;Хорошая практика, для рассеяных, вроде меня, делаем что делаем, но остаемся в БАНКЕ 0. Оттуда порты управляются
Вобщем BANKSEL компилируется как последовательность двух инструкций bSf/bCf STATUS, RP0 и bSf/bCf STATUS, RP1. Несколько расточительно, зачастую одна из них лишняя, если учесть с каким банком работал прежний участок кода можно сэкономить.
Ну и маленькoe уточнение.
bcf INTCON,7 плохая практика, несколько понятнее bcf INTCON,GIE. Управление прерываний, запомнил. Однако bcf OPTION_REG,7 много. По идее должно быть bcf OPTION_REG,RBPU
Я не то что капризничаю. Попадались вопросы, скажем по управлению банками. Команды типа bcf STATUS,5 не воспринять с первого раза...
Коментарии для каждой строчки кода обязательны. Я раз попался, когда писал все было ясно. Пришлось подправить, писал почти все заново.....
__________________
Мыслю, следовательно существую
Popeye вне форума  
Непрочитано 08.12.2009, 04:10  
HHIMERA
Заблокирован
 
Регистрация: 07.12.2009
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
HHIMERA на пути к лучшему
По умолчанию Re: Вопрос по pic16f877a

Сообщение от picavr Посмотреть сообщение
Для PORTB и TRISB у F877 должно работать и так, но вообще то у F877 аж 4 банка RAM, следовательно выбираются они двумя битами RP0 и RP1.
Если уж всю прогу за топик-автора писать, то в начале нужно добавить

Код:
   ORG 0000H

   bcf STATUS,RP0
   bcf STATUS,RP1
а в конце

Код:
Loop:
    goto Loop

    end
HHIMERA вне форума  
Непрочитано 08.12.2009, 04:16  
HHIMERA
Заблокирован
 
Регистрация: 07.12.2009
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
HHIMERA на пути к лучшему
По умолчанию Re: Вопрос по pic16f877a

Сообщение от prim_lion Посмотреть сообщение
Вопрос в том что в теории,симуляции в протеусе, все нормально работает, а на практике получается на всех выходах порта B покаывает напряжение порядка 0.1 вольта.
Забудьте про Протез, пользуйтесь МПЛАБом и в железе, иначе с Протезом ещё не в одну непонятку вляпаетесь...
HHIMERA вне форума  
Непрочитано 08.12.2009, 13:02  
Popeye
Почётный гражданин KAZUS.RU
 
Аватар для Popeye
 
Регистрация: 05.08.2007
Адрес: Болгария Перник
Сообщений: 1,771
Сказал спасибо: 74
Сказали Спасибо 357 раз(а) в 245 сообщении(ях)
Popeye на пути к лучшему
По умолчанию Re: Вопрос по pic16f877a

Сообщение от HHIMERA Посмотреть сообщение
Забудьте про Протез, пользуйтесь МПЛАБом и в железе, иначе с Протезом ещё не в одну непонятку вляпаетесь...
Протез, надо же придумать... Однако я присоединяюсь к мнению.
__________________
Мыслю, следовательно существую
Popeye вне форума  
Непрочитано 08.12.2009, 16:10  
prim_lion
Прохожий
 
Регистрация: 28.06.2008
Сообщений: 2
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
prim_lion на пути к лучшему
По умолчанию Re: Вопрос по pic16f877a

list p=16f877a
#include ‹p16f877a.inc›
__CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC

ORG 0x000

bcf STATUS,RP0
bcf STATUS,RP1

clrf PORTB
bsf STATUS,RP0
movlw b'00000000'
movwf TRISB
bcf INTCON,7
bcf OPTION_REG,7
bcf STATUS,RP0
movlw b'00000001'
movwf PORTB
Loop
nop
goto Loop

end

Такой код для вывода единицы 1 на выход В0, как я понял, проверить пока сейчас не могу, дотестировался что перпутал и нечайно подал 12 Вольт на котроллер :-[
prim_lion вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интересный вопрос - два усилителя к одной нагрузке eCAH Аудиотехника 45 14.10.2010 01:23
Вопрос по стабилитрону toxxinus Электроника - это просто 15 22.11.2009 12:42
Вопрос по блоку питания... El-Shang Источники питания и свет 13 19.11.2009 17:35
Вопрос По Tas5414a (Входной модуль) C-r-o-w Аудиотехника 0 08.11.2009 18:11


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


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