Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Проблем при установяване на PORTB на 16F887
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=6194
Страница 1 от 1

Автор:  NVN [ Вто Окт 21, 2008 8:05 pm ]
Заглавие:  Проблем при установяване на PORTB на 16F887

Здравейте,

От скоро се заех с изучаването на PIC процесорите и попаднах на следния проблем при компилиране на първата програма.

Искам да присвоя на PORTB стойност 0хFF, но на края на програмата стойността му е винаги 0хC0.

Можете ли да ми кажете къде греша?

Използвам MPLAB.

Кода е:

list p=16f887
#include "P16F887.INC"

__CONFIG _CONFIG1, _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

Cblock 0x20
endc

ORG 0x00
goto Main

ORG 0x04
goto Main

Main

banksel TRISB
clrf TRISB
banksel PORTB
movlw 0xff
movwf PORTB

goto $

End

Автор:  Zeus [ Вто Окт 21, 2008 8:57 pm ]
Заглавие: 

Вмъкни това след clrf TRISB

MOVLW B‘00000000’
MOVWF TRISB

и виж дали няма да стане.

Автор:  MidNighT_SpiRiT [ Вто Окт 21, 2008 11:02 pm ]
Заглавие: 

Виж каква периферия има на порт Б.

Автор:  ji4ka [ Вто Окт 21, 2008 11:45 pm ]
Заглавие: 

Може и симулатора да е бъгав. Пробвал ли си я на истинския чип?

Автор:  plameniv [ Сря Окт 22, 2008 2:42 am ]
Заглавие:  Re: Проблем при установяване на PORTB на 16F887

NVN написа:
Здравейте,

От скоро се заех с изучаването на PIC процесорите и попаднах на следния проблем при компилиране на първата програма.

Искам да присвоя на PORTB стойност 0хFF, но на края на програмата стойността му е винаги 0хC0.

Можете ли да ми кажете къде греша?

Използвам MPLAB.

Кода е:

list p=16f887
#include "P16F887.INC"

__CONFIG _CONFIG1, _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

Cblock 0x20
endc

ORG 0x00
goto Main

ORG 0x04
goto Main

Main

banksel TRISB
clrf TRISB
banksel PORTB
movlw 0xff
movwf PORTB

goto $

End

Прочети в упътване как се минава в друга банка. Като гледам това не ми прилича да минаваш в другата банка!
Ако компилатора не ти разбира това което си написал няма да ти генерира верен код.
За да си сигурен че е всичко върви както трябва, вземи си сложи МПЛАБ от сайта на микрочип, включи си да виждаш регистрите и със F7 се трасира стъпка по стъпка и си гледаш в регистрите какво се случва. Така ще разбереш къде грешиш!

Автор:  rumen65 [ Сря Окт 22, 2008 9:27 am ]
Заглавие: 

С какво точно го четеш това C0 на PORTB?
Ако е с дебугер, точно RB6 и RB7 са заети за комуникация с него и не могат да бъдат четени.

Автор:  GTN [ Сря Окт 22, 2008 9:37 am ]
Заглавие: 

Трябва да си инициализираш АЦПто, по-точно да му кажеш че аналоговите входове на портБ ще са цифрови.
Ето ти го направено:
Код:
list p=16f887
#include "P16F887.INC"

__CONFIG _CONFIG1, _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

Cblock 0x20
endc

ORG 0x00
goto Main

ORG 0x04
goto Main

Main

banksel TRISB
clrf TRISB

banksel ANSELH             
movlw 0x0
movwf ANSELH            ;тук си спираш аналоговите входове.

banksel PORTB
movlw 0xff
movwf PORTB

goto $

End

Автор:  bobyk [ Сря Окт 22, 2008 9:42 am ]
Заглавие: 

Така става да се сменят банките, не е това проблема.

Автор:  ji4ka [ Сря Окт 22, 2008 1:06 pm ]
Заглавие: 

Точно от ANSELH е!
Тo затова програма се пише с datasheet-че в ръка (или с отворено PDF-че). :!:

Автор:  NVN [ Сря Окт 22, 2008 8:04 pm ]
Заглавие: 

Благодаря на всички за отговора!

GVN се оказа прав, че първо трябва да се укаже, че портовете ще са цифрови. и след това всичко си работи по план.

Аз продължавам нататък.

Чао засега

Автор:  NVN [ Сря Окт 22, 2008 8:05 pm ]
Заглавие: 

Имах предвид GTN, sorry.

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/