Arquitetura de Computadores - boscojr.com · Exemplos – Alto nível: A=0 ... – Bit 0: C (Carry...

22
Arquitetura de Computadores Prof. João Bosco Jr.

Transcript of Arquitetura de Computadores - boscojr.com · Exemplos – Alto nível: A=0 ... – Bit 0: C (Carry...

Arquitetura de ComputadoresProf. João Bosco Jr.

Aula 4(nivel ISA – Arquitetura PIC)

Características do Controlador16F628A

● 18 Pinos● Até 20 Mhz (5M instruções por segundo)● PortA e PortB● 10 Interrupções● 35 instruções● Periféricos– Timers– Comparadores– USART

● Arquitetura Harvard– Capacidade 2048 instruções – 512 bytes de dados

Esquema Realmente Básico dos Componentes (PIC)

ALU

W

STATUS

PORT A

PORT B

00h

01h

04h

05h

06h

07h

03h

02h

Vetor deInicialização

Vetor de interrupção

.

.

.

00h

01h

04h

3FF

03h

02h

MEMÓRIA DEPROGRAMA14 bits

MEMÓRIADE DADOSFILE REGISTERS8 bits

UnidadeDe

Controle

MUX

Conjunto de InstruçõesLógicas e Aritméticas

● Instruções LW (usadas para preencher o registrador W)● Operadores: Literal k (0<=k<=255)

– IORLW k (Ou inclusivo entre w e k resultado em w)– ANDLW k (AND entre w e k resultado em w)– XORLW k (Ou exclusivo entre w e k resultado em w)– SUBLW k (Subtração entre w e k resultado em w)– ADDLW k (Adição entre w e k resultado em w)

Conjunto de InstruçõesLógicas e Aritméticas

● Instruções WF (Usadas para realizar operações entre valores que estão em W e na memória)

– Operadores: ● f posição da memória de dados● d destino do resultado da operação 0=W e 1=F

– IORWF f,d (Ou inclusivo entre W e F resultado em d)– ANDWF f,d (AND entre W e F resultado em d)– XORWF f,d (Ou exclusivo entre W e F resultado em d)– SUBWF f,d (Subtração entre W e F resultado em d)– ADDWF f,d (Adição entre W e F resultado em d)

Conjunto de InstruçõesLógicas e Aritméticas

● Instruções F (Usadas para operar em posições de memória)● Operando

● f é posição de memória (registrador)● D é o destino 0=W e 1=F

– INCF f, d (Incrementa f)– COMF f,d (Complementa f – inverte todos os bits)– DECF f,d (Decrementa f)– CLRF f (Zera F)– SWAPF f,d (Troca os Bits mais e menos significativo)

● EX; 20h=FA ; SWAPF 20h,1 ; 20h=AF● Outras instruções F (não lógicas aritméticas)

– BCF f,b – BIT SET FILE – Liga o b-ésimo BIT do reg f– BSF f,b – BITCLEAR FILE - desliga o b-ésimo BIT do reg f– RRF f,d – Rotaciona a direita (ex. 10101001 => 11010100)– RLF f,d – Rotaciona a esquerda (ex. 10101001 => 01010011)

Conjunto de InstruçõesMovimentação de Dados

● Movimentos Possíveis (MOV)– Literal para registrador W

● MOVLW k, onde k é o literal– Registrador W para Memória Registrador F

● MOVWF F, onde F é o endereço da Memória Registrador– Memória Registrador F para W

● MOVF F, d– F: Endereço da Memória Registrador– d: Destino W=0 e Memória=1

● Exemplos– Alto nível: A=0, Baixo Nível 20h=0– Código:

MOVLW 0MOVWF 20H ou CLRF 20H

Conjunto de InstruçõesInstruções de Controle

● NOP (Gasta um ciclo de execução – sem operação)● SLEEP (Sistema entra em stand-by – só volta com interrupção)● GOTO k (salta para o endereço de programa k - sem retorno)● CALL k (salta para o endereço de programa k – com retorno)– Chamada de procedimento (EMPILHA PC!)

● RETURN (retorna para o ponto antes da chamada)● RETLW k ( o mesmo que RETURN, mas preenche W)

● RETFIE (Retorno de interrupções)● Orientadas a Bytes

– DECFSZ (DECrementa File Salta se Zero)– INCFSZ (INCrementa File Salta se Zero)

● Orientadas a Bits– BTFSC (Bit Testa File Salta se Clear (=0))– BTFSS (Bit Testa File Salta se Set (=1))

● O SALTO é feito sobre a próxima instrução

Conjunto de InstruçõesInstruções de Controle

ExemplosCondiçãoSe o bit 2 do registrador 20H estiver ligado faça 21H=0 caso contrário 22h=1

Alto nível:

if ((22h,2) == 1) { 21H=0; } Else { 22H=1 }Resto

Fluxo: 22H,0 = 1?

21H=0

22H=1Não

Sim

Resto

BTFSS 20h,2GOTO KCLRF 21HGOTO RESTOK MOVLW 1h

MOVWF 21hRESTO

Conjunto de InstruçõesInstruções de Controle

ExemplosLaço:Decrementa o valor i (20h), quando chegar em 0 sai do laço

Alto nível:

i=10;while (i<>0){ i=i-1;}Resto

Fluxo:Não

MOVLW 10MOVWL 20HDECREM

DEC 20H,1DECFSZ 20H,1GOTO DECREMRESTO

20H = 0?

Sim

Resto

20H=10

Decrementa 20H

Conjunto de InstruçõesResumão

● Instruções Lógicas e Aritméticas– ADD, SUB, AND, IOR, XOR, DEC, INC, COM– Instruções LW: Literal → W (operando k)– Instruções WF: W → F ou W (operando F e distino d → 0=W , 1=F)– Instruções F: F → F ou W (operando F e distino d → 0=W , 1=F)

● Instruções de movimentação (MOV: LW ou WF ou F)● Instruções de Controle (Podem gerar Saltos)

– NOP (não faz nada – gasta um ciclo) , SLEEP (Modo Stand-by) – Salto Condicional: Baseadas em BIT - Operandos: File e bit a ser testado

● BTFSS ( BIT TEST FILE SKIP (próxima inst.) se SET)● BIT TEST FILE SKIP (próxima inst.) se CLEAR)

– Salto Condicional: Baseadas em Byte - Operandos: File (Memória) e Destino● DECFSZ (Decrementa FILE SKIP (próxima inst.) se ZERO) : 1 → 0● INCFSZ (Incrementa FILE SKIP (próxima inst.) se ZERO): 255 → 0

– Salto Incondicional: Operando é um endereço de prog● GOTO (Salto sem retorno)● CALL (Salto com retorno)

– RETURN e RETW (RETFIE – Retorno de interrupções)– Outras Instruções

● CLRF, CRLW, RRF, RLF, SWAPF

Memória do PICPrograma

● 2048 Bytes 14 bits por célula (13-0)● Palavra de configuração (2007h): Configura a forma como o PIC

vai trabalhar. Só acessível durante a programação. A tabela abaixo tem uma lista de Bits importantes:Bit

13,1211,10

CP0,CP1 Proteção contra leitura da memória de programa11 – Sem Proteção do Programa00 – Toda Memória de Programa Protegida

8 CPD Proteção de memória de dados 1=Com prot. 0=Sem prot.

5 MCLRE Habilita RA5 para ser o pino de reset, se não o pino faz I/O

4,1,0 FOSC Configura o uso do Oscilador (Interno 4Mhz = 100)

3 PWRTE Habilita o Power UP timer (0 = Habilitado, 1 = Desabilitado)

2 WDTE Watch dog Timer Enable – Timer resposável por resetar o controlador se estourar (255 → 0). 0 = Desabilitado

Nós Vamos Usar:10110100011000Ou em Hexa?

Nós Vamos Usar:10110100011000Ou em Hexa?

Memória do PICDados

● 512 bytes● 4 Bancos de 128 (Nem todos posições poderão ser usadas)● Os SFRs (Special Function Registers) não podem ser usados

para armazenar dados.● Controle através do Registrador de STATUS● RP0 → 03H,5 ● RP1 → 03H,6

BANK RP1 RP0

0 (00h-7Fh) 0 0

1 (80h-FFh) 0 1

2 100h-17Fh) 1 0

