Parte 7 ASSEMBLER. ; Programa 2 Vazio end ;fim OP. LÓGICAS E ARITMÉTICAS OP. LÓGICAS E ARITMÉTICAS OPERAÇÕES LÓGICAS E ARITMÉTICAS

Tamanho: px
Começar a partir da página:

Download "Parte 7 ASSEMBLER. ; Programa 2 Vazio end ;fim OP. LÓGICAS E ARITMÉTICAS OP. LÓGICAS E ARITMÉTICAS OPERAÇÕES LÓGICAS E ARITMÉTICAS"

Transcrição

1 Parte 7 ASSEMBLER. OPERAÇÕES LÓGICAS E ARITMÉTICAS 2. ENDEREÇAMENTO DA SRAM Programa vazio OPERAÇÕES LÓGICAS E ARITMÉTICAS Debug build of project `E:\Documentos\marco2.mcp' started. Language tool versions: MPASMWIN.exe v., mplink.exe v.2, mplib.exe v.2 Preprocessor symbol ` DEBUG' is defined. Fri May :7: Make: The target "E:\Documentos\marco2.o" is out of date. Executing: "C:\Program Files\Microchip\MPASM Suite\MPASMWIN.exe" /q /pf877 "marco2.asm" /l"marco2.lst" /e"marco2.err" /d DEBUG= Make: The target "E:\Documentos\marco2.cof" is out of date. Executing: "C:\Program Files\Microchip\MPASM Suite\mplink.exe" /pf877 "marco2.o" /u_debug /z MPLAB_BUILD= /z MPLAB_DEBUG= /o"marco2.cof" /M"marco2.map" /W /x MPLINK.2, Linker Device Database Version.7 Copyright (c) Microchip Technology Inc. Errors : Debug build of project `E:\Documentos\marco2.mcp' succeeded. Language tool versions: MPASMWIN.exe v., mplink.exe v.2, mplib.exe v.2 Preprocessor symbol ` DEBUG' is defined. Fri May :7: BUILD SUCCEEDED 2 Programa vazio com comentário ; Programa 2 Vazio Este programa emprega um comentário e uma diretiva, respectivamente. Nenhuma instrução é usada. É gerado um código assembly vazio. É recomado que a primeira linha do código assembly seja um comentário explicativo do programa. Definição da PIC ; Programa - Arquivo de inclusão #include <pf877.inc> ;definição da PIC Este programa emprega um comentário e duas diretivas, respectivamente. É gerado um código assembly vazio. Se o arquivo de definição da PIC não for incluído, somente os mnemônicos de instrução poderão ser usados.

2 2 Definição de constante Constantes ; Programa - Definição de constante #include <pf877.inc> ;definição da PIC constant marqualrélio = 0x20 ;definição da constante Este programa emprega um comentário e quatro diretivas, respectivamente. É gerado um código assembly vazio. Constantes podem ser definidas. Constantes não aparecem no código montado. O nome deve possuir, apenas, uma palavra. Acentos são permitidos. O primeiro algarismo não pode ser numérico. 7 Significado Tamanho Mínimo Máximo Destiny address bit 0x0 0x Bit address bits 0x0 0x7 File address 7 bits 0x00 0x7f Literal 8 bits 0x00 0xff Program Address bits 0x000 0x7ff Os zeros à esquerda não podem ser eliminados. 8 Constantes do tipo File Definição da posição inicial do programa ; Programa - Definição da posição inicial do programa #include <pf877.inc> ;definição da PIC 0x ;posição inicial (-bit) constant marqualrélio = 0x0a ;definição da constante Como, no código assembly, file possui,apenas, sete bits, seu nome aparece sempre no banco 0, mesmo que se refira a um registrador de outro banco. Se o ereço escolhido corresponde a um SFR, o nome da constante não aparece na lista. 9 Este programa emprega um comentário e cinco diretivas, respectivamente. É gerado um código assembly vazio. A posição inicial padrão é 0x0. A diretiva ORG recebe um número de bits. A rigor, a diretiva deveria ser 0x Realização de uma escrita direta na SRAM Daqui por diante, a diretiva #include <pf877.inc> será usada somente quando necessário. ; Programa - Gravação de registrador 0xfff ;posição inicial 0xaa ;W = 0xaa 0x2a ;SRAM(0x2a) = W 7 Efeito do valor inicial do acumulador ; Programa 7 - Efeito do valor inicial do acumulador 0x ;posição inicial CLRW ;limpa o acumulador ADDLW 0xaa ;W = 0xaa + W 0x2a ;SRAM(0x2a) = W File Registers Address Hex 027 0x x x00 02A 0xAA 02B 0x00 02C 0x00 02D 0x00 Program Memory Address Opcode Disassembly CLRW 000 EAA ADDLW 0xaa AA 0x2a 2

3 Limpeza do acumulador Ao ligar o chip, o valor do acumulador é zero e, a princípio, a limpeza do acumulador não seria necessária. A não limpeza do acumulador, porém, provoca erros, devido a dois motivos:. Na segunda vez em que o programa for executado, o acumulador contém o resultado prévio obtido na execução anterior. 2. Mesmo na primeira execução, as cinco primeiras linhas do programa, em branco (0xfff), realizam, cada uma delas, uma subtração unitária no acumulador, de modo que, quando a adição é executada, o valor do acumulador não seria zero. 8 Realização de uma adição com label ; Programa 8 - Realização de uma adição com label 0x ;posição inicial constant marqualrélio = 0xaa ;dado constant ondecadê = 0x2a ;ereço CLRW ;limpa o acumulador ADDLW marqualrélio ;W = marqualrélio + W ondecadê ;SRAM(ondecadê) = W 027 0x x x00 02A 0xAA 02B 0x00 02C 0x00 02D 0x CLRW 000 EAA ADDLW 0xaa AA 0x2a 9 Realização de uma cópia direta 0 Realização de uma cópia indireta ; Programa 9 Realização de uma cópia direta 0x ;posição inicial 0xaa ;W = 0xaa 0x2a ;SRAM(0x2a) = W 0xaa- ;W = 0xa9 0x2a+ ;SRAM(0x2b) = W Aqui, a cópia direta significa que foram usados os valores numéricos x x x00 02A 0xAA 02B 0xA9 02C 0x00 02D 0x AA 0xaa AA 0x2a AB 0xa AB 0x2b ; Programa 0 Realização de uma cópia indireta 0x ;posição inicial constant marqualrélio = 0xaa ;dado constant ondecadê = 0x2a ;ereço ondecadê ;SRAM(ondecadê) = W marqualrélio- ;W = marqualrélio- ondecadê+ ;SRAM(ondecadê+) = W Aqui, a cópia indireta significa que foram usados rótulos x x x00 02A 0xAA 02B 0xA9 02C 0x00 02D 0x AA 0xaa AA 0x2a AB 0xa AB 0x2b Realização de um incremento 2 Operações aritméticas ; Programa Realização de um incremento 0x ;posição inicial constant marqualrélio = 0xaa ;dado constant ondecadê = 0x2a ;ereço ondecadê ;SRAM(ondecadê) = W INCF ;W = marqualrélio + ondecadê+ ;SRAM(ondecadê+) = W 027 0x x x00 02A 0xAA 02B 0xAB 02C 0x00 02D 0x AA 0xaa AA 0x2a A2A INCF 0x2a, 0x AB 0x2b 7 Cópia Adição Subtração Incremento Decremento ; Programa 2 Operações aritméticas 0x ;posição inicial constant marqualrélio = 0x ;dado constant operador = 0xae ;dado 2 constant ondecadê = 0x2a ;ereço ondecadê ;SRAM(ondecadê) = W * ADDLW operador ;W = operador ADD marqualrélio ondecadê+ ;SRAM(ondecadê+) = W SUBLW operador ;W = operador SUB marqualrélio ondecadê+2 ;SRAM(ondecadê+2) = W ondecadê+ ;SRAM(ondecadê+) = W INCF ondecadê+, ;SRAM(ondecadê+) = SRAM(ondecadê+) + ondecadê+ ;SRAM(ondecadê+) = W DECF ondecadê+, ;SRAM(ondecadê+) = SRAM(ondecadê+) *Esta linha pode ser removida. 8

4 2 Operações aritméticas Operações lógicas AE 00 0 ADD F 00 SUB AE INC DEC x00 02A 0x 02B 0xF 02C 0x9 02D 0x 02E 0x 02F 0x00 Não usar letras (F ou W) x AA 0x2a x 0008 EAE ADDLW 0xae AB 0x2b 000A 0 0x 000B CAE SUBLW 0xae 000C 00AC 0x2c 000D 0 0x 000E 00AD 0x2d 000F 0AAD INCF 0x2d, 0x x 00 00AE 0x2e 002 0AE DECF 0x2e, 90x Cópia AND OR XOR COM RL RR SWAP *Esta linha pode ser removida. ; Programa - Operações lógicas 0x ;posição inicial constant marqualrélio = 0x ;dado constant operador = 0xae ;dado 2 constant ondecadê = 0x2a ;ereço ondecadê ;SRAM(ondecadê) = W * ANDLW operador ;W = operador AND marqualrélio ondecadê+ ;SRAM(ondecadê+) = W IORLW operador ;W = operador IOR marqualrélio ondecadê+2 ;SRAM(ondecadê+2) = W XORLW operador ;W = operador XOR marqualrélio ondecadê+ ;SRAM(ondecadê+) = W ondecadê+ ;SRAM(ondecadê+) = W COMF ondecadê+, ;SRAM(ondecadê+) = COM SRAM(ondecadê+) ondecadê+ ;SRAM(ondecadê+) = W RLF ondecadê+, ;SRAM(ondecadê+) = RL SRAM(ondecadê+) ondecadê+ ;SRAM(ondecadê+) = W RRF ondecadê+, ;SRAM(ondecadê+) = RR SRAM(ondecadê+) ondecadê+7 ;SRAM(ondecadê+7) = W SWAPF ondecadê+7, ;SRAM(ondecadê+7) = SWAP SRAM(ondecadê+7) 20 AE 00 0 AND IOR XOR RL RR AE EF 0 AE EB COM BA B SWAP Operações lógicas 02A 0x 02B 0x0 02C 0xEF 02D 0xEB 02E 0xBA 02F 0xB 00 0x22 0 0x x AA 0x2a x AE ANDLW 0xae AB 0x2b 000A 0 0x 000B 8AE IORLW 0xae 000C 00AC 0x2c 000D 0 0x 000E AAE XORLW 0xae 000F 00AD 0x2d x 00 00AE 0x2e AE COMF 0x2e, 0x x 00 00AF 0x2f 00 0DAF RLF 0x2f, 0x x B0 0x CB0 RRF 0x0, 0x x 00A 00B 0x 00B 0EB SWAPF 0x, 2 0x RL Operações lógicas B RR Alguma instrução anterior configurou o carry para antes da efetuação da instrução RLF. Ao efetuar a instrução RLF, o nono bit vale. Como o oitavo bit vale 0, a operação RLF configura o carry para 0. Na efetuação da instrução RRF, o primeiro bit vale. Ao efetuar a instrução RRF, o carry passa para. RLF e RRF são operações de 9 bits. O resultado de RLF e RRF é uma palavra de 8 bits. O carry não faz parte do resultado. 22 Cópia ADD SUB AND IOR XOR *Esta linha pode serremovida. Operações com literais (LW) ; Programa - Operações com literais (LW) 0x ;posição inicial constant marqualrélio = 0x ;dado constant operador = 0xae ;dado 2 constant ondecadê = 0x20 ;ereço ondecadê ;SRAM(ondecadê) = W * ADDLW operador ;W = operador ADD marqualrélio ondecadê+ ;SRAM(ondecadê+) = W SUBLW operador ;W = operador SUB marqualrélio ondecadê+2 ;SRAM(ondecadê+2) = W ANDLW operador ;W = operador AND marqualrélio ondecadê+ ;SRAM(ondecadê+) = W IORLW operador ;W = operador IOR marqualrélio ondecadê+ ;SRAM(ondecadê+) = W XORLW operador ;W = operador XOR marqualrélio ondecadê+ ;SRAM(ondecadê+) = W 2 Três linhas por operação x A0 0x x 0008 EAE ADDLW 0xae A 0x2 000A 0 0x 000B CAE SUBLW 0xae 000C 00A2 0x22 000D 0 0x 000E 9AE ANDLW 0xae 000F 00A 0x x 00 8AE IORLW 0xae A 0x x 00 AAE XORLW 0xae 00 00A 0x2 Operações com literais (LW) ondecadê ;SRAM(ondecadê) = W * ADDLW operador ;W = operador ADD marqualrélio ondecadê+ ;SRAM(ondecadê+) = W SUBLW operador ;W = operador SUB marqualrélio ondecadê+2 ;SRAM(ondecadê+2) = W ANDLW operador ;W = operador AND marqualrélio ondecadê+ ;SRAM(ondecadê+) = W IORLW operador ;W = operador IOR marqualrélio ondecadê+ ;SRAM(ondecadê+) = W XORLW operador ;W = operador XOR marqualrélio ondecadê+ ;SRAM(ondecadê+) = W 020 0x 02 0xF 022 0x9 02 0x0 02 0xEF 02 0xEB ADD SUB AND IOR XOR AE F 00 AE AE AE EF 0 AE EB 0 0

5 Operações sobre bytes (WF), d= Operações sobre bytes (WF), d= ; Programa - Operações sobre bytes (WF), d= 0x ;posição inicial constant 0x ;dado marqualrélio = constant operador = 0xae ;dado 2 constant ondecadê = 0x20 ;ereço ondecadê ;SRAM(ondecadê) = W ;esta etapa representa ações anteriores quaisquer operador ;W = operador ondecadê+ ;SRAM(ondecadê+) = W ondecadê+2 ;SRAM(ondecadê+2) = W ondecadê+ ;SRAM(ondecadê+) = W ondecadê+ ;SRAM(ondecadê+) = W ondecadê+ ;SRAM(ondecadê+) = W ;esta é a etapa que interessa ADDWF ondecadê+, ;SRAM(ondecadê+) = SRAM(ondecadê+) ADD W SUBWF ondecadê+2, ;SRAM(ondecadê+2) = SRAM(ondecadê+2) SUB W ANDWF ondecadê+, ;SRAM(ondecadê+) = SRAM(ondecadê+) AND W IORWF ondecadê+, ;SRAM(ondecadê+) = SRAM(ondecadê+) IOR W XORWF ondecadê+, ;SRAM(ondecadê+) = SRAM(ondecadê+) XOR W AE 00 0 ADD F 00 AE 00 0 SUB AE 00 0 AND AE 00 0 IOR EF 0 AE 00 0 XOR EB x A0 0x AE 0xae A 0x A2 0x22 000A 00A 0x2 000B 00A 0x2 000C 00A 0x2 000D 0 0x 000E 07A ADDWF 0x2, 0x 000F 02A2 SUBWF 0x22, 0x 000 0A ANDWF 0x2, 0x 00 0A IORWF 0x2, 0x 002 0A XORWF 0x2, 0x 020 0x 02 0xF 022 0x9 02 0x0 02 0xEF 02 0xEB 2 2 Operações sobre bytes (WF), d=0 ADD SUB AND IOR XOR ; Programa - Operações sobre bytes (WF), d=0 0x ;posição inicial constant marqualrélio = 0x;dado constant operador = 0xae;dado 2 constant ondecadê = 0x20;ereço ondecadê ;SRAM(ondecadê) = W ;esta etapa representa ações anteriores quaisquer operador ;W = operador ondecadê+ ;SRAM(ondecadê+) = W ondecadê+2 ;SRAM(ondecadê+2) = W ondecadê+ ;SRAM(ondecadê+) = W ondecadê+ ;SRAM(ondecadê+) = W ondecadê+ ;SRAM(ondecadê+) = W ;esta é a etapa que interessa ADDWF ondecadê+,0 ;W = SRAM(ondecadê+) ADD W ondecadê+ ;SRAM(ondecadê+) = W SUBWF ondecadê+2,0 ;W = SRAM(ondecadê+2) SUB W ondecadê+2 ;SRAM(ondecadê+2) = W ANDWF ondecadê+,0 ;W = SRAM(ondecadê+) AND W ondecadê+ ;SRAM(ondecadê+) = W IORWF ondecadê+,0 ;W = SRAM(ondecadê+) IOR W ondecadê+ ;SRAM(ondecadê+) = W XORWF ondecadê+,0 ;W = SRAM(ondecadê+) XOR W ondecadê+ ;SRAM(ondecadê+) = W 27 Operações sobre bytes (WF), d=0 ADD SUB AND IOR XOR AE F 00 AE AE AE EF 0 AE EB x A0 0x AE 0xae A 0x A2 0x22 000A 00A 0x2 000B 00A 0x2 000C 00A 0x2 000D 0 0x 000E 072 ADDWF 0x2, 0x0 000F 00A 0x x SUBWF 0x22, 0x A2 0x x ANDWF 0x2, 0x A 0x x IORWF 0x2, 0x A 0x x 00A 02 XORWF 0x2, 0x0 00B 00A 0x x 02 0xF 022 0x9 02 0x0 02 0xEF 02 0xEB 28 Operações sobre bytes (WF), d=0 7 Operações com três entradas literais Para que o uso do d=0 seja útil, é preciso que o registrador lido e o registrador escrito não sejam os mesmos. No programa anterior, como esses registradores são os mesmos, a opção d= é a recomada. Outra aplicação para d=0 é quando se deseja preservar o dado obtido mas se precisa efetuar mais cálculos sobre ele. ; Programa 7 - Operações com três entradas literais 0x ;posição inicial constant dado = 0x0 ;dado constant dado2 = 0x02 ;dado 2 constant dado = 0x0 ;dado dado ;W = dado ADDLW dado2 ;W = dado 2 + W ADDLW dado ;W = dado + W x0 000 E02 ADDLW 0x E0 ADDLW 0x0 0

6 7 Operações com três entradas literais 8 Operações com três entradas registradas Um programa que não escreve em nenhum registrador não tem utilidade alguma. O valor do work register pode ser observado no status bar. O programa deve ser executado passo a passo. ; Programa 8 Operações com três entradas registradas 0x ;posição inicial constant ondecadê = 0x2 ;ereço constant ondecadê2 = 0x22 ;ereço 2 constant ondecadê = 0x2 ;ereço constant ondecadê = 0x2 ;ereço ondecadê,w ;W = SRAM(ondecadê) ADDWF ondecadê2,w ;W = SRAM(ondecadê2) + W ADDWF ondecadê,w ;W = SRAM(ondecadê) + W ondecadê ;SRAM(ondecadê) = W 02 0x x x0 02 0x0 Digitar x2, 0x ADDWF 0x22, 0x ADDWF 0x2, 0x A 0x2 2 8 Operações com três entradas registradas 9 Operações de uma entrada Um programa que lê GPR s sem que estes tenham sido escrito antes não tem utilidade. No programa anterior, foi omitida a etapa onde é realizada a necessária escrita prévia destes GPR s. É preciso digitar, manualmente, o valor dos GPR s empregados através da janela file registers do MPLAB. Digitar ; Programa 9 Operações de uma entrada 0x ;posição inicial constant marqualrélio = 0x ;dado constant ondecadê = 0x20 ;ereço ondecadê+ ;SRAM(ondecadê+) = W ondecadê+2 ;SRAM(ondecadê+2) = W ondecadê+ ;SRAM(ondecadê+) = W ondecadê+ ;SRAM(ondecadê+) = W ondecadê+ ;SRAM(ondecadê+) = W ondecadê+ ;SRAM(ondecadê+) = W ondecadê+7 ;SRAM(ondecadê+7) = W COMF ondecadê+, ;SRAM(ondecadê+) = COM SRAM(ondecadê+) RLF ondecadê+2, ;SRAM(ondecadê+2) = RL SRAM(ondecadê+2) RRF ondecadê+, ;SRAM(ondecadê+) = RR SRAM(ondecadê+) SWAPF ondecadê+, ;SRAM(ondecadê+) = SWAP SRAM(ondecadê+) INCF ondecadê+, ;SRAM(ondecadê+) = INC SRAM(ondecadê+) DECF ondecadê+, ;SRAM(ondecadê+) = DEC SRAM(ondecadê+) CLRF ondecadê+7 ;SRAM(ondecadê+7) = CLR SRAM(ondecadê+7) COM RL RR SWAP INC DEC BA xBA 022 0x8B 02 0x x 02 0x 02 0x 027 0x00 9 Operações de uma entrada B COMF RLF RRF SWAPF INCF DECF CLRF ondecadê+, ondecadê+2, ondecadê+, ondecadê+, ondecadê+, ondecadê+, ondecadê x A 0x A2 0x A 0x A 0x2 000A 00A 0x2 000B 00A 0x2 000C 00A7 0x27 000D 09A COMF 0x2, 0x 000E 0DA2 RLF 0x22, 0x 000F 0CA RRF 0x2, 0x 000 0EA SWAPF 0x2, 0x 00 0AA INCF 0x2, 0x 002 0A DECF 0x2, 0x 00 0A7 CLRF 0x A0 CLRF 0x A 0x2 20 Operações sobre bits ; Programa 20 Operações sobre bits 0x ;posição inicial constant ondecadê = 0x20 ;ereço CLRF ondecadê ;SRAM(ondecadê) = 0x00 ondecadê+ ;SRAM(ondecadê+) = W ;SRAM(ondecadê), bit 0 = ondecadê+2 ;SRAM(ondecadê+2) = W ondecadê, ;SRAM(ondecadê), bit = ondecadê+ ;SRAM(ondecadê+) = W ondecadê,2 ;SRAM(ondecadê), bit 2 = ondecadê+ ;SRAM(ondecadê+) = W ondecadê, ;SRAM(ondecadê), bit = ondecadê+ ;SRAM(ondecadê+) = W ondecadê, ;SRAM(ondecadê), bit = ondecadê+ ;SRAM(ondecadê+) = W ondecadê,7 ;SRAM(ondecadê), bit 7 = ondecadê+7 ;SRAM(ondecadê+7) = W x20, 0x x20, 0x x20, 0x0 000A 00A2 0x22 000B A0 0x20, 0x 000C x20, 0x0 000D 00A 0x2 000E 20 0x20, 0x2 000F x20, 0x A 0x2 00 A0 0x20, 0x x20, 0x A 0x x20, 0x x20, 0x A 0x A0 0x20, 0x x20, 0x A7 0x x b 022 0x b 02 0x b 02 0x b 02 0x0F 0000b 02 0xF 000b 027 0x9F 00b

7 A0 CLRF 0x A0 COMF 0x20, 0x x20, 0x0 2 Operações sobre bits BCF ; Programa 2 Operações sobre bits BCF 0x ;posição inicial constant ondecadê = 0x20 ;ereço CLRF ondecadê ;SRAM(ondecadê) = 0x00 COMF ondecadê, ;SRAM(ondecadê) = 0xFF ondecadê+ ;SRAM(ondecadê+) = W BCF ;SRAM(ondecadê), bit 0 = 0 ondecadê+2 ;SRAM(ondecadê+2) = W BCF ondecadê, ;SRAM(ondecadê), bit = 0 ondecadê+ ;SRAM(ondecadê+) = W BCF ondecadê,2 ;SRAM(ondecadê), bit 2 = 0 ondecadê+ ;SRAM(ondecadê+) = W BCF ondecadê, ;SRAM(ondecadê), bit = 0 ondecadê+ ;SRAM(ondecadê+) = W BCF ondecadê, ;SRAM(ondecadê), bit = 0 ondecadê+ ;SRAM(ondecadê+) = W 02 0xFF 022 0xFE 02 0xFC 02 0xF8 02 0xF0 02 0xE x A 0x BCF 0x20, 0x0 000A x20, 0x0 000B 00A2 0x22 000C 0A0 BCF 0x20, 0x 000D x20, 0x0 000E 00A 0x2 000F 20 BCF 0x20, 0x x20, 0x A 0x2 002 A0 BCF 0x20, 0x x20, 0x A 0x BCF 0x20, 0x x20, 0x A 0x2 008 A0 BCF 0x20, 0x x20, 0x0 00A 00A7 0x27 b 0b 00b 000b 0000b 00000b b 22 Operações sobre bits: RRF, RLF, BCF, Status Register ; Programa 22 Operações sobre bits: RRF, RLF, BCF, #include <pf877.inc> ;definição da PIC 0x ;posição inicial constant marqualrélio 0x ;dado = constant ondecadê = 0x20 ;ereço ondecadê ;SRAM(ondecadê) = W BCF STATUS,C ;bit C do status register = 0 STATUS,W ;W = SRAM(STATUS) ondecadê+ ;SRAM(ondecadê+) = W STATUS,C ;bit C do status register = STATUS,W ;W = SRAM(STATUS) ondecadê+2 ;SRAM(ondecadê+2) = W 020 0x 02 0xA 022 0xB 02 0x8A 02 0x8B 02 0x xA2 ondecadê+ ;SRAM(ondecadê+) = W BCF STATUS,C ;bit C do status register = 0 RLF ondecadê+, ;SRAM(ondecadê+) = RL SRAM(ondecadê+) ondecadê+ ;SRAM(ondecadê+) = W STATUS,C ;bit C do status register = RLF ondecadê+, ;SRAM(ondecadê+) = RL SRAM(ondecadê+) ondecadê+ ;SRAM(ondecadê+) = W BCF STATUS,C ;bit C do status register = 0 RRF ondecadê+, ;SRAM(ondecadê+) = RR SRAM(ondecadê+) 00000b 00000b 0000b 00000b 0000b b 00000b x A0 0x BCF 0x0, 0x x0, 0x A 0x2 000A 0 0x0, 0x0 000B 080 0x0, 0x0 000C 00A2 0x22 000D 0 0x 000E 00A 0x2 000F 00 BCF 0x0, 0x DA RLF 0x2, 0x x A 0x x0, 0x0 00 0DA RLF 0x2, 0x x 00 00A 0x BCF 0x0, 0x CA RRF 0x2, 0x x 00A 00A 0x2 00B 0 0x0, 0x0 00C 0CA RRF 0x2, 0x BCF ondecadê,7 ;SRAM(ondecadê), bit 7 = 0 ;W = SRAM(ondecadê) ondecadê+7 ;SRAM(ondecadê+7) = W 7 ondecadê+ ;SRAM(ondecadê+) = W STATUS,C RRF ondecadê+, ;bit C do status register = ;SRAM(ondecadê+) = RR SRAM(ondecadê+) A diretiva #include <pf877.inc> 8 é necessária. 2 Não comutatividade da subtração ; Programa 2 Não comutatividade da subtração 0x ;W = 0x 0x20 ;SRAM(0x20) = W 7 9 = (9 7) = 2 ENDEREÇAMENTO DA SRAM 0xae ;W = 0xAE 0x2 ;SRAM(0x2) = W 0x ;W = 0x SUBLW 0xae ;W = 0xAE - 0x 0x22 ;SRAM(0x22) = W 0xae ;W = 0xAE SUBLW 0x ;W = 0x - 0xAE 0x2 ;SRAM(0x2) = W AEh h: C = h AEh: C = 0 W = L W W = 0xAE 0x W = L W W = 0x 0xAE 020 0x 02 0xAE 022 0x9 02 0x97 AEh h = 9h 00h + h AEh = 97h x A0 0x AE 0xae A 0x x 000 CAE SUBLW 0xae A2 0x AE 0xae 0008 C SUBLW 0x A 9 0x2 ENDEREÇAMENTO DA SRAM 0 2 ENDEREÇAMENTO DA SRAM 2 Endereçamento dos bancos sem rótulos ; Programa 2 Endereçamento dos bancos sem rótulos 0x ;W = 0x ;0x020 = RP=0; RP0=0 banco 0 BCF 0x0,0x BCF 0x0,0x 0x20 ;SRAM(0x020) = W ;0x0A0 = RP=0; RP0= banco BCF 0x0,0x ;* 0x0,0x 0x20 ;SRAM(0x0A0) = W ;0x20 = RP=; RP0=0 banco 2 0x0,0x BCF 0x0,0x 0x20 ;SRAM(0x20) = W ;0xA0 = RP=; RP0= banco 0x0,0x ;* 0x0,0x 0x20 ;SRAM(0xA0) = W *Esta linha pode serremovida x BCF 0x0, 0x BCF 0x0, 0x A0 0x BCF 0x0, 0x x0, 0x A0 0x x0, 0x BCF 0x0, 0x A0 0x20 000A 70 0x0, 0x 000B 8 0x0, 0x 000C 00A0 0x20 Status Register 2 ENDEREÇAMENTO DA SRAM 2 Endereçamento dos bancos com rótulos ; Programa 2 Endereçamento dos bancos com rótulos #include <pf877.inc> ;definição da PIC 0x ;posição inicial constant ondecadê = 0x20 ;ereço 0x ;W = 0x ;0x020 = RP=0; RP0=0 banco 0 BCF STATUS,RP BCF STATUS,RP0 ondecadê ;SRAM(0x020) = W ;0x0A0 = RP=0; RP0= banco BCF STATUS,RP ;* STATUS,RP0 ondecadê ;SRAM(0x0A0) = W ;0x20 = RP=; RP0=0 banco 2 STATUS,RP BCF STATUS,RP0 ondecadê ;SRAM(0x20) = W ;0xA0 = RP=0; RP0= banco STATUS,RP ;* STATUS,RP0 ondecadê ;SRAM(0xA0) = W *Esta linha pode ser removida x BCF 0x0, 0x BCF 0x0, 0x A0 0x BCF 0x0, 0x 000A 8 0x0, 0x 000B 00A0 0x20 000C 70 0x0, 0x 000D 28 BCF 0x0, 0x 000E 00A0 0x20 000F 70 0x0, 0x x0, 0x 00 00A0 0x20 Status Register 2

8 8 2 ENDEREÇAMENTO DA SRAM 2 Efeito do overflow do ereço da SRAM ; Programa 2 Efeito do overflow do ereço #include <pf877.inc> ;definição da PIC 0x ;posição inicial constant ondecadê = 0x7F ;ereço 0x ;W = 0x BCF STATUS,RP ;* BCF STATUS,RP0 ;* ondecadê ;SRAM(0x07F) = W ondecadê+ ;SRAM(0x000) = W O ereço 80h é inválido, pois podem ser usados, somente, sete bits para o file address. Isto significa que 80h é convertido para 00h. Ocorre overflow no ereçamento x BCF 0x0, 0x BCF 0x0, 0x FF 0x7f x00 2 ENDEREÇAMENTO DA SRAM Endereçamento por 7 ou 9 bits O opcode, o código de máquina e o código disassembly usam 7 bits para ereço na SRAM. O MPLAB aceita um ereçamento de 9 bits, eliminando automaticamente os dois bits mais significativos. Aparece uma mensagem de aviso dizo que o registrador não se encontra no banco 0, indicando que o ereço deve conter 7 bits. Este aviso indica que o MPLAB realizou alterações no programa. *Esta linha pode serremovida. 2 ENDEREÇAMENTO DA SRAM Exemplo anterior, com ereçamento de 9 bits 2 ENDEREÇAMENTO DA SRAM 27 Endereçamento indireto da SRAM Message[02]...\ereçamento.ASM : Registerin operand not in bank 0. Ensure that bank bits are correct. Message[02]...\ereçamento.ASM 9 : Registerin operand not in bank 0. Ensure that bank bits are correct. Message[02]...\ereçamento.ASM 2 : Registerin operand not in bank 0. Ensure that bank bits are correct. O programa contém erros, mas o MPLAB realiza as correções automaticamente durante a montagem. Tais erros não serão admitidos nas avaliações. Linha : 0x0a0 ;SRAM(0x0A0) = W Linha 9: 0x20 ;SRAM(0x20) = W Linha 2: 0xa0 ;SRAM(0xA0) = W x BCF 0x0, 0x BCF 0x0, 0x A0 0x BCF 0x0, 0x 000A 8 0x0, 0x 000B 00A0 0x20 000C 70 0x0, 0x 000D 28 BCF 0x0, 0x 000E 00A0 0x20 000F 70 0x0, 0x x0, 0x 00 00A0 0x20 ; Programa 27 Endereçamento indireto da SRAM #include <pf877.inc> ;definição da PIC 0x ;posição inicial 0x20 ;W = 0x20 Banco 0 FSR ;SRAM(FSR) = W 0xaa ;W = 0xAA INDF ;SRAM(0x20) = W 0xa0 ;W = 0xA0 Banco FSR ;SRAM(FSR) = W 0xaa ;W = 0xAA INDF ;SRAM(0xA0) = W x x AA 0xaa x A0 0xa0 000A 008 0x0 000B 0AA 0xaa 000C x00 2 ENDEREÇAMENTO DA SRAM 28 Endereçamento indireto da SRAM e IRP ; Programa 28 Endereçamento indireto da SRAM e IRP #include <pf877.inc> ;definição da PIC 0x ;posição inicial BCF STATUS,IRP ;STATUS(IRP) = 0 0x20 ;W = 0x20 FSR ;SRAM(FSR) = W 0xbb ;W = 0xBB INDF ;SRAM(INDF) = W STATUS,IRP ;STATUS(IRP) = 0 0x20 ;W = 0x20 FSR ;SRAM(FSR) = W 0xbb ;W = 0xBB INDF ;SRAM(INDF) = W BCF 0x0, 0x x x BB 0xbb x00 000A 78 0x0, 0x7 000B 020 0x20 000C 008 0x0 000D 0BB 0xbb 000E x00 2 ENDEREÇAMENTO DA SRAM Endereçamento indireto da SRAM IRP FSR 7 8

9 9 2 ENDEREÇAMENTO DA SRAM Endereçamento indireto da SRAM 2 ENDEREÇAMENTO DA SRAM 29 Endereço e dado indiretos O ereçamento indireto permite que o programa decida qual o ereço a ser acessado. Com ereçamento direto, não é possível interpretar o conteúdo de um registrador como o ereço de outro registrador. Com ereçamento indireto, o conteúdo de um registrador pode ser copiado para FSR, que é usado como o ereço de 8 bits para outro registrador. ; Programa 29 Endereço e dado indiretos #include <pf877.inc> ;definição da PIC 0x ;posição inicial constant ondecadê = 0x20;ereço que contém o ereço constant ondecadê2 = 0x2;ereço que contém o dado BCF STATUS,IRP ;STATUS(IRP) = 0 ondecadê,w ;W = SRAM(ondecadê) FSR ;SRAM(FSR) = W ondecadê2,w ;W = SRAM(ondecadê2) INDF ;SRAM(INDF) = W BCF 0x0, 0x x20, 0x x x2, 0x x x2 02 0xAA Digitar com argumento numérico 020 0x0 ; Programa 0 - com argumento numérico 02 0x00 0x20 constant ondecadê = ;ereço 022 0x0 CLRF ondecadê ;não importa 02 0x00 ;não importa ondecadê+ ;não importa ondecadê,2 ;não importa ;não importa A0 CLRF 0x20 ondecadê+2 ;não importa x20, 0x A 0x x20, 0x2 0x00a ; bits Pulado x20, 0x A2 0x22 ondecadê,7 ;não importa F 0x00a ;não importa A0 0x20, 0x7 ondecadê+ ;não importa x20, 0x A 0x2 Pulado 000A FFF 000B FFF 000C FFF 000D FFF 000E FFF 000F FFF 000 FFF Experimente usar, como argumento do, um valor inferior ao do ereço da instrução. 2 com argumento simbólico É útil usar a função step into. Isso permite observar a ação do desvio. No status bar, é possível conferir o valor do program counter. O botão reset permite retornar ao início do programa. ; Programa - com argumento simbólico constant ondecadê = 0x20 ;ereço SRAM constant ondegoto = 0x00a;ereço FLASH; bits CLRF ondecadê ondecadê+ ondecadê+2 ondegoto ; bits ondecadê, ondecadê A0 CLRF 0x x20, 0x A 0x x20, 0x x20, 0x A2 0x F 0x00a A0 0x20, 0x x20, 0x A 0x2 000A FFF 000B FFF 000C FFF 000D FFF 000E FFF 000F FFF 000 FFF

10 0 2 com argumento numérico ; Programa 2 com argumento numérico constant ondecadê = 0x20 ;ereço CLRF ondecadê ondecadê+ ondecadê+2 ondecadê, ondecadê+ 0x00d ; bits ondecadê,2 ondecadê+ ondecadê, ondecadê+ ondecadê, ondecadê+ ondecadê,7 ondecadê+7 Pulado 02 0x x0 02 0x0 02 0x00 Pulado 02 0x0B 02 0xB A0 CLRF 0x x9B x20, 0x A 0x x20, 0x x20, 0x A2 0x A0 0x20, 0x x20, 0x A 0x C 0x00D 000A 20 0x20, 0x2 000B x20, 0x0 000C 00A 0x2 000D A0 0x20, 0x 000E x20, 0x0 000F 00A 0x x20, 0x x20, 0x A 0x2 00 7A0 0x20, 0x x20, 0x A7 0x27 Pulado com argumento numérico O ereço real fornece, diretamente, o valor da posição da flash para onde o PC deve apontar após a instrução. Este tipo de programação é o que aparece no código assembly puro (disassembly). Este tipo de programação requer o conhecimento da posição exata do próximo ponto de execução. Nem sempre a determinação deste ereço é fácil. Ao acrescentar ou remover linhas no programa, pode ser necessário recalcular tais ereços. ; Programa - com rótulo absoluto 0xa ;alterar constant 0x20 ;ereço ondecadê = ali ondecadê,7 ;SRAM(ondecadê), bit 7 = ondecadê+7 ;SRAM(ondecadê+7) = W com rótulo absoluto CLRF ondecadê ;SRAM(ondecadê) = 0x00 ondecadê+ ;SRAM(ondecadê+) = W ;SRAM(ondecadê), bit 0 = ondecadê+2 ;SRAM(ondecadê+2) = W ondecadê, ;SRAM(ondecadê), bit = ondecadê+ ;SRAM(ondecadê+) = W ali ; bits ondecadê,2 ;SRAM(ondecadê), bit 2 = ondecadê+ ;SRAM(ondecadê+) = W ondecadê, ;SRAM(ondecadê), bit = ondecadê+ ;SRAM(ondecadê+) = W ondecadê, ;SRAM(ondecadê), bit = ondecadê+ ;SRAM(ondecadê+) = W 02 0x x0 02 0x0 02 0x00 Pulado 02 0x0B 02 0xB 000A 0A0 CLRF 0x x9B 000B x20, 0x0 000C 00A 0x2 000D 20 0x20, 0x0 000E x20, 0x0 000F 00A2 0x A0 0x20, 0x x20, 0x0 Pulado A 0x x x20, 0x x20, 0x A 0x2 007 A0 0x20, 0x x20, 0x A 0x2 00A 20 0x20, 0x 00B x20, 0x0 00C 00A 0x2 00D 7A0 0x20, 0x7 00E x20, 0x0 00F 00A7 0x27 ali = 7h Pulado 7 com rótulo absoluto O rótulo pode ser colocado na própria linha onde se encontra a instrução para onde o salto é direcionado. Experimente colocar o rótulo ali antes da linha onde a instrução se encontra. 8 Efeito do overflow do ereço da PM ; Programa - Efeito do overflow do ereço 0x7fa ;ponto de início ali NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP ali O ereço 080h é inválido, pois podem ser usados, somente, onze bits para a PM. Isto significa que 080h é convertido para 00h. Há erro no ereçamento. 07F9 FFF 07FA 0000 NOP 07FB 0000 NOP 07FC 0000 NOP 07FD 0000 NOP 07FE 280 0x00 07FF 0000 NOP NOP NOP NOP NOP NOP NOP NOP 0807 FFF Página 0 Página 9 Efeito do overflow do ereço da PM Ao usar a instrução, é preciso cuidar para que o jump não tente passar de uma página para outra. Na ocorrência do overflow do argumento da instrução, os bits excedentes são simplesmente ignorados. A instrução, naturalmente, não permite a troca de página. Jumps entre páginas não são permitidos. Mais adiante será visto um procedimento para o uso da instrução em jumps entre páginas. 0

11 Endereço relativo $: Vai para o ereço da $ flash. $ indica o ereço atual apontado pelo PC, o ereço da instrução. O símbolo $ não pertence ao assembler puro, é uma extensão do MPLAB que representa o ereço atual da flash. O ereço $- aponta para a instrução anterior, uma linha acima no programa. O ereço $+ aponta para a instrução seguinte, uma linha abaixo no programa. Pode-se usar avançar ou retornar várias linhas. ; Programa - com rótulo relativo 0xa ;alterar constant 0x20 ;ereço ondecadê = CLRF ondecadê ondecadê+ ondecadê+2 ondecadê, ondecadê+ $+ ; bits ondecadê,2 ondecadê+ ondecadê, ondecadê+ ondecadê, ondecadê+ ondecadê,7 ondecadê+7 com rótulo relativo Pulado Este programa gera o mesmo disassembly do programa. 000A 0A0 CLRF 0x20 000B x20, 0x0 000C 00A 0x2 000D 20 0x20, 0x0 000E x20, 0x0 000F 00A2 0x A0 0x20, 0x x20, 0x A 0x x x20, 0x x20, 0x A 0x2 007 A0 0x20, 0x x20, 0x A 0x2 00A 20 0x20, 0x 00B x20, 0x0 00C 00A 0x2 00D 7A0 0x20, 0x7 00E x20, 0x0 00F 00A7 0x27 $ = 0xh $+ = 0x7h Pulado 2 com rótulo relativo Embora o valor $+n possa ser entido como linhas acima ou abaixo no código assembly (arquivo.asm ), ele indica, de fato, linhas acima ou abaixo no código montado, isto é, opcode s acima ou abaixo. Códigos não-assembly, como linha em branco, linha de comentário, linha de definição de constantes, etc., não são considerados. Todas as linhas que não gerem opcode no disassembler são ignoradas. Se linhas são adicionadas ou removidas entre a instrução e o destino do salto, o argumento deve ser recalculado. ; Programa CALL - Errado #include <pf877.inc> 0x BCF BCF CALL Rotina STATUS,RP0 STATUS,RP 0x0 Rotina 0x0 0x0 0x0 CALL BCF 0x0, 0x BCF 0x0, 0x x CALL 0x00a x0 000A 00 0x0 000B C 00 0x0 O programa entra num laço infinito. É preciso impedir que a rotina espera seja executada fora do chamado. Ocorre um stack underflow. CALL 7 Seleção entre duas sub-rotinas ; Programa 7 - Duas sub-rotinas #include <pf877.inc> 0x BCF STATUS,C ;escolher entre e BCF BTFSS STATUS,C ;se C=0 então... CALL RotinaC0 ;executa RotinaC0 BTFSC STATUS,C ;se C= então... CALL RotinaC ;executa RotinaC Fim ;evita que as rotinas sejam executadas RotinaC0 0x0 0x20 CLRF 0x2 RotinaC 0x0 0x2 CLRF 0x20 Label para sub-rotina. Label para ponto específico. Fim

12 2 7 Seleção entre duas sub-rotinas BCF 0x0, 0x x0, 0x0 000 C0 BTFSS 0x0, 0x0 000 C0 BTFSS 0x0, 0x B CALL 0x00b B CALL 0x00b BTFSC 0x0, 0x BTFSC 0x0, 0x F CALL 0x00f F CALL 0x00f 000A 28 0x 000A 28 0x 000B 00 0x0 000C 00A0 0x20 000B 00 0x0 000C 00A0 0x20 000D 0A CLRF 0x2 000D 0A CLRF 0x2 000E E F 00 0x A 0x2 000F 00 0x A 0x2 00 0A0 CLRF 0x A0 CLRF 0x x x x0 02 0x Seleção entre duas sub-rotinas Sempre que for necessário optar por dois ou mais caminhos diferentes, este procedimento deve ser adotado. Somente é possível decidir entre dois caminhos. Se há mais de dois caminhos a serem escolhidos, mais procedimentos de decisão devem ser aplicados. Um bit é usado como critério de decisão entre duas opções. 8 CALL e Antes de verificar a pilha, convém apagá-la. Ela não é apagada em um reset do debugger. 8 Programa anterior sem o uso de CALL ; Programa 8 - Programa anterior sem o uso de CALL #include <pf877.inc> 0x Faz o push PC=7 Stack pointer 000 BCF 0x0, 0x0 000 BTFSS 0x0, 0x CALL 0x00b 0008 BTFSC 0x0, 0x CALL 0x00f 000A 0x 000B 0x0 000C 0x20 000D CLRF 0x2 000E 000F 0x x2 00 CLRF 0x BCF STATUS,C ;escolher entre e BCF BTFSS STATUS,C ;se C=0 então... RotinaC0 ;executa RotinaC0 RotinaC ;executa RotinaC BCF 0x0, 0x0 RotinaC0 000 C0 BTFSS 0x0, 0x0 0x x009 0x20 CLRF 0x D 0x00d Fim ;evita RotinaC x0 RotinaC 000A 00A0 0x20 0x0 000B 0A CLRF 0x2 0x2 000C 28 0x0 CLRF 0x20 Fim ;* 000D 00 0x0 000E 00A 0x2 Fim 000F 0A0 CLRF 0x x0 *Esta linha pode ser removida. ;RotinaC 0x0 0x2 CLRF 0x20 0x ;* PCL ;* 9 Programa anterior sem o uso de ; Programa 9 - Programa anterior sem o uso de #include <pf877.inc> 0x CLRF PCLATH ;* BCF STATUS,C ;escolher entre e BCF 0x0c BTFSS STATUS,C ;se C=0 então... PCL ;executa RotinaC0 0x PCL ;executa RotinaC ;RotinaC0 0x0 0x20 CLRF 0x2 0x ;evita RotinaC PCL ;evita RotinaC 000 CLRF 0x0a 000 BCF 0x0, 0x x0c 0008 BTFSS 0x0, 0x x02 000A 0x 000B 0x02 000C 0x0 000D 0x20 000E CLRF 0x2 000F 0x 000 0x x x2 00 CLRF 0x x 00 0x02 7 *Esta linha pode ser removida. Fim 0 CALL sem ; Programa 9 - CALL sem - Proibido #include <pf877.inc> 0x BCF STATUS,C ;escolher entre e BCF BTFSS STATUS,C ;se C=0 então... CALL RotinaC0 ;executa RotinaC0 BTFSC STATUS,C ;se C= então... CALL RotinaC ;executa RotinaC RotinaC0 CLRF RotinaC CLRF 0x0 0x20 0x2 Fim 0x0 0x2 0x20 Fim 000 BCF 0x0, 0x0 000 BTFSS 0x0, 0x CALL 0x00a 0008 BTFSC 0x0, 0x CALL 0x00e 000A 0x0 000B 0x20 000C CLRF 0x2 000D 0x02 000E 0x0 000F 0x2 000 CLRF 0x x02 Este programa funciona, mas dá erro na pilha. Para cada CALL, deve existir um. 72 Não é correto o uso de CALL sem.

13 Não uso da instrução CALL Não uso da instrução CALL A substituição do CALL por ajuda a prevenir stack overflow. É recomável o uso de nas situações:. Desvios que não envolvam sub-rotinas. 2. Desvios para sub-rotinas que sejam chamadas, somente, em uma única linha do programa.. Desvios para sub-rotinas que, embora tenham mais pontos de chamada, forçam, após a execução, o PC a ir para o mesmo ponto. Quando há desvios para sub-rotinas que tenham mais pontos de chamada e, após o retorno, o programa deve prosseguir a partir do ponto onde estava antes da chamada, então é recomado o uso do CALL, pois, cada ponto de chamada produzirá um diferente com base no ereço diferente contido na TOS. Se, mesmo nesse tipo de situação, for necessário eliminar o CALL, por motivo de stack overflow, então é preciso criar várias cópias da sub-rotina, uma para cada ponto de chamada. 7 7 Uma sub-rotina dentro de outra ; Programa - Uma sub-rotina dentro da outra 0x CALL RotinaC0 ;executa RotinaC0 Fim RotinaC0 0x0 0x20 CLRF 0x2 CALL RotinaC ;executa RotinaC RotinaC 0x0 0x2 CLRF 0x20 Fim 020 0x0 02 0x0 000 CALL 0x x x x CLRF 0x2 000A CALL 0x00c 000B 000C 0x0 000D 0x2 000E CLRF 0x20 000F 7 Escopo de e CALL O argumento das instruções e CALL tem bits. O argumento pode variar de 000h até 7FFh. As instruções e CALL não permitem mudança de página da program memory. Ao usar rótulo absoluto, é preciso verificar se o local do programa onde este rótulo está colocado não pertence a uma página diferente do local onde a instrução ou CALL se encontram. Ao usar rótulo relativo ($), é preciso verificar se o deslocamento do PC não apontaria para uma outra página. Qualquer tentativa de mudança de página nas instruções e CALL implica na eliminação de PC<2:>, levando o PC para um local errado. 7 Criação de um temporizador A MCU é muito rápida na percepção humana. Uma única variável de 8 bits não é suficiente para criar um tempo de duração útil. Quanto maior for o tempo de espera, maior é o número de variáveis (GPR s) necessários. Por meio da escolha do valor inicial destas variáveis na linha de código ASM, pode-se configurar a temporização

14 A variável de contagem pode ser qualquer GPR. O modo mais fácil de comparação de um valor é verificando se ele é zero. Um zero pode ser identificado por meio do bit Z do status register ou por meio das instruções do tipo skip if zero. Como a verificação é feita sobre o zero, então este é o valor final da contagem. A contagem é decrescente. A contagem é encerrada quando o valor zero é obtido. A máxima contagem é feita com o GPR valo inicialmente FFh. A mínima contagem é feita com o GPR valo inicialmente 0h. Criação de um temporizador 79 2 Temporizador com uma variável ; Programa 2 - Temporizador com uma variável 0x constant TEMPO = 0x20 constant VALOR = 0x0f ;configurável TEMPO, F $-0x Endereço arbitrário VALOR TEMPO Valor que define a temporização 0x0f 0x20 0x20, 0x 0x007 Use o comando animate para observar a contagem Temporizador com uma variável Use o comando animate para observar a contagem. 2 Temporizador com uma variável Experimente abaixar a frequência até que aconteça um WDT time out ; Programa - Proteção do WDT 0x constant TEMPO = 0x20 constant VALOR = 0x0f ;configurável VALOR TEMPO TEMPO, F $-0x2 Proteção do WDT 0x0f 0x20 0x20, 0x 0x007 Depo da configuração do WDT, pode haver um reset na PIC antes do término da contagem. Convém reiniciar WDT no decorrer da contagem. Se o WDT está desabilitado, este cuidado não é necessário. A inclusão de instruções no ciclo de contagem aumenta o 8 tempo da contagem em T CY. Cálculo aproximado do tempo TEMPO,F $-0x2 Na ª execução do, TEMPO = 0x0F. Na 2ª execução do, TEMPO = 0x0E. Na ª execução do, TEMPO = 0x0. Nesta repetição, o faz TEMPO = 0x00. Nesta repetição, o faz o skip. Nesta repetição, o não é executado. O ciclo de contagem é executado vezes e não. O e o são executados vezes. O é executado vezes. 8

15 Cálculo aproximado do tempo Contador de dois bytes O é T CY. O e o são 2T CY. O ciclo de contagem é T CY + 2T CY + 2T CY = T CY. O ciclo total é ( T CY ) + T CY = 7T CY. Considerar as duas operações de movimentação. Tempo = 7T CY + T CY + T CY = 7T CY. T CY = T OSC. 7T CY = 00T OSC. f OSC = 20MHz (suposição). T OSC = 0ns. 00T OSC = s. TEMPO,F $-0x2 8 ; Programa - Contador de dois bytes 0x constant TEMPOA = 0x20 constant TEMPOB = 0x2 constant VALOR = 0x0f ;configurável VALOR TEMPOB TEMPOA TEMPOA, F $-0x2 TEMPOB, F $-0x 0x0f 0x2 0x20 0x20, 0x 0x008 0x2, 0x 0x007 TEMPOA: Variável menos significativa TEMPOB: Variável mais significativa 8 Contador de três bytes ; Programa Contador de três bytes 0x constant TEMPOA = 0x20 constant TEMPOB = 0x2 constant TEMPOC = 0x22 constant VALOR = 0xff ;configurável VALOR TEMPOC TEMPOB TEMPOA TEMPOA, F $-0x2 TEMPOB, F $-0x TEMPOC, F $-0x8 0xff 0x22 0x2 0x20 0x20, 0x 0x009 0x2, 0x 0x008 0x22, 0x 0x007 TEMPOA: Variável menos significativa TEMPOC: Variável mais significativa 87 Espera constant constant constant Parâmetros iniciais indepentes Na lista de definições: TEMPOA = 0x20 TEMPOB = 0x2 TEMPOC = 0x22 Rotina Espera VALORC TEMPOC VALORB TEMPOB VALORA TEMPOA TEMPOA,F $-0x2 TEMPOB,F $-0x TEMPOC,F $-0xa Endereços arbitrários Valores quedefinem a temporização 0x0 a 0xff Não aceitam valor 0x00 Retorna a quantidade de linhas mencionada 88 Configuração h C2h 28h h = 09d de 0d a 08d. C2h = 9d de 0d a 9d. 28h = d de 0d a 0d. 9 9 =.0. passos. A contagem é de h a 7B9h. 0x28 0x22 0xc2 0x2 0x 0x20 0x20, 0x 0x00b 0x2, 0x 0x009 0x22, 0x 0x007 ; Programa Configuração h C2h 28h 0x constant VALORA = 0x ;configurável constant VALORB = 0xc2 ;configurável constant VALORC = 0x28 ;configurável constant TEMPOA = 0x20 constant TEMPOB = 0x2 constant TEMPOC = 0x22 VALORC TEMPOC VALORB TEMPOB VALORA TEMPOA TEMPOA, F $-0x2 TEMPOB, F $-0x TEMPOC, F $-0xa 89 ; Programa 7 Quatro variáveis 0x 7 Contador de quatro bytes constant VALORA = 0x ;configurável constant VALORB = 0xc2 ;configurável constant VALORC = 0x8d ;configurável constant VALORD = 0xff ;configurável constant TEMPOA = 0x20 constant TEMPOB = 0x2 constant TEMPOC = 0x22 constant TEMPOD = 0x2 VALORD TEMPOD VALORC TEMPOC VALORB TEMPOB 0xff VALORA 0x2 TEMPOA 0x8d 0x22 0xc2 TEMPOA, F 0x2 $-0x2-0x0 0x TEMPOB, F 0x20 $-0x2-0x TEMPOC, F 0x20, 0x $-0x2-0x8 0x00d TEMPOD, F 0x2, 0x $-0x2-0xc 0x00b 0x22, 0x 0x009 0x2, 90 0x 0x007

16 7 Contador de quatro bytes O argumento da instrução foi parametrizado. Isto facilita a programação dos parâmetros. Ao inserir novas linhas na rotina a ser repetida, basta corrigir o valor 0x02. VALORD TEMPOD VALORC TEMPOC VALORB TEMPOB VALORA TEMPOA TEMPOA, F $-0x2-0x0 TEMPOB, F $-0x2-0x TEMPOC, F $-0x2-0x8 TEMPOD, F $-0x2-0xc Rotina a ser repetida linha (n=) n+ = Contador de quatro bytes TEMPOA, F $-0x2-0x0 TEMPOB, F $-0x2-0x TEMPOC, F $-0x2-0x8 TEMPOD, F $-0x2-0xc A progressão de quatro em quatro existe porque há quatro instruções para cada variável (,, e ). Se as variáveis tivessem todas o mesmo valor inicial, a progressão seria de três em três WDT sem time out ; Programa 8 WDT sem time out 0xb 0x22 0xff 0x2 Executar um reset. 0xfd 0x20 9 WDT com time out ; Programa 9 WDT com time-out 0xb 0x22 0xff 0x2 Executar um reset. 0xfe 0x20 0x20,0x 0x00 0x2,0x 0x00 0x22,0x 0x passos de contagem. Não ocorre WDT overflow. 0x20,0x 0x00 0x2,0x 0x00 0x22,0x 0x passos de contagem. Ocorre WDT time out. Output CORE-W00: Halted due to PC incrementing over the Maximum PC address and wrapping back to Zero Output CORE-W000: Watchdog Timer event occurred. Break in execution requested 9 9 ; Programa 0 Habilitação do WDT #include <PF877.INC> config _WDT_OFF 0x constant VALOR = 0xff constant TEMPO = 0x20 0 Habilitação do WDT VALOR TEMPO+0x2 TEMPO+0x TEMPO TEMPO,F $-0x TEMPO+0x,F $-0x TEMPO+0x2,F $-0x7 CORE-W00: Halted due to PC incrementing over the Maximum PC address and wrapping back to Zero ; Programa 0 Habilitação do WDT #include <PF877.INC> config _WDT_ON 0x constant VALOR = 0xff constant TEMPO = 0x20 VALOR TEMPO+0x2 TEMPO+0x TEMPO TEMPO,F $-0x TEMPO+0x,F $-0x TEMPO+0x2,F $-0x7 9 CORE-W000: Watchdog Timer event occurred. Break in execution requested Habilitação do WDT sem #include ; Programa 0 Habilitação do WDT ; Programa Desabilitação do WDT sem #include #include <PF877.INC> config _WDT_OFF config 0xffb 0x 0x constant VALOR = 0xff constant VALOR = 0xff constant TEMPO = 0x20 constant TEMPO = 0x20 VALOR VALOR TEMPO+0x2 TEMPO+0x2 TEMPO+0x TEMPO+0x TEMPO TEMPO TEMPO,F TEMPO,F $-0x $-0x TEMPO+0x,F TEMPO+0x,F $-0x $-0x TEMPO+0x2,F TEMPO+0x2,F $-0x7 $-0x7 9

17 7 2 Configuração do WDT ; Programa 2 Configuração do WDT #include <PF877.INC> config _WDT_ON 0x constant VALOR = 0x9c constant TEMPO = 0x20 ;WDT Postscaler = :28 BCF STATUS, RP STATUS, RP0 OPTION_REG,PS2 OPTION_REG,PS OPTION_REG,PS0 VALOR TEMPO+0x2 TEMPO+0x TEMPO TEMPO,F $-0x TEMPO+0x,F $-0x TEMPO+0x2,F $-0x7 0x07 IORWF OPTION_REG,F CORE-W00: Halted due to PC incrementing over the Maximum PC address and wrapping back to Zero ; Programa 2 Configuração do WDT #include <PF877.INC> config _WDT_ON 0x constant VALOR = 0x9c constant TEMPO = 0x20 ;WDT Postscaler = : BCF STATUS, RP STATUS, RP0 OPTION_REG,PS2 OPTION_REG,PS BCF OPTION_REG,PS0 VALOR TEMPO+0x2 TEMPO+0x TEMPO TEMPO,F $-0x TEMPO+0x,F $-0x TEMPO+0x2,F $-0x7 0x0 IORWF OPTION_REG,F 97 CORE-W000: Watchdog Timer event occurred. Break in execution requested 98 EEPROM Leitura direta Na leitura direta, o ereço da EEPROM a ser lido é determinado diretamente no programa. Esta opção tem a vantagem de ser mais simples. Esta opção tem a desvantagem de não permitir que o ereço da EEPROM esteja condicionado a outras variáveis do sistema. EEPROM Leitura direta ; Programa - EEPROM Leitura direta ; Baseado no exemplo - do datasheet da picf877 #include <pf877.inc> 0x constant ondecadê = 0xf ;ereço da EEPROM data memory (8 bits) constant ondecadê2 = 0x22 ;ereço da SRAM file memory (7 bits) ; Busca o ereço da posição da EEPROM a ser lida 0x0, 0x STATUS,RP BCF STATUS,RP0 ;Seleciona o banco 2 (0b) BCF 0x0, 0x ondecadê ;W = ondecadê 0xf EEADR ;SRAM(EEADR) = W 0x0d ; Faz a leitura da EEPROM(ondecadê) 0x0, 0x STATUS,RP ;* 0x0, 0x BCF STATUS,RP0 EECON,EEPGD ;Seleciona o banco (b) ;Configura para EEPROM* BCF 0x0c, 0x7 EECON,RD ;Inicia leitura 0x0c, 0x0 STATUS,RP ;* 0x0, 0x BCF STATUS,RP0 EEDATA,W ;Seleciona o banco 2 (0b) ;W = SRAM(EEDATA) BCF 0x0, 0x 0x0c, 0x0 ; Copia para a SRAM(ondecadê2) BCF STATUS,RP BCF 0x0, 0x ;Seleciona o banco 0 (00b) BCF 0x0, 0x BCF STATUS,RP0 ;* ondecadê2 ;SRAM(ondecadê2) = W 0x22 99 *Esta linha pode ser removida. 00 EEPROM Leitura direta Testando Escolha o valor para a posição 0Fh da EEPROM. EEPROM Leitura direta Testando Verificação dos registros. 2 Execute o programa. O GPR s 022h recebe o conteúdo da posição 07h da EEPROM. 0 02

18 8 EEPROM Leitura direta EEPROM Leitura indireta Três valores estão envolvidos: Endereço na EEPROM (xf). Endereço do GPR que conterá o valor do dado contido no ereço selecionado na EEPROM (ondecadê2,0x22). Dado contido na EEPROM (0x88). Na leitura indireta, o ereço da EEPROM a ser lido está localizado em um GPR. Esta opção tem a vantagem permitir que o ereço da EEPROM esteja condicionado a outras variáveis do sistema. Primeiramente, o GPR é gravado com um valor determinado pelas variáveis em questão. 0 0 EEPROM Leitura indireta ; Programa - EEPROM Leitura indireta ; Baseado no exemplo - do datasheet da picf877 #include <pf877.inc> 0x constant ondecadê = 0x20 ;Endereço do GPR (7 bits) que contém o ereço da EEPROM (8 bits) constant ondecadê2 = 0x2 ;Endereço do GPR (7 bits) que conterá o dado lido da EEPROM (8 bits) BCF 0x0, 0x ; Busca o ereço da posição da EEPROM a ser lida BCF 0x0, 0x BCF STATUS,RP BCF STATUS,RP0 ;Seleciona o banco 0 (00b) 0x20, 0x0 ondecadê,w ;W = SRAM(ondecadê) 0x0, 0x STATUS,RP ;Seleciona o banco 2 (0b) BCF STATUS,RP0 ;* BCF 0x0, 0x EEADR ;SRAM(EEADR) = W 0x0d ; Faz a leitura da EEPROM(SRAM(ondecadê)) 0x0, 0x STATUS,RP ;* 0x0, 0x STATUS,RP0 ;Seleciona o banco (b) BCF EECON,EEPGD ;Configura para EEPROM BCF 0x0c, 0x7 EECON,RD ;Inicia leitura 0x0c, 0x0 STATUS,RP ;* BCF STATUS,RP0 ;Seleciona o banco 2 (0b) 0x0, 0x EEDATA,W ;W = SRAM(EEDATA) BCF 0x0, 0x 0x0c, 0x0 ; Copia para a SRAM(0x2) BCF STATUS,RP ;Seleciona o banco 0 (00b) BCF 0x0, 0x BCF STATUS,RP0 ;* BCF 0x0, 0x ondecadê2 ;SRAM(ondecadê2) = W 0x2 0 *Esta linha pode serremovida. EEPROM Leitura indireta Testando Escolha um valor para o GPR 020h. 2 Escolha o valor para a posição da EEPROM dada pelo valor do GPR 020h. 0 EEPROM Leitura indireta Testando EEPROM Leitura indireta Execute o programa. O GPR 02h recebe o conteúdo da posição da EEPROM indicada pelo conteúdo do registrador 020h. Quatro valores estão envolvidos: Endereço do GPR que contém o valor do ereço na EEPROM a ser lido (ondecadê=0x20). Endereço na EEPROM (0xE). Endereço do GPR que conterá o valor do dado contido no ereço selecionado na EEPROM (ondecadê2=0x2). Dado contido na EEPROM (0xA9) 07 08

19 9 EEPROM Escrita direta EEDATA contém o byte que será escrito na EEPROM. EEADR contém o ereço do byte na EEPROM. Importante é prestar atenção no controle dos bancos. As quatro linhas abaixo não podem faltar. EEPROM Escrita direta As oito linhas abaixo não podem faltar. A sequência deve ser preservada. A gravação é realizada após a instrução 7. Para várias escritas, as instruções e 2 podem ser usadas no início da primeira escrita e a instrução 8 no final da última escrita. ereço, W ;W = ereço,ereço para gravação EEADR ;SRAM(EEADR) = W dado, W ;W = dado,dado para gravação EEDATA ;SRAM(EEDATA) = W. BCF EECON, EEPGD ;Configura para EEPROM 2. EECON, WREN ;Habilita escrita. 0x ;W = h - primeira parte do código de escrita. EECON2 ;SRAM(EECON2) = W. 0xaa ;W = AAh - segunda parte do código de escrita. EECON2 ;SRAM(EECON2) = W 7. EECON, WR ;Inicia escrita. Ao terminar,wr=0 8. BCF EECON, WREN ;Desabilita escrita 09 0 Define ereço Define dado Configura Escreve EEPROM Escrita direta ; Programa EEPROM Escrita direta ; Baseado no exemplo -2 do datasheet da picf877 #include <pf877.inc> 0x constant ondecadê = 0x0 ;ereço da EEPROM (8 bits) constant marqualrélio = 0xca ;dado para a EEPROM (8 bits) ;Configura os registradores para a escrita STATUS, RP BCF STATUS, RP0 ondecadê ;W = ondecadê EEADR ;SRAM(EEADR) = W EEDATA ;SRAM(EEDATA) = W STATUS, RP ;* STATUS, RP0 BCF EECON, EEPGD ;Configura para EEPROM EECON, WREN ;Habilita escrita ;Realiza a escrita 0x ;W = h - primeira parte do código de escrita EECON2 ;SRAM(EECON2) = W 0xaa ;W = AAh - segunda parte do código de escrita EECON2 ;SRAM(EECON2) = W EECON, WR ;Inicia escrita BCF EECON, WREN ;Desabilita escrita *Esta linha pode serremovida. 0x0, 0x BCF 0x0, 0x 0x0 0x0d 0xca 0x0c 0x0, 0x 0x0, 0x BCF 0x0c, 0x7 0x0c, 0x2 0x 0x0d 0xaa 0x0d 0x0c, 0x BCF 0x0c, 0x2 EEPROM Escrita indireta ; Programa EEPROM Escrita indireta ; Baseado no exemplo -2 do datasheet da picf877 #include <pf877.inc> 0x constant ondecadê = 0x20 ;Endereço do GPR (7 bits) que contém o dado para a EEPROM (8 bits) constant ondecadê2 = 0x2 ;Endereço do GPR (7 bits) que contém o ereço da EEPROM (8 bits) ;Configura os registradores para a escrita BCF 0x0, 0x BCF STATUS, RP BCF STATUS, RP0 BCF 0x0, 0x ondecadê2, W ;W = SRAM(ondecadê2), ereço para gravação 0x2, 0x0 Define ereço 0x0, 0x STATUS, RP BCF STATUS, RP0 ;* BCF 0x0, 0x EEADR ;SRAM(EEADR) = W 0x0d BCF 0x0, 0x BCF STATUS, RP BCF STATUS, RP0 ;* BCF 0x0, 0x ondecadê, W ;W = SRAM(ondecadê), dado para gravação 0x20, 0x0 Define dado 0x0, 0x STATUS, RP BCF STATUS, RP0 ;* BCF 0x0, 0x EEDATA ;SRAM(EEDATA) = W 0x0c 0x0, 0x STATUS, RP ;* Configura STATUS, RP0 0x0, 0x BCF EECON, EEPGD ;Configura para EEPROM BCF 0x0c, 0x7 EECON, WREN ;Habilita escrita 0x0c, 0x2 ;Realiza a escrita 0x 0x ;W = h - primeira parte do código de escrita 0x0d EECON2 ;SRAM(EECON2) = W 0xaa 0xaa ;W = AAh - segunda parte do código de escrita Escreve EECON2 ;SRAM(EECON2) = W 0x0d EECON, WR ;Inicia escrita 0x0c, 0x BCF EECON, WREN ;Desabilita escrita 2 *Esta linha pode ser removida. EEPROM Escrita indireta EEPROM Escrita indireta Escolha um valor para o dado a ser gravgado. Execute o programa. 2 Escolha um valor para ereço de gravação. A posição h recebe o valor 22h.

20 Proteção contra interrupção 20 EEPROM Escrita Proteção contra interrup. EEPROM Escrita Proteção contra interrup. O acréscimo de um comando qualquer (mesmo NOP) nos três pontos mostrados impede a gravação. É preciso usar uma proteção contra interrupção. Não interromper STATUS, RP STATUS, RP0 BCF EECON, EEPGD EECON, WREN 0x EECON2 0xAA EECON2 EECON, WR BCF EECON, WREN Proteção contra interrupção BCF XXXXXXXXX INTCON, GIE INTCON, GIE INTCON: Interrupt Control register GIE: Global Interrupt Enable bit Desabilita interrupção Área protegida Reabilita interrupção EEPROM Verificação do estado EEPROM Verificação de estado de leitura Como o tempo de R/W de uma palavra na EEPROM pode ser maior do que o ciclo de instrução, a execução do programa prossegue enquanto a palavra é gravada ou lida. Ao iniciar um R/W, deve-se verificar que a EEPROM não se encontra em um outro processo de R/W iniciado anteriormente. O processo de leitura (R) é muito mais rápido do que o de escrita (W). 7 ;Verifica se está em processo de leitura STATUS, RP STATUS, RP0 BTFSC EECON, RD ;Se o bit RD de EECON for 0, pular a próxima linha $- ;Retorna à linha anterior até que a leitura tenha terminado BTFSC EECON, RD : Verifica se RD=0 ou RD=. Se é 0, isto é, a EEPROM não está em processo de leitura, pula a instrução seguinte e prossegue com a execução. Se é, isto é, a EEPROM está em processo de leitura, executa a instrução seguinte. O programa fica paralisado até o término da leitura. Esta verificação somente é necessária se, anteriormente a um R/W, foi feita uma leitura na EEPROM. 8 EEPROM Verificação de estado de escrita ;Verifica se está em processo de leitura STATUS, RP STATUS, RP0 BTFSC EECON, WR ;Se o bit WR de EECON for 0, pular a próxima linha $- ;Retorna à linha anterior até que a escrita tenha terminado BTFSC EECON, WR : Verifica se WR=0 ou WR=. Se é 0, isto é, a EEPROM não está em processo de escrita, pula a instrução seguinte e prossegue com a execução. Se é, isto é, a EEPROM está em processo de escrita, executa a instrução seguinte. O programa fica paralisado até o término da escrita. Esta verificação somente é necessária se, anteriormente a um R/W, foi feita uma escrita na EEPROM. 9 7 EEPROM Proteções ; Programa 7 EEPROM Proteções ; Baseado no exemplo -2 do datasheet da picf877 #include <pf877.inc> 0x constant ondecadê = 0x20 ;Endereço do GPR (7 bits) que contém o dado para a EEPROM (8 bits) constant ondecadê2 = 0x2 ;Endereço do GPR (7 bits) que contém o ereço da EEPROM (8 bits) 0x0, 0x ;Verifica se está em processo de escrita 0x0, 0x STATUS, RP ; STATUS, RP0 ;Banco BTFSC 0x0c, 0x BTFSC EECON, WR ;Se o bit WR de EECON for 0, pular a próxima linha 0x07 $- ;Retorna à linha anterior até que a escrita tenha terminado BCF 0x0, 0x ;Escreve BCF 0x0, 0x BCF STATUS, RP ; 0x2, 0x0 BCF STATUS, RP0 ;Banco 0 0x0, 0x ondecadê2, W ;W = SRAM(ondecadê2), ereço para gravação STATUS, RP ;Banco 2 0x0d EEADR ;EEADR = W BCF 0x0, 0x BCF STATUS, RP ;Banco 0 0x20, 0x0 ondecadê, W ;W = SRAM(ondecadê), dado para gravação STATUS, RP ;Banco 2 0x0, 0x EEDATA ;EEDATA = W 0x0c STATUS, RP0 ;Banco 0x0, 0x BCF EECON, EEPGD ;Configura para EEPROM EECON, WREN ;Habilita escrita BCF 0x0c, 0x7 0x0c, 0x2 BCF INTCON, GIE ;Desabilita interrupções, caso use interrupção BCF 0x0b, 0x7 0x ;W = h - primeira parte do código de escrita EECON2 ;EECON2 = W 0x 0xaa ;W = AAh - segunda parte do código de escrita 0x0d EECON2 ;EECON2 = W 0xaa EECON, WR ;Inicia escrita 0x0d INTCON, GIE ;Habilita interrupções, caso use interrupção 0x0c, 0x BCF EECON, WREN ;Desabilita escrita 0x0b, 0x7 BCF 0x0c, 0x2 20

21 2 8 EEPROM Procedimentos múltiplos 8 EEPROM Procedimentos múltiplos American Standard Code for Information Interchange Vamos escrever a palavra Marco na SRAM. Depois, copiaremos esta palavra da SRAM para a EEPROM. Depois, copiaremos esta palavra da EEPROM para um outro local da SRAM. Caractere ASCII M Dh a h r 72h c h o Fh EEPROM Procedimentos múltiplos Parte : Declaração das constantes. 8 EEPROM Procedimentos múltiplos Parte 2: Gravação dos registros. ; Programa 7 EEPROM Procedimentos múltiplos #include <pf877.inc> 0x constant ondecadê = 0x ;ereço M origem constant ondecadê2 = 0x2 ;ereço a origem constant ondecadê = 0x ;ereço r origem constant ondecadê = 0x ;ereço c origem constant ondecadê = 0x ;ereço o origem constant ondecadê = 0x ;ereço M destino constant ondecadê7 = 0x7 ;ereço a destino constant ondecadê8 = 0x8 ;ereço r destino constant ondecadê9 = 0x9 ;ereço c destino constant ondecadêa = 0xa ;ereço o destino constant ondeeep = 0x0 ;ereço M na EEPROM constant ondeeep2 = 0x02 ;ereço a na EEPROM constant ondeeep = 0x0 ;ereço r na EEPROM constant ondeeep = 0x0 ;ereço c na EEPROM constant ondeeep = 0x0 ;ereço o na EEPROM constant letram = 0xd ;dado para M constant letraa = 0x ;dado para a constant letrar = 0x72 ;dado para r constant letrac = 0x ;dado para c constant letrao = 0xf ;dado para o ;escreve "Marco" na SRAM STATUS,RP BCF STATUS,RP0 letram ondecadê letraa ondecadê2 letrar ondecadê letrac ondecadê letrao ondecadê 0xD 2 0x 0x72 0x 0xF EEPROM Procedimentos múltiplos Parte : Cópia para a EEPROM. 8 EEPROM Procedimentos múltiplos Parte : Cópia para a EEPROM. M a r c o STATUS,RP0 BCF EECON,EEPGD EECON,WREN CALL EsperaEE ondeeep EEADR ondecadê,w CALL EscreveEE CALL EsperaEE ondeeep2 EEADR ondecadê2,w CALL EscreveEE CALL EsperaEE ondeeep EEADR ondecadê,w CALL EscreveEE CALL EsperaEE ondeeep EEADR ondecadê,w CALL EscreveEE CALL EsperaEE ondeeep EEADR ondecadê,w CALL EscreveEE BCF EECON, WREN EsperaEE BTFSC EECON,WR $- BCF STATUS,RP0 EscreveEE EEDATA STATUS,RP0 0x EECON2 0xaa EECON2 EECON,WR 2 2

22 22 8 EEPROM Procedimentos múltiplos Parte : Cópia para a SRAM. 8 EEPROM Procedimentos múltiplos Parte : Sub-rotinas EscreveSRAM BCF STATUS,RP0 EEADR STATUS,RP0 EECON,RD BCF STATUS,RP0 EEDATA,W M a r c o ondeeep CALL EscreveSRAM ondecadê ondeeep2 CALL EscreveSRAM ondecadê7 ondeeep CALL EscreveSRAM ondecadê8 ondeeep CALL EscreveSRAM ondecadê9 ondeeep CALL EscreveSRAM ondecadêa Fim 0xD 7 0x 8 0x72 9 0x A 0xF 27 EsperaEE BTFSC EECON,WR $- BCF STATUS,RP0 EscreveEE EEDATA STATUS,RP0 0x EECON2 0xaa EECON2 EECON,WR EscreveSRAM BCF STATUS,RP0 EEADR STATUS,RP0 EECON,RD BCF STATUS,RP0 EEDATA,W 28 0xD 2 0x 0x72 0x 0xF 0xD 7 0x 8 0x72 9 0x A 0xF 8 EEPROM Procedimentos múltiplos Parte : Finalização. Altere este programa para o seu nome EEPROM Procedimentos múltiplos 0x0, 0x BCF 0x0, 0x 0xd 0x 0x 0x2 0x72 0x 0x 0x 0xf 0x 0x0, 0x BCF 0x0c, 0x7 0x0c, 0x2 CALL 0x0d 0x0 0x0d 0x, 0x0 CALL 0x0 CALL 0x0d 0x02 0x0d 0x2, 0x0 CALL 0x0 CALL 0x0d 0x0 0x0d 0x, 0x0 CALL 0x0 CALL 0x0d 0x0 0x0d 0x, 0x0 CALL 0x0 CALL 0x0d 0x0 0x0d 0x, 0x0 CALL 0x0 BCF 0x0c, 0x2 0x0 CALL 0x09 0x 0x02 CALL 0x09 0x7 0x0 CALL 0x09 0x8 0x0 CALL 0x09 0x9 0x0 CALL 0x09 0xa 0x0 BTFSC 0x0c, 0x 0xd BCF 0x0, 0x 0x0c 0x0, 0x 0x 0x0d 0xaa 0x0d 0x0c, 0x BCF 0x0, 0x 0x0d 0x0, 0x 0x0c, 0x0 BCF 0x0, 0x 0x0c, 0x0 0 FLASH Leitura Um acesso à flash por meio de EECON significa que, nos ereços em questão, ela atua como uma data memory e não como uma program memory. O processo de R/W na flash data memory implica no uso do seu address bus, paralisando, assim, a execução do programa até a conclusão do processo. Por causa desta paralização, não seria necessário verificar o estado dos bits RD e WR. Porém, mesmo assim, usando o MPLAB, foi constatada a necessidade do uso do código abaixo. BTFSC EECON,RD $- 9 FLASH Leitura em posição baixa ; Universidade Federal de São João del-rei ; Prof. Marco Aurélio Seluque Fregonezi ; Programa 9 FLASH Leitura indireta em posição baixa #include <pf877.inc> 0x constant ondecadê = 0x0b ;ereço LOW da FLASH constant ondecadê2 = 0x22 ;GPR H constant ondecadê = 0x2 ;GPR L ; Busca o ereço da posição da FLASH a ser lida STATUS,RP BCF STATUS,RP0 ;* ondecadê EEADR ;SRAM(EEADR) = W CLRF EEADRH ;SRAM(EEADRH) = 0 ; Faz a leitura da FLASH(ondecadê) STATUS,RP0 ;Banco EECON,EEPGD ;Configura para FLASH EECON,RD ;Inicia leitura ; Copia para a SRAM(ondecadê2 e ondecadê) BTFSC EECON,RD $- BCF STATUS,RP0 EEDATH,W ondecadê2 ;Banco 2, 22h EEDATA,W ondecadê ;Banco 2, 2h *Esta linha pode ser removida x0, 0x BCF 0x0, 0x B 0x0b D 0x0d F CLRF 0x0f 000A 8 0x0, 0x 000B 78C 0x0c, 0x7 000C 0C 0x0c, 0x0 000D 80C BTFSC 0x0c, 0x0 000E 280D 0x00d 000F 28 BCF 0x0, 0x E 0x0e, 0x A2 0x C 0x0c, 0x A 0x2 Banco x7 2 0x8C 2

23 2 9 FLASH Leitura em posição baixa x0, 0x BCF 0x0, 0x B 0x0b D 0x0d F CLRF 0x0f 000A 8 0x0, 0x 000B 78C 0x0c, 0x7 000C 0C 0x0c, 0x0 000D 80C BTFSC 0x0c, 0x0 000E 280D 0x00d 000F 28 BCF 0x0, 0x E 0x0e, 0x A2 0x C 0x0c, 0x A 0x2 0 FLASH Leitura em posição alta ; Universidade Federal de São João del-rei ; Prof. Marco Aurélio Seluque Fregonezi ; Programa 0 FLASH Leitura indireta em posição alta #include <pf877.inc> 0x constant ondecadê = 0xb ;ereço H da FLASH constant ondecadê2 = 0x8 ;ereço L da FLASH constant ondecadê = 0x2 ;ereço H da SRAM constant ondecadê = 0x2 ;ereço L da SRAM ; Busca o ereço da posição da FLASH a ser lida STATUS,RP ondecadê EEADRH ;SRAM(EEADRH) = W ondecadê2 EEADR ;SRAM(EEADR) = W ; Faz a leitura da FLASH(ondecadê e ondecadê2) STATUS,RP0 EECON,EEPGD ;Configura para FLASH EECON,RD ;Inicia leitura ; Copia para a SRAM(ondecadê e ondecadê) BTFSC EECON,RD $- BCF STATUS,RP0 EEDATH,W ondecadê ;Banco 2, 2h EEDATA,W ondecadê ;Banco 2, 2h x0, 0x 000 0B 0xb F 0x0f x D 0x0d 000A 8 0x0, 0x 000B 78C 0x0c, 0x7 000C 0C 0x0c, 0x0 000D 80C BTFSC 0x0c, 0x0 000E 280D 0x00d 000F 28 BCF 0x0, 0x E 0x0e, 0x A 0x C 0x0c, 0x A 0x2 0 FLASH Leitura em posição alta FLASH Escrita Digitar B7 FFF B8 02 0x2 B9 FFF Banco 2 2 0x2 2 0x0 ; Programa #include <pf877.inc> 0x BCF 0x0, 0x x0, 0x ;Escreve BCF STATUS, RP x20 0x20 ;ereço L para gravação D 0x0d EEADR ;EEADR = W 0x00 ;ereço H para gravação x00 EEADRH ;EEADRH = W 000A 008F 0x0f 0x0 ;dado L para gravação 000B 00 0x0 EEDATA ;EEDATA = W 0x0 ;dado H para gravação 000C 008C 0x0c EEDATH ;EEDATA = W 000D 00 0x0 STATUS, RP0 ;Banco 000E 008E 0x0e EECON, EEPGD ;Configura para FLASH 000F 8 0x0, 0x EECON, WREN ;Habilita escrita C 0x0c, 0x7 BCF INTCON, GIE ;Desabilita interrupções, caso use interrupção 0x ;W = h - primeira parte do código de escrita 00 0C 0x0c, 0x2 EECON2 ;EECON2 = W 002 8B BCF 0x0b, 0x7 0xaa ;W = AAh - segunda parte do código de escrita EECON2 ;EECON2 = W x EECON, WR ;Inicia escrita D 0x0d BTFSC EECON, WR ;Se o bit WR de EECON for 0, pular a próxima linha $- ;Retorna à linha anterior até que a escrita tenha terminado 00 0AA 0xaa BCF INTCON, GIE EECON, WREN ;Habilita interrupções, caso use interrupção ;Desabilita escrita D 0x0d 007 8C 0x0c, 0x C BTFSC 0x0c, 0x x08 Último ereço 00A 78B 0x0b, 0x7 00B 0C BCF 0x0c, 0x2 FLASH Escrita Este programa de escrita não pode ser testado por meio do MPLAB porque a program memory do MPLAB SIM não exibe alterações no decorrer da execução do programa. O MPLAB SIM não exibe a flash data memory. Alterando o bit EEPGD para zero a gravação é realizada na EEPROM, o que demonstra que o programa está correto. 7 8

Sistemas Microcontrolados. Período Aula 4. 1 Saulo O. D. Luiz

Sistemas Microcontrolados. Período Aula 4. 1 Saulo O. D. Luiz Sistemas Microcontrolados Período 2009.2 Aula 4 1 Saulo O. D. Luiz Roteiro Introdução ao microcontrolador PIC 16F877 Arquitetura do PIC 16F877 Conjunto de instruções Registradores de configuração 2 Saulo

Leia mais

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

Arquitetura de Computadores. Prof. João Bosco Jr. Arquitetura de Computadores Prof. João Bosco Jr. Aula 4 (nivel ISA Arquitetura PIC) Características do Controlador 16F628A 18 Pinos Até 20 Mhz (5M instruções por segundo) PortA e PortB 10 Interrupções

Leia mais

Introdução aos Microcontroladores PIC

Introdução aos Microcontroladores PIC Introdução aos Microcontroladores PIC 1ª parte João M. P. Cardoso Universidade do Algarve Microcontroladores PIC Empresa: Microchip Technology Inc. Várias famílias PIC12XX, PIC16XX, PIC17XX, PIC18XX Linha

Leia mais

PIC. PeripheralInterface Controller. Prof. EngºespLuiz Antonio Vargas Pinto www.vargasp.com. Prof. Vargas

PIC. PeripheralInterface Controller. Prof. EngºespLuiz Antonio Vargas Pinto www.vargasp.com. Prof. Vargas PIC PeripheralInterface Controller Prof. EngºespLuiz Antonio Vargas Pinto www.vargasp.com Histórico Em 1965 a General Instruments criou a divisão de microeletrônica Nos anos 80 foi dividida e vendida a

Leia mais

1.1. Microprocessadores e microcontroladores Sistemas genéricos e sistemas dedicados. 2. Microcontrolador PIC:

1.1. Microprocessadores e microcontroladores Sistemas genéricos e sistemas dedicados. 2. Microcontrolador PIC: PLANO DE ENSINO Curso: Engenharia mecânica com habilitação em controle e automação Disciplina: Eletiva I Carga Horária Semanal: 04 Carga Horária Total 80 EMENTA Introdução à linguagem Assembly, microcomputador

Leia mais

Introdução ao PIC. Guilherme Luiz Moritz 1. 6 de novembro de DAELT - Universidade Tecnológica Federal do Paraná

Introdução ao PIC. Guilherme Luiz Moritz 1. 6 de novembro de DAELT - Universidade Tecnológica Federal do Paraná Guilherme Luiz Moritz 1 1 DAELT - Universidade Tecnológica Federal do Paraná 6 de novembro de 2013 Características do PIC Arquitetura Harvard RISC, 35 instruções 8 a 84 pinos Mais de 180 modelos Vários

Leia mais

Curso PIC 1 Desbravando o PIC. Eng. Diego Camilo Fernandes Labtools Mosaico Didactic Division

Curso PIC 1 Desbravando o PIC. Eng. Diego Camilo Fernandes Labtools Mosaico Didactic Division Curso PIC 1 Desbravando o PIC Eng. Diego Camilo Fernandes Labtools Mosaico Didactic Division O que fazemos... Desenvolvimento de projetos (hardware e software); Consultoria em engenharia eletrônica e

Leia mais

DOUGLAS DAL POZZO DIEGO VITTI

DOUGLAS DAL POZZO DIEGO VITTI DOUGLAS DAL POO DIEGO VITTI O que são MicroControladores Microcontralor é um componente cujo núcleo possui os mesmos blocos funcionais de um microprocessador. No entanto, sua aplicação é um pouco mais

Leia mais

Parte 9 PRÁTICAS DISPLAY DE 7 SEGMENTOS DISPLAY DE 7 SEGMENTOS DISPLAY DE 7 SEGMENTOS DISPLAY DE 7 SEGMENTOS DISPLAY DE 7 SEGMENTOS

Parte 9 PRÁTICAS DISPLAY DE 7 SEGMENTOS DISPLAY DE 7 SEGMENTOS DISPLAY DE 7 SEGMENTOS DISPLAY DE 7 SEGMENTOS DISPLAY DE 7 SEGMENTOS Parte 9 PRÁTICAS.... Exemplo ; Programa 67 - Display 7 segmentos Programa ; de iniciação PORTE,RE0 ; Habilita DPY BSF PORTE,RE ; Desabilita DPY BSF PORTE,RE ; Desabilita DPY Escolher um ou mais BSF PORTA,RA5

Leia mais

PIC16F628a. Pinagem do PIC16F628a:

PIC16F628a. Pinagem do PIC16F628a: PIC16F628a O PIC16F628a é um microcontrolador fabricado pela Microchip Technology (www.microchip.com), com as seguintes características: - composto de 18 pinos; - possui somente 35 instruções no seu microcódigo;

Leia mais

5. Conjunto de Instruções do MCU PIC

5. Conjunto de Instruções do MCU PIC 5. do MCU PIC Professor: Vlademir de Oliveira Disciplina: Microcontroladores e DSP 5.1 Arquitetura interna Ciclo de Busca e Execução da Instrução O clock externo é internamente dividido por 4, gerando

Leia mais

Parte 11 PROVAS ANTERIORES

Parte 11 PROVAS ANTERIORES Parte 11 PROVAS ANTERIORES 1. TESTES 2. RESPOSTAS DOS TESTES.. RESPOSTAS DAS. 6. RESPOSTAS DAS 1 2 1 TESTES 1 TESTES Teste 1 2012S1P1M TESTES A sigla PIC, da Microchip, significa: ( ) Program In-Chip (

Leia mais

SEMINÁRIO ASSEMBLY: Arquitetura PIC

SEMINÁRIO ASSEMBLY: Arquitetura PIC UNIVERSIDADE FEDERAL DE SANTA CATARINA CENTRO TECNOLÓGICO DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA Curso de Ciências da Computação SEMINÁRIO ASSEMBLY: Arquitetura PIC DOUGLAS DAL POZZO DIEGO VITTI Florianópolis

Leia mais

Acetatos de apoio às aulas teóricas

Acetatos de apoio às aulas teóricas Microprocessadores e Aplicações Acetatos de apoio às aulas teóricas Ana Cristina Lopes Dep. Engenharia Electrotécnica http://orion.ipt.pt anacris@ipt.pt Ana Cristina Lopes, 25 de Novembro de 2004 Microprocessadores

Leia mais

Programação Daniel Corteletti Aula 3 Parte III Página 1/7

Programação Daniel Corteletti Aula 3 Parte III Página 1/7 Programação Daniel Corteletti Aula 3 Parte III Página /7 LINGUAGEM DE PROGRAMAÇÃO - ASSEMLY - PARTE I Assembly - o que é "Assembly" significa montagem. "Assembler" significa montador. Montagem é o ato

Leia mais

Sistemas Microcontrolados

Sistemas Microcontrolados Sistemas Microcontrolados Aula 3: Microcontroladores PIC e Programação Assembly Marco Jose da Silva mdasilva@utfpr.edu.br Especificação de um uc Qual escolher? Capacidade de processamento 8 bits (16 bits

Leia mais

ARQUITETURA DE PROCESSAMENTO

ARQUITETURA DE PROCESSAMENTO ARQUITETURA DE PROCESSAMENTO Os subsistemas digitais codificadores, decodificadores, multiplexadores, demultiplexadores, registradores e contadores, possibilitam a criação de um sistema digital mais complexo

Leia mais

1. Microcontrolador PIC. 1.1 Introdução

1. Microcontrolador PIC. 1.1 Introdução João M P Cardoso Universidade do Algarve Faculdade de Ciências e Tecnologia Campus de Gambelas 8000-117 - Faro - Portugal E-mail: jmcardo@ualg.pt V0.1: 1996 V0.2: Outubro de 2003 1. Microcontrolador PIC

Leia mais

Microcontrolador PIC 16F877

Microcontrolador PIC 16F877 Microcontrolador PIC 16F877 Parte 2 Instruções de ADD, SUB e DECF Instruções Aritméticas (ADD) : ADDLW k Descrição: Soma uma constante k é somada com W Operação: w = w + k Limites: 0 a 255 Nro de Ciclos:

Leia mais

Microprocessadores I ELE Aula 7 Conjunto de Instruções do Microprocessador 8085 Desvios

Microprocessadores I ELE Aula 7 Conjunto de Instruções do Microprocessador 8085 Desvios Microprocessadores I ELE 1078 Aula 7 Conjunto de Instruções do Microprocessador 8085 Desvios Grupos de Instruções do 8085 As instruções no 8085 são distribuídas em 5 grupos: 1. Grupo de transferência da

Leia mais

Microcontroladores PIC

Microcontroladores PIC Microcontroladores PIC Prof. Adilson Gonzaga 1 Arquitetura de Microcomputadores Arquitetura von Neumann: Há apenas um barramento (duto) de dados e um de endereço. As Instruções e os dados ocupam o mesmo

Leia mais

Sequencial Supermáquina (TEMPORIZAÇÃO SIMPLES)

Sequencial Supermáquina (TEMPORIZAÇÃO SIMPLES) Sequencial Supermáquina (TEMPORIZAÇÃO SIMPLES) Roteiro Sequencial Supermáquina Materiais Pinos do PIC Fluxograma Temporização Circuito no protoboard Melhoramentos Sugestão de Atividades Sequencial Um sequencial

Leia mais

Data types. In C: char. short. int/long. double/long long AC 2017/2018. Pedro Serra / Sérgio Ferreira

Data types. In C: char. short. int/long. double/long long AC 2017/2018. Pedro Serra / Sérgio Ferreira x86 Data types In C: char short int/long double/long long 2 O stack O stack cresce em direção a endereços de memória menores Instruções fundamentais: push, pop 0xFF90 0xA331 0xFF8E 0xFF8C 0xFF8A 0x4712

Leia mais

Prof. Adilson Gonzaga

Prof. Adilson Gonzaga Microprocessadores são Máquinas de Estado Seqüenciais Síncronas que operam mediante a execução de uma seqüência de códigos binários armazenados em memória. Prof. Adilson Gonzaga 1 As ordens ou comandos

Leia mais

Placa McLab1 Upgrade PIC16F84A p/ PIC16F62x

Placa McLab1 Upgrade PIC16F84A p/ PIC16F62x Placa Upgrade PIC16F84A p/ PIC16F62x Sumário 1. UTILIZANDO OS PICS 16F62X...3 1.1. INTRODUÇÃO...3 2. ATUALIZAÇÃO DO HARDWARE...4 2.1. UPGRADE DA PLACA MCLAB1 PARA TRABALHAR COM PIC16F627 / PIC16F628...4

Leia mais

Guia o MPLAB IDE (v8.92)

Guia o MPLAB IDE (v8.92) Guia o MPLAB IDE (v8.92) Descrição Este documento é um guia rápido de utilização do ambiente de desenvolvimento da Microchip para os microcontroladores de oito bits da série 16F6xxx estudados nas disciplinas

Leia mais

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 04: ASPECTO BÁSICO DO PROJETO DE UMA CPU SIMPLES E LINGUAGEM DE MONTAGEM Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia

Leia mais

Microprocessadores I ELE Conjunto de Instruções do Microprocessador 8085 Aula 9 - PILHA E SUBROTINAS -

Microprocessadores I ELE Conjunto de Instruções do Microprocessador 8085 Aula 9 - PILHA E SUBROTINAS - Microprocessadores I ELE 1078 Conjunto de Instruções do Microprocessador 8085 Aula 9 - PILHA E SUBROTINAS - 9.1 - Grupos de Instruções As instruções no 8085 são distribuídas em 5 grupos: 1. Grupo de transferência

Leia mais

Plano de Trabalho Docente 2017 Ensino Técnico

Plano de Trabalho Docente 2017 Ensino Técnico Plano de Trabalho Docente 2017 Ensino Técnico Plano de Curso nº 95 aprovado pela portaria Cetec nº 38 de 30/10/2009 Etec Sylvio de Mattos Carvalho Código: 103 Município: Matão Eixo Tecnológico: Controle

Leia mais

Utilize o programa fonte em linguagem assembly abaixo para responder as questões seguintes.

Utilize o programa fonte em linguagem assembly abaixo para responder as questões seguintes. Prova de Sistemas Microprogramados 2017-01 Simulado Prova P2 NOME: Utilize o programa fonte em linguagem assembly abaixo para responder as questões seguintes. 01 #INCLUDE 02 CONFIG _BOREN_OFF

Leia mais

Aula 10 Microcontrolador Intel 8051 Parte 2

Aula 10 Microcontrolador Intel 8051 Parte 2 SEL 0415 Aula 10 Microcontrolador Intel 8051 Parte 2 SEL 0415 INTROD À ORGANIZAÇÃO DE COMPUTADORES Prof Dr Marcelo A C Vieira SEL 415 Mapeamento das memórias internas Memória de dados interna (RAM) n 8051

Leia mais

Curso de Microcontroladores PIC 16F84A

Curso de Microcontroladores PIC 16F84A Curso de Microcontroladores PIC 16F84A João Neto Caetano Jnetcaetano@hotmail.com Marciel Gonçalves Azevedo Marcielgazevedo@hotmail.com Célio Rodrigues Pinto Treinamentos em geral, suporte a alunos universitários

Leia mais

Aula 4 Conjunto de Instruções do Microprocessador 8085 Grupo Aritmético

Aula 4 Conjunto de Instruções do Microprocessador 8085 Grupo Aritmético Microprocessadores I Aula 4 Conjunto de Instruções do Microprocessador 8085 Grupo Aritmético 4.1 - Grupos de Instruções As instruções no 8085 são distribuídas em 5 grupos: 1. Grupo de transferência da

Leia mais

Microcontrolador PIC 16F877

Microcontrolador PIC 16F877 Microcontrolador PIC 16F877 Parte 1 Instruções de MOV, e PORT Microcontrolador PIC 16F877 Termos utilizados nas instruções: Campo f w ou W b k d Descrição registro entre 0 e 127 registro Work bit utilizado

Leia mais

Interrupção. Prof. Adilson Gonzaga

Interrupção. Prof. Adilson Gonzaga Interrupção Prof. Adilson Gonzaga Estrutura de Programação Assembly Programa Principal Chamada de Sub-rotina1 Programa Principal Chamada de Sub-rotina2 Sub-rotina1 Subrotina2 Programa Principal Chamada

Leia mais

Tópicos: 1 - Modos de endereçamento do Pilha e instruções de Pilha. 3 - Instruções que usam pilha: - instrução CALL - instrução RET

Tópicos: 1 - Modos de endereçamento do Pilha e instruções de Pilha. 3 - Instruções que usam pilha: - instrução CALL - instrução RET Tópicos: 1 - Modos de endereçamento do 8051 2 - Pilha e instruções de Pilha 3 - Instruções que usam pilha: - instrução CALL - instrução RET 4 - Interrupção 1 - Modos de Endereçamento do 8051 Os modos de

Leia mais

CONJUNTO DE INSTRUÇÕES

CONJUNTO DE INSTRUÇÕES CONJUNTO DE INSTRUÇÕES 1 CARACTERÍSTICAS DE INSTRUÇÕES DE MÁQUINA Quando um programador usa uma linguagem de alto-nível, como C, muito pouco da arquitetura da máquina é visível. O usuário que deseja programar

Leia mais

MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628A

MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628A MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628A Apresentação: Eng. Antonio Carlos Lemos Júnior acjunior@facthus.edu.br FACTHUS Uberaba 02/2008 Qual a diferença entre Microcontrolador e Microprocessador?

Leia mais

MICROCONTROLADORES PIC PRIMEIROS PASSOS

MICROCONTROLADORES PIC PRIMEIROS PASSOS MICROCONTROLADORES PIC PRIMEIROS PASSOS Os microcontroladores são chips inteligentes, que tem um processador, pinos de entradas/saídas e memória. Através da programação dos microcontroladores podemos controlar

Leia mais

CPU. CPU Unidade Central de Processamento. Função: leitura, escrita e processamento de dados

CPU. CPU Unidade Central de Processamento. Função: leitura, escrita e processamento de dados CPU CPU Unidade Central de Processamento Função: leitura, escrita e processamento de dados Constituída por: dispositivos que gerem a entrada (leitura) e saída (escrita) de dados; registos (memórias auxiliares)

Leia mais

MICROCONTROLADORES. PIC16F87x

MICROCONTROLADORES. PIC16F87x Universidade Católica de Goiás Departamento de Engenharia Curso de Engenharia Elétrica MICROCONTROLADORES PIC16F87x Prof. Eider Lúcio de Oliveira Prof. Éderson Lacerda Fideles Microcontrolador PIC16F87x

Leia mais

C:\seminario\guiao_aluno\trab9\trab9p2\trab9VoltUart.asm

C:\seminario\guiao_aluno\trab9\trab9p2\trab9VoltUart.asm Trabalho nº 9 PARTE_II Voltimetro digital Resumo: Voltimetro digital 0..5 Volts visualização através da USART do PIC Nome ficheiro: trab9voltuart.asm * Data: 1/Junho/2005 * Versão: 1.0 * Autores: José

Leia mais

Sistemas Microprocessados

Sistemas Microprocessados Sistemas Microprocessados satoutfpredubr http://pessoal.utfpr.edu.br/sato/ A satoutfpredubr Sobre o material Essas transparências foram baseadas no manual do ATmega8 da Atmel,

Leia mais

Prof. Adilson Gonzaga

Prof. Adilson Gonzaga Prof. Adilson Gonzaga Temporização da CPU Todos os Microcontroladores da família MCS-51 têm um oscilador interno. Para uso deste oscilador deve-se conectar um cristal entre os pinos Xtal1 e Xtal2 da CPU.

Leia mais

BANKSEL ADCON1 clrf ADCON1 bsf ADCON1,ADFM ; seta AD para VCC, GND e entradas analogicas, setando o bit ADFM configura como justificado a direita

BANKSEL ADCON1 clrf ADCON1 bsf ADCON1,ADFM ; seta AD para VCC, GND e entradas analogicas, setando o bit ADFM configura como justificado a direita include CONFIG 3F33 ;; configura automaticamente os bits do ocilador, watchdog timer, etc ;VARIÁVEIS CBLOCK 0x20 ; iniciando registradores que vão ser usados no programa ENDC tempo EQU 0x21

Leia mais

Microcontroladores. Prof. Nivaldo T. Schiefler Jr. M.Eng Homepage: www.joinville.ifsc.edu.br/~nivaldo Email: nivaldo@ifsc.edu.br

Microcontroladores. Prof. Nivaldo T. Schiefler Jr. M.Eng Homepage: www.joinville.ifsc.edu.br/~nivaldo Email: nivaldo@ifsc.edu.br Prof. Nivaldo T. Schiefler Jr. M.Eng Homepage: www.joinville.ifsc.edu.br/~nivaldo Email: nivaldo@ifsc.edu.br Conceito final será constituído de duas avaliações: 1ª Conceito avaliação teórica 2ª Conceito

Leia mais

Parte 2 PIC DEFINIÇÃO DEFINIÇÃO DEFINIÇÃO DEFINIÇÃO DEFINIÇÃO

Parte 2 PIC DEFINIÇÃO DEFINIÇÃO DEFINIÇÃO DEFINIÇÃO DEFINIÇÃO Parte PIC.. MCU S DE BITS. MCU S DE E DE BITS. PICF-/P... ULA MCU Ideal para sistemas embarcados (embedded systems). Possui uma unidade de microprocessamento, como um P. Possui periféricos específicos

Leia mais

Registros do 16F628A. Prof. Luiz Antonio Vargas Pinto Prof. Vargas

Registros do 16F628A. Prof. Luiz Antonio Vargas Pinto   Prof. Vargas Registros do 16F628A www.mikroe.com Prof. Luiz Antonio Vargas Pinto www.vargasp.com STATUS (03) STATUS (03) Após RESET Chave dos bancos STATUS (03) Bit 7: IRP - Seleção de banco de registradores 0 - seleciona

Leia mais

SEL0338 Tópicos Especiais em Sistemas Digitais

SEL0338 Tópicos Especiais em Sistemas Digitais 1 Formato das Instruções Instruções Orientadas a Byte: instrução f,d Designador do Registrador do arquivo (endereço Hexa ou Label) a ser usado pela instrução Exemplo: MOVF f,d ; move o conteúdo do registrador

Leia mais

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Aula 1. Cibele Lemos Freire Viginoski

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Aula 1. Cibele Lemos Freire Viginoski Aula 1 Cibele Lemos Freire Viginoski ARM (Advanced RISC Machine) Arquitetura de Processadores CISC Conjunto Complexo de Instruções Microinstruções RISC Conjunto de Instruções Reduzidas Instruções devem

Leia mais

OMPLAB é um programa para PC, que roda sobre a

OMPLAB é um programa para PC, que roda sobre a Ambiente de Programação MPLAB Roteiro N o 02 Fundação Universidade Federal de Rondônia, Núcleo de Ciência e Tecnologia, Departamento de Engenharia - DEE Curso de Bacharelado em Engenharia Elétrica - Disciplina

Leia mais

Estrutura Básica de um Computador

Estrutura Básica de um Computador SEL-0415 Introdução à Organização de Computadores Estrutura Básica de um Computador Aula 2 Prof. Dr. Marcelo Andrade da Costa Vieira INTRODUÇÃO n Organização Æ implementação do hardware, componentes, construção

Leia mais

Símbolos e abreviaturas utilizadas na descrição das instruções

Símbolos e abreviaturas utilizadas na descrição das instruções Símbolos e abreviaturas utilizadas na descrição das instruções acumulador registo A addr endereço de 16 bits data quantidade de 8 bits data 16 quantidade de 16 bits byte 2 segundo byte da instrução byte

Leia mais

UCP 8051 (parte 02) Professor Adão de Melo Neto

UCP 8051 (parte 02) Professor Adão de Melo Neto UCP 85 (parte 2) Professor Adão de Melo Neto Barramento de endereços UCP 85 É unidirecional (6 BITS), porque a informação flui apenas em uma direção, da CPU para a memória ou para os elementos de E/S.

Leia mais

Temporização Interrupções. Prof: Evandro L. L. Rodrigues. Rotinas de Atraso

Temporização Interrupções. Prof: Evandro L. L. Rodrigues. Rotinas de Atraso Temporização Interrupções Prof: Evandro L. L. Rodrigues Rotinas de Atraso Temporização da CPU Todos os Microcontroladores da família MCS-51 têm um oscilador interno. Para uso deste oscilador deve-se conectar

Leia mais

Conjunto de Instruções e Modelos de Arquiteturas

Conjunto de Instruções e Modelos de Arquiteturas Departamento de Engenharia Elétrica e de Computação EESC-USP SEL-0415 Introdução à Organização de Computadores Conjunto de Instruções e Modelos de Arquiteturas Aula 7 Prof. Marcelo Andrade da Costa Vieira

Leia mais

FORMATO DO PROGRAMA FONTE

FORMATO DO PROGRAMA FONTE FORMATO DO PROGRAMA FONTE As declarações do programa fonte são constituídas pelos seguintes campos: 1) Campo do Rótulo: o primeiro caractere deve ser alfabético

Leia mais

UNIVERSIDADE PAULISTA (UNIP) Curso de Engenharia Mecatrônica Disciplina: Microprocessadores e Microcontroladores (MM) LISTA III

UNIVERSIDADE PAULISTA (UNIP) Curso de Engenharia Mecatrônica Disciplina: Microprocessadores e Microcontroladores (MM) LISTA III UNIVERSIDADE PAULISTA (UNIP) Curso de Engenharia Mecatrônica Disciplina: Microprocessadores e Microcontroladores (MM) LISTA III Orientações: Esta lista de Exercícios deve ser entregue juntamente com a

Leia mais

Programação de Microprocessadores. Programação de Microprocessadores SEL-433 APLICAÇÕES DE MICROPROCESSADORES I

Programação de Microprocessadores. Programação de Microprocessadores SEL-433 APLICAÇÕES DE MICROPROCESSADORES I SEL-433 APLICAÇÕES DE MICROPROCESSADORES I Programação de Microprocessadores Microprocessadores são Máquinas de Estado Seqüenciais Síncronas que operam mediante a execução de uma seqüência de códigos binários

Leia mais

Microarquitetura IJVM. Datapath mic-1. Função dos Registradores. mic-1

Microarquitetura IJVM. Datapath mic-1. Função dos Registradores. mic-1 Microarquitetura IJVM mic-1 Datapath mic-1 Este é mais um exemplo de datapath para microarquitetura IJVM desenvolvida por Andew Tanenbaum Parte da CPU que contém a ALU, suas entradas e saídas 2 Função

Leia mais

Sistemas Digitais e Microcontrolados

Sistemas Digitais e Microcontrolados UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DEPARTAMENTO ACADÊMICO DE ELETROTÉCNICA CURSO DE ENGENHARIA INDUSTRIAL ELÉTRICA TECNOLOGIA EM AUTOMAÇÃO INDUSTRIAL Sistemas Digitais e Microcontrolados Contador/Temporizador

Leia mais

Luckas Andre Farias. Criptografia em hardware usando VHDL aplicado a VOIP

Luckas Andre Farias. Criptografia em hardware usando VHDL aplicado a VOIP Luckas Andre Farias Criptografia em hardware usando VHDL aplicado a VOIP Londrina 2012 Luckas Andre Farias Criptografia em hardware usando VHDL aplicado a VOIP Trabalho de Conclusão de curso apresentado

Leia mais

José Augusto Fabri. Assembly Básico

José Augusto Fabri. Assembly Básico José Augusto Fabri Assembly Básico Aritmética em Modo Hexadecimal Operações da adição e subtração em hexadecimal (comando H) Número negativos: Que número representa o FFFF? Aritmética em Modo Hexadecimal

Leia mais

Aula 14 Funcionamento de Processadores (Visão específica)

Aula 14 Funcionamento de Processadores (Visão específica) Aula 14 Funcionamento de Processadores (Visão específica) Com base nas aulas de Prof. José Delgado (autorizado) Anderson L. S. Moreira anderson.moreira@recife.ifpe.edu.br http://dase.ifpe.edu.br/~alsm

Leia mais

Temporização da CPU SEL-433 APLICAÇÕES DE MICROPROCESSADORES I. Ciclos de Máquina. Ciclos de Máquina. Temporização Interrupções Rotinas de Atraso

Temporização da CPU SEL-433 APLICAÇÕES DE MICROPROCESSADORES I. Ciclos de Máquina. Ciclos de Máquina. Temporização Interrupções Rotinas de Atraso SEL-433 APLICAÇÕES DE MICROPROCESSADORES I Temporização da CPU Todos os Microcontroladores da família MCS-51 têm um oscilador interno. Para uso deste oscilador deve-se conectar um cristal entre os pinos

Leia mais

29/03/2017. Temporização da CPU SEL-433 APLICAÇÕES DE MICROPROCESSADORES I. Ciclos de Máquina. Ciclos de Máquina

29/03/2017. Temporização da CPU SEL-433 APLICAÇÕES DE MICROPROCESSADORES I. Ciclos de Máquina. Ciclos de Máquina SEL-433 APLICAÇÕES DE MICROPROCESSADORES I Temporização da CPU Todos os Microcontroladores da família MCS-5 têm um oscilador interno. Para uso deste oscilador deve-se conectar um cristal entre os pinos

Leia mais

Professor: Dr. Rogério Rodrigues de Vargas.

Professor: Dr. Rogério Rodrigues de Vargas. UNIVERSIDADE ESTADUAL DE SANTA CRUZ DEPARTAMENTO DE CIÊNCIAS EXATAS E TECNOLÓGICAS Bacharelado em Ciência da Computação Software Básico Linguagem de Programação Assembly: Uma introdução no Linux/i386 (AT&T)

Leia mais

As 5 partes fundamentais. Linguagem de Programação Pinagem Características Elétricas Ambiente de Desenvolvimento Integrado - IDE

As 5 partes fundamentais. Linguagem de Programação Pinagem Características Elétricas Ambiente de Desenvolvimento Integrado - IDE SEL-433 APLICAÇÕES DE MICROPROCESSADORES I Como conhecer/estudar um Microprocessador/Microcontrolador As 5 partes fundamentais Programação de Microprocessadores Prof: Evandro L. L. Rodrigues Arquitetura

Leia mais

SEL-614 MICROPROCESSADORES E APLICAÇÕES. Adilson Gonzaga

SEL-614 MICROPROCESSADORES E APLICAÇÕES. Adilson Gonzaga SEL-614 MICROPROCESSADORES E APLICAÇÕES Prof: Adilson Gonzaga HISTÓRICO Microprocessador Circuito integrado ( chip ) capaz de executar instruções. 1971 Intel Corporation lançou no mercado o microprocessador

Leia mais

Especificação do Projeto de Processador RISC

Especificação do Projeto de Processador RISC UNIVERSIDADE FEDERAL DO VALE DO SÃO FRANCISCO Especificação do Projeto de Processador RISC mycpu Neste documento é apresentada a especificação do projeto da disciplina Organização e Arquitetura de Computadores

Leia mais

Microcontrolador 8051

Microcontrolador 8051 Microcontrolador 8051 Inicialmente fabricado pela INTEL, atualmente fabricado por várias empresas; Possui uma grande variedade de dispositivos, com diversas características, porém compatíveis em software;

Leia mais

Parte 1 IDE DEFINIÇÃO 1. DEFINIÇÃO 2. ASSEMBLY 3. INSTRUÇÕES PIC16F CONJUNTO DE INSTRUÇÕES 5. BITS DE CONFIGURAÇÃO 6. LITERATURA.

Parte 1 IDE DEFINIÇÃO 1. DEFINIÇÃO 2. ASSEMBLY 3. INSTRUÇÕES PIC16F CONJUNTO DE INSTRUÇÕES 5. BITS DE CONFIGURAÇÃO 6. LITERATURA. Parte IDE. DEFINIÇÃO.... 6. LITERATURA DEFINIÇÃO DEFINIÇÃO Componentes DEFINIÇÃO Editor de texto para entrada do código. Debugging do código. Simulador de dispositivo. Assembler (montador). Compilador.

Leia mais

01. Identifique o conjunto de portas de entrada A e o conjunto de portas B na figura abaixo.

01. Identifique o conjunto de portas de entrada A e o conjunto de portas B na figura abaixo. MICROPROCESSADORES 4 BIMESTRE LISTA 01 - REGISTRADORES E INTERRUPÇÃO - PARTE 1 (EXERCÍCIO INDIVIDUAL EM SALA DE AULA) NOME: 01. Identifique o conjunto de portas de entrada A e o conjunto de portas B na

Leia mais

Revisão da Linguagem C Prof. Evandro L. L. Rodrigues

Revisão da Linguagem C Prof. Evandro L. L. Rodrigues SEL0433 Aplicação de Microprocessadores I Revisão da Linguagem C Prof. Evandro L. L. Rodrigues Estrutura de um programa C Diretivas de pré processamento Declaração de variáveis globais Declaração de protótipos

Leia mais

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Aula 2. Cibele Lemos Freire Viginoski

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Aula 2. Cibele Lemos Freire Viginoski Aula 2 Cibele Lemos Freire Viginoski Registradores R0-R7: disponíveis para todas as instruções R8-R15: disponíveis para algumas instruções R13: SP (Stack Pointer) Pilha obrigatoriamente LIFO decrescente

Leia mais

Microcontrolador Assembly UTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Microcontrolador Assembly UTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk Assembly 8051 Num sistema microprocessado, geralmente, não existe um sistema operacional; O programa desenvolvido pelo programador deve cuidar tanto da lógica do programa, bem como da configuração e acesso

Leia mais

Interrupção Externa. Capítulo 1. Noções básicas sobre interrupções em Microcontroladores PIC

Interrupção Externa. Capítulo 1. Noções básicas sobre interrupções em Microcontroladores PIC Capítulo 1 Interrupção Externa Noções básicas sobre interrupções em Microcontroladores PIC Seção 1.1 Interrupções é obrigação em uma programação profissional. Quando um evento ocorrer, uma bandeira de

Leia mais

Guia o MPLAB IDE (v8.92)

Guia o MPLAB IDE (v8.92) Guia o MPLAB IDE (v8.92) Descrição Este documento é um guia rápido de utilização do ambiente de desenvolvimento da Microchip para os microcontroladores de oito bits da série 16F6xxx estudados nas disciplinas

Leia mais

MEC MINISTÉRIO DA EDUCAÇÃO SECRETARIA DE EDUCAÇÃO MÉDIA E TECNOLÓGICA CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DO ESPÍRITO SANTO

MEC MINISTÉRIO DA EDUCAÇÃO SECRETARIA DE EDUCAÇÃO MÉDIA E TECNOLÓGICA CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DO ESPÍRITO SANTO MEC MINISTÉRIO DA EDUCAÇÃO SECRETARIA DE EDUCAÇÃO MÉDIA E TECNOLÓGICA CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DO ESPÍRITO SANTO INTRODUÇÃO AO MICROCONTROLADOR PIC 16C84 Vitória ES 2002 Sumário O MICROCONTROLADOR

Leia mais

Microcontroladores: Programação em C

Microcontroladores: Programação em C Aula 06 Microcontroladores: Programação em C Prof. Tecgº Flávio Murilo 02/04/2013 1 Microcontroladores PIC São fabricados pela Microchip Technology. PIC significa Programmabile Intelligent Computer, ou

Leia mais

Assembly Sintaxe do Assembly. Instruções que afectam Flags. Aplicações de Microprocessadores 2006/2007

Assembly Sintaxe do Assembly. Instruções que afectam Flags. Aplicações de Microprocessadores 2006/2007 Assembly 8051 Aplicações de Microprocessadores 2006/2007 Sintaxe do Assembly [Label] Op-code [Operando] [Comentário] tabela: movc a,@a+dptr ; vai à tabela buscar o seu correspondente ASCII 2 2 Instruções

Leia mais

Histórico de desenvolvimento de computadores Prof. Luís Caldas Aula 02 Processador de uso geral

Histórico de desenvolvimento de computadores Prof. Luís Caldas Aula 02 Processador de uso geral Processador de uso geral 1. Introdução: Um sistema digital completo é constituído de uma unidade controle e o bloco operacional. Na figura a seguir alguns elementos externos necessários para completar

Leia mais

MODELAGEM DO PIC16F84 PARA PROJETO DE SISTEMAS EMBUTIDOS BASEADOS EM MICROCONTROLADOR

MODELAGEM DO PIC16F84 PARA PROJETO DE SISTEMAS EMBUTIDOS BASEADOS EM MICROCONTROLADOR UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA Gabriel Renaldo Laureano MODELAGEM DO PIC16F84 PARA PROJETO DE SISTEMAS EMBUTIDOS BASEADOS EM MICROCONTROLADOR Florianópolis,

Leia mais

Sistemas Digitais e Microcontrolados

Sistemas Digitais e Microcontrolados UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DEPARTAMENTO ACADÊMICO DE ELETROTÉCNICA CURSO DE ENGENHARIA INDUSTRIAL ELÉTRICA TECNOLOGIA EM AUTOMAÇÃO INDUSTRIAL Sistemas Digitais e Microcontrolados Contador/Temporizador

Leia mais

6. Estrutura do Programa em Assembly

6. Estrutura do Programa em Assembly 6. Estrutura do Programa em Assembly Professor: Vlademir de Oliveira Disciplina: Microcontroladores e DSP A estrutura se baseia em um formato sugerido pela própria Microchip para programação da família

Leia mais

Solução Lista de Exercícios Processadores

Solução Lista de Exercícios Processadores Solução Lista de Exercícios Processadores Questão 1 A ULA é o dispositivo da CPU que executa operações tais como : Adição Subtração Multiplicação Divisão Incremento Decremento Operação lógica AND Operação

Leia mais

Índice. Dia 05 de fevereiro de Apresentação Dia 12 de fevereiro de

Índice. Dia 05 de fevereiro de Apresentação Dia 12 de fevereiro de Índice Dia 05 de fevereiro de 2014....2 Apresentação... 2 Dia 12 de fevereiro de 2013....3 -Processador... 3 -Von Neumann... 3 -Harvard... 4 -Von Neumann x Harvard... 4 -Equipamentos que utilizam a arquitetura

Leia mais

Microprocessadores I. Aula 6 Arquitetura do Microprocessador Pinagem e Diagrama de Temporização

Microprocessadores I. Aula 6 Arquitetura do Microprocessador Pinagem e Diagrama de Temporização Microprocessadores I Aula 6 Arquitetura do Microprocessador 8085 - Pinagem e Diagrama de Temporização 1 O 8085 contém em seu CI circuitos para executar operações de cálculos e comunicação com periféricos.

Leia mais

1.1 Noções básicas sobre interrupções em Microcontroladores

1.1 Noções básicas sobre interrupções em Microcontroladores Capítulo 1 Interrupções 1.1 Noções básicas sobre interrupções em Microcontroladores PIC Interrupções é obrigação em uma programação profissional. Quando um evento ocorrer, uma bandeira de interrupção será

Leia mais

Organização e Projeto de Computadores

Organização e Projeto de Computadores Organização e Projeto de Computadores 1 Processamento no Computador Operações principais: leitura de instrução do programa leitura de dados processamento: execução da instrução escrita de resultado entrada/saída

Leia mais

7. PROGRAMANDO O MICROCONTROLADOR. Microcontroladores - Prof: Demantova

7. PROGRAMANDO O MICROCONTROLADOR. Microcontroladores - Prof: Demantova 7. PROGRAMANDO O MICROCONTROLADOR 1 7. PROGRAMANDO O MICROCONTROLADOR: Hardware parte física do circuito eletrônico CPU onde está localizado o microcontrolador. Dentro do microcontrolador existe um conjunto

Leia mais

NEANDERWIN. Algumas características do processador Neander são:

NEANDERWIN. Algumas características do processador Neander são: NEANDERWIN O NeanderWin é um simulador da máquina Neander, definida no livro do Raul F. Weber (UFRGS), Fundamentos de Arquitetura de Computadores, Ed. Sagra Luzzatto. A máquina original foi estendida aqui

Leia mais

PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR

PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR Introdução Instruções são representadas em linguagem de máquina (binário) E x i s t e m l i n g u a g e n

Leia mais

Conjunto de Instruções (ISA) I

Conjunto de Instruções (ISA) I Conjunto de Instruções (ISA) I José Costa Introdução à Arquitetura de Computadores Departamento de Engenharia Informática (DEI) Instituto Superior Técnico 2013-10-16 José Costa (DEI/IST) Conjunto de Instruções

Leia mais

UNIVERSIDADE FEDERAL DE SÃO JOÃO DEL-REI - UFSJ DEPARTAMENTO DE ENGENHARIA ELÉTRICA - DEPEL INTRODUÇÃO AOS MICROCONTROLADORES PIC

UNIVERSIDADE FEDERAL DE SÃO JOÃO DEL-REI - UFSJ DEPARTAMENTO DE ENGENHARIA ELÉTRICA - DEPEL INTRODUÇÃO AOS MICROCONTROLADORES PIC UNIVERSIDADE FEDERAL DE SÃO JOÃO DEL-REI - UFSJ DEPARTAMENTO DE ENGENHARIA ELÉTRICA - DEPEL INTRODUÇÃO AOS MICROCONTROLADORES PIC THIAGO VELOSO GOMES JOÃO MATHEUS DE OLIVEIRA ARANTES São João del-rei Março

Leia mais

ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO 6: PROCESSADORES. Prof. Juliana Santiago Teixeira

ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO 6: PROCESSADORES. Prof. Juliana Santiago Teixeira ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO 6: PROCESSADORES Prof. Juliana Santiago Teixeira julianasteixeira@hotmail.com INTRODUÇÃO INTRODUÇÃO O processador é o componente vital do sistema de computação, responsável

Leia mais

Professor: Vlademir de Oliveira Disciplina: Microcontroladores e DSP. Memórias de Dados e de Programa

Professor: Vlademir de Oliveira Disciplina: Microcontroladores e DSP. Memórias de Dados e de Programa 4. Memórias de Dados e de Programa Professor: Vlademir de Oliveira Disciplina: Microcontroladores e DSP 4.1 Memórias Semicondutoras Algumas definições Célula: Dispositivo de armazenamento de 1 bit. Palavra:

Leia mais

ULA. Combina uma variedade de operações lógicas e matemáticas dentro de uma única unidade.

ULA. Combina uma variedade de operações lógicas e matemáticas dentro de uma única unidade. PROCESSADOR ULA Combina uma variedade de operações lógicas e matemáticas dentro de uma única unidade. ULA Uma ULA típica pode realizar as operações artiméticas: - adição; - subtração; E lógicas: - comparação

Leia mais

CONJUNTO DE INSTRUÇÕES

CONJUNTO DE INSTRUÇÕES CONJUNTO DE INSTRUÇÕES Rn - Registrador R0 R7 do banco de registradores selecionado. direto - 8-bits de endereço da posição da RAM de dados Podem ser referentes tanto à RAM interna (0 7F) como ao espaço

Leia mais