(Parte 1 de 4)

Microprocessadores

Aula 10: Acesso indireto à memória; Interfaces de Entrada e Saída –Parte 1: Módulo CCP –Captura, Comparação e PWMMódulo CCP –Captura, Comparação e PWM

Referência para a aula:

1 – Apostila:Instruções e Diretivas[Xerox]; 2 – Folha de dados (Datasheet): PIC16F877 [Disponível na internet, site da Microship]; 3 – CAP. 5: SCHILDT, H.“C co mpleto etotal”[biblioteca];

Prof.: Edgar Campos Furtado

Acesso direto à me mória de dados:

Pri meiro seleciona-se o banco de registradores, por meio dos bits RP1 e RP0 do STATUS, e m seguida o registrador desejado é acessado infor mando o endereço do mes mo nainstrução(7bits).

2 UFSJ –CAP

© Edgar C. Furtado

Exe mplo: Assu mindo-se que é necessário zerar o conteúdo do registrador TRISA. No estado inicial (após energização ou reset) te m-se que: RP1=RP0=0. Logo,inicial mente o banco 0 está selecionado.

; M ICR OP RO CES SA DORE S ; --ARQUIVO DE DEFINIÇÕES: #IN CLU DE < P16 F8 7.I NC> __CONFIG _XT_OSC & _WDT_OFF & _PWRTE_OFF &

_BODEN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF ; --VETOR DE RESET: ORG 0X0 0

Banco 0Banco 1

3 UFSJ –CAP

© Edgar C. Furtado

BSFSTATUS,RP0
BCFSTATUS,RP1

ORG 0X0 0 GOT O INI CIO ; --INÍCIO INTERRUPÇÃO: ORG 0X0 4 RET FIE ; --INÍCIO DO PROGRAMA: INI CIO

Seleção do banco de memória 1

Acessar um dos 128 registradores do referido banco de memória. Código da instrução CLRF: 0 0 0 0 0 1 1 f f

Acessoindireto à me mória de dados:

Pri meiro o endereço doregistrador desejado é movido para FSR. E m seguida, o acesso/ modificação do conteúdo do registrador desejado é realizado por meio de outroregistrador: I NDF.

4 UFSJ –CAP

© Edgar C. Furtado

Exe mplo: Assu mindo-se que é necessário zerar o conteúdo do registrador TRISA. No estado inicial (após energização ou reset) te m-se que: IRP=0. Logo,inicial mente os bancos 0 e 1 estão selecionados.

; M ICR OP RO CES SA DORE S ; --ARQUIVO DE DEFINIÇÕES: #IN CLU DE < P16 F8 7.I NC> __CONFIG _XT_OSC & _WDT_OFF & _PWRTE_OFF &

_BODEN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF ; --VETOR DE RESET: ORG 0X0 0 GOT O INI CIO

Banco 0Banco 1

5 UFSJ –CAP

© Edgar C. Furtado

GOT O INI CIO ; --INÍCIO INTERRUPÇÃO: ORG 0X0 4 RET FIE ; --INÍCIO DO PROGRAMA: INI CIO

BCFSTATUS, IRP

MOVLW 0X85 MOVWF FSR

Acessar um dos 256 registradores dos referidos bancos de memória. Seleção dos bancos de memória 0 e 1.

Zera o registrador apontado por FSR, que nesse caso é o TRISA. AULA- 10

Ai mple mentação do acessoindireto à me mória é base para possibilitar o uso do conceito de Ponteiros.

O uso de ponteiro é crítico para u ma progra mação be m-sucedida, e m especial, nalinguage m C, pois os ponteiros:

6 UFSJ –CAP

© Edgar C. Furtado

1. Fornece m os meios pelos quais as funções pode m modificar seus argu mentos; 2. São usados para suportarrotinas de alocação dinâ mica de me mória e m C; 3. Au mento de eficiência e m algu masrotinas.

P O NTEIR O: é u ma variável que conté m u m endereço de me mória, que representa a posição de u ma outra variável na me mória.

To mando-se alinguage m C co mo exe mplo, a relação entre o acessoindireto à me mória, na arquitetura do PIC, e os ponteiros é:

& É equivalente aoregistrador FSR Endereço da variável. * É equivalente aoregistradorINDF Conteúdo da variável.

7 UFSJ –CAP

© Edgar C. Furtado

Na arquitetura do microcontrolador PIC16F o ponteiro é definido co m apenas u mregistrador na me mória.

Entretanto, e m arquiteturas mais co mplexas pode-se u m ponteiro pode ser definido e m qualquer registrador na me mória. Alé m disso, o ponteiro pode assu mir diferentes tipos de variáveis, tais co mo, inteiro, ponto flutuante, entre outras.

Exe mplo: Considere o seguinte trecho de código e m C, e u ma possível versão e m Asse mbly.

; --DECLARAÇÃO DE VÁRIÁVEIS: X EQU D’32’; Endereço da Variável X Y EQU D’3’; Endereço da Variável Y void main(void) { int x, y; int * p;

8 UFSJ –CAP

© Edgar C. Furtado

MOVF INDF,W; W INDF
MOVWF Y; Y W

A variável pfoi declarada co mo u m ponteirointeiro, querecebe o endereço da variável x. A variável yrecebe o conteúdo do endereço apontado por p.

Os microcontroladores são úteis por possuíre m u ma série de interfaces de entrada e saída de dados. O PIC16F877 possui as seguintes:

(Parte 1 de 4)

Comentários