3 (180h-1FFh) 1 1

Memória do PICDados – Registrador STATUS● Configurar O PIC e guarda o status de operações feitas na ULA● Acesso: pode ser só lido (R) , lido e escrito (RW)● POR = Valor do Bit quando se liga o PIC● BITS:

– Bit 0: C (Carry out - “Vai 1”: 1=sim , 0=não )– Bit 1: DC (Digit Carry out - “Vai um” para os 4 bits menos significativos)– Bit 2: Z (Resultado da operação foi zero)– Bit 3: PD (Power Down)– Bit 4: TO (WDT Time out)– Bit 6,Bit 5: Vistos no Slide Anterior– Bit 7: IRP (usado no endereçamento indireto)

STATUS (003h, 083h,103h, 183h)Bit 7 6 5 4 3 2 1 0

Função IRP RP1 RP0 TO PD Z DC C

Acesso RW RW RW R R RW RW RW

POR 0 0 0 1 1 X X X

E/S Básica com PIC

● Uso dos registradores especiais (SFR – Special Function Reg)● Portas (Pinos do Controlador) → Estão no Banco 0– PortA => 05h– Portb => 06h

● Configuração de direção dos pinos de E/S → Estão no Banco 1– TRISA => 85h– TRISB => 86h– Se o Bit referente ao pino do PORT for:

● 1 = Input (recebe estímulos externos)● 0 = output (pode enviar estímulos ao mundo exterior)

E/S básica com PIC

06h86h85h05h

RA0

PIC 16F628A

RA1

RA2

RA3

RA4

RA5

RA6

RA7

RB0

RB1

RB2

RB3

RB4

RB5

RB6

RB7

E/S básica com PIC

0 0

06h86h

0 1

85h05h

RA0

PIC 16F628A

RA1

RA2

RA3

RA4

RA5

RA6

RA7

RB0

RB1

RB2

RB3

RB4

RB5

RB6

RB7

5V

0V

E/S básica com PIC

0 1

06h86h

1 1

85h05h

RA0

PIC 16F628A

RA1

RA2

RA3

RA4

RA5

RA6

RA7

RB0

RB1

RB2

RB3

RB4

RB5

RB6

RB7

5V

0V

Formato do Programa PIChello World (acende um led)

Vetor de ResetPula para Inicio

Inicio

Configurações Iniciais

Acende o LED RB2

ORG 0x00

GOTO INICIO

INICIO    BSF  3H,5    MOVLW b'0000000'    MOVWF 86H    BCF  3H,5    MOVWF 6H    GOTO MAINMAIN    BSF 6h,2    GOTO MAINEND

Ambiente Para Simulação do PIC→ www.boscojr.com/arquitetura/lab3.html

Hora de Praticar!

FIM