Я AVRшик, а PICи видел только припаянные к плате, но жизнь заставила разобраться с устройством на PIC контроллере. Дали мне HEX файл и все. Я его деассемблировал и начал изучать. Естественно ASM AVR отличается от ASM PIC. Отсюда встал вопрос изучения этого дела. Поставил MPLAB X, купил для мучений PIC16F877A, собрал схему на макетке в виде МК + кварц на 8МГц с двумя капаситорами на 22р от кварца на GND и светодиод от RC3 через резюк на GND. Программатор PicKit3. Ну вроде бы как все должно быть комильфо, но...
Накидал такой код.
Код: Выделить всё
LIST p=16F877A
__CONFIG 3FF1H
ERRORLEVEL -302
STATUS equ 03h
TRISC equ 87h
PORTC equ 07h
RP0 equ 5
PC3 equ 3
org 0
clrf STATUS
bsf STATUS,RP0
bcf TRISC,PC3
bcf STATUS,RP0
bsf PORTC,PC3
end
Вопрос. В чем может быть проблема? Смущает регистр STATUS. Когда я сбрасываю третий разряд в регистре TRISC для перевода пина на выход, мне нужно перейти в банк1. Собственно в регистре STATUS я это и делаю выставляя RP0 в единицу, а вот когда мне нужно перебраться в банк 0... Регистр STATUS присутствует во всех банках но имеет разный адрес 0x0003, 0x0083, 0x0103, 0x0183. Здесь и сомнения, он сквозной для всех банков или нужно при переходе из одного банка в другой задавать изменения в текущем банке. Я уже запутался. Как мне зажечь светодиод, я уже не говорю о мигании.


