Ao fazer o setup dos Direction Bits do Port 0 é necessário antes desproteger o mesmo. Mas porquê isso ocorre?
Existe um registro na SFR que chama-se Protect Register. Ele serve para proteger registros importantes para não ser facilmente sobrescritos quando o programa pode estar fora de controle. Os registros protegidos são:
• PRC0 bit: CM0, CM1, OCD, FRA0, FRA1 and FRA2 registers
• PRC1 bit: PM0 and PM1 registers
• PRC2 bit: PD0 register (olha o nosso vilão aqui!)
• PRC3 bit: VCA2, VW0C, VW1C and VW2C registers
E agora um esquema desta entrada na SFR:

Primeiro um exemplo do que vamos fazer... e como me deparei com o problema.
A tarefa é simples e aparentemente trivial, e o é... simplesmente quero setar um SFR bit a bit e não o byte todo... olhem o exemplo fazendo isso no port 1...


Executando o código acima, vamos abrir o View -> CPU -> IOs para acompanhar o que está sendo feito dos nossos registros (Valeu André por me lembrar desta ferramenta dentro do HEW!)

Notem que ao executar e chegar no break-point pd0 contém o valor 0x0F...


Pois bem, se a cada bit nós desligarmos o protect register do pd0, nós conseguiremos setar todos os bits conforme imaginamos.

PS: As informações deste post foram retiradas do Datasheet do R8C/24 e 25, página 96, Tópico 11.
Nenhum comentário:
Postar um comentário