Доброе время суток!
Взгляните, пожалуйста, свежим взглядом со стороны.
При начальной инициализации настраиваю порты. Кроме прочего нужно подключить цифровые входы сбросом соответствующих ANSELx в 0.
Код
Код:
movlw 0x00
movwf 0xF38
movwf ANSELA
bcf ANSELA, 0
bcf ANSELA, 1
bcf ANSELA, 2
bcf ANSELA, 3
Не меняет значение регистра. С другими аналогичными регистрами ситуация та же. Цифровые порты, соответственно, на вход тоже не работают. Состояние регистров смотрю через watch в MPLAB 8.92 + PICkit3.
С остальными регистрами всё работает штатно.
То ли это какой-то не документированный баг, то ли я что-то проглядел в даташите, хотя, вроде, просмотрел его полностью. До этого имел дело с другими пичками 18й серии - никаких проблем никогда не было, а тут буксую на ровном месте.
Добавлено after 2 hours 13 minutes 48 seconds:Разобрался сам. Может, кому пригодится.
Ответ крылся в разделе
Memory organization (не ожидал там увидеть что-то новое):
Цитата:
Addresses F38h through F5Fh are
also used by SFRs, but are not
part of the Access RAM. Users
must always use the complete
address or load the proper BSR
value to access these registers.
Регистры с указанными адресами не попали в страницу быстрого доступа (Access RAM) и для них надо использовать страничную адресацию с использованием BSR или команды использующие полный адрес (movff)
Рабочий вариант кода:
Код:
movlw 0x00
movff WREG, ANSELA
PS
Надо читать даташит еще внимательней.