A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

PICmicro Microcontrolador Sistemas Digitais II (Documento em versão Draft ainda em elaboração) José Carlos Fonseca 14 de Janeiro de 2003.

Apresentações semelhantes


Apresentação em tema: "PICmicro Microcontrolador Sistemas Digitais II (Documento em versão Draft ainda em elaboração) José Carlos Fonseca 14 de Janeiro de 2003."— Transcrição da apresentação:

1 PICmicro Microcontrolador Sistemas Digitais II (Documento em versão Draft ainda em elaboração) José Carlos Fonseca 14 de Janeiro de 2003

2 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca2 Resumo Introdução Vários tipos de arquitectura Os microcontroladores PIC PIC16F84 Diagrama de blocos Memória de programa Memória de dados Recursos auxiliares Pinagem Circuito de teste Programação Memória ALU e W PC e Stack Portos Timer

3 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca3 Introdução Estrutura de um computador Memória – São armazenados os programas e os dados CPU (Unidade de Processamento Central) – Interpreta as instruções do programa de execução e executa as operações correspondentes. Dentro do processador, a Unidade de Controle é a que interpreta ou traduz as instruções e um Processador que realiza as operações de cada instrução Periféricos – São dispositivos de Entrada e Saída mediante os quais se introduzem informações e se recolhem os dados. (teclado, rato, monitor, modem, etc.)

4 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca4 Introdução Microcontrolador É um computador dentro de um circuito integrado. Graças à evolução tecnológica é possível integrar num único chip todos os componentes de um computador. Devido às suas dimensões tem pouca memória, o seu processador só reconhece algumas instruções básicas e está limitado na ligação directa a periféricos específicos Encontram-se normalmente embebidos nos equipamentos, tais como teclados, ratos, televisões, máquinas de lavar, alarmes, jogos electrónicos, relógios, automóveis, robots, telemóveis, etc. Um microcontrolador embebido está dedicado a essa tarefa específica, enquanto que um computador de uso geral está preparado para um uso mais diferenciado Segundo a Dataquest, no ano 1999, foram usados 15 vezes mais microcontroladores do que processadores Segundo a Dataquest, no ano 2000, havia uma média de 240 microcontroladores num lar americano

5 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca5 Processador vs Microcontrolador Um microprocessador é um circuito muito complexo, em forma de circuito integrado, que pode conter entre alguns milhares (Z80) a 7 milhões de transístores (Pentium II). Estes transístores internos constituem os mais diversos circuitos lógicos: como contadores, registos, descodificadores, e muitos outros. Estes circuitos lógicos são dispostos de maneira complexa, dando ao microprocessador a capacidade de executar operações lógicas, aritméticas e de controlo. É um sistema aberto porque a sua configuração é variável de acordo com a aplicação a que se destina O microcontrolador integra num único componente os três elementos principais na arquitectura de um computador: CPU, memória e I/O

6 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca6 Processador vs Microcontrolador Os microcontroladores dispõem sempre de I/O digital ou analógica, o que não se verifica nos microprocessadores A memória interna só de leitura verifica-se apenas nos microcontroladores (pode ser ROM, já programada de fábrica, pode ser programável pelo utlizador ou pode mesmo não existir internamente) O barramento de dados dos microprocessadores tem um maior número de bits, uma vez que a sua área de aplicação é mais exigente ao nível do processamento da informação; Dos microcontroladores, por outro lado, espera-se uma aplicação mais diversificada e menos exigente nesse ponto; São ainda pouco utilizados microcontroladores de 16 bits

7 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca7 CISC vs RISC CISC (Complex Instruction Set Computers) RISC (Reduced Instruction Set Computers) O PIC16F84 é RISC Um CISC tende a ter um grande número de instruções, cada uma executando uma permutação diferente da mesma operação Um RISC tem um número mínimo de instruções que permite ao utilizador desenhar as suas próprias instruções, em vez de usar as que o desenhador do processador oferece

8 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca8 Arquitectura de Princeton (Von Neumann) Como resultado de um pedido do governo dos EUA, as Universidades de Princeton e de Harvard criaram arquitecturas de computadores para serem usadas no cálculo das tabelas de artilharia de Navel Em 1945 Von Neumann estabeleceu as bases para a construção de computadores. Desenhou uma máquina em que existia um bloco, unidade de controlo, capaz de descodificar um conjunto de instruções. Um processador que realiza as operações que as instruções implicam. Um grande armazém servia para guardar as instruções dos programas e dos dados. A unidade de interface de memória é responsável pela gestão do acesso à memória. Um último bloco permitia a transferência de informação aos periféricos exteriores

9 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca9 Arquitectura de Princeton (Von Neumann) A vantagem é a simplicidade de acesso à memória. Possui um barramento único para aceder à memória (endereços, dados e controlo) O grande inconveniente é o facto da memória do programa e dos dados ser comum, pois impede que se possa aceder ao programa e aos dados simultaneamente e muitas vezes o tamanho dos dados é diferente do tamanho das instruções

10 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca10 Arquitectura de Harvard Existem duas memórias diferentes e independentes, uma para as instruções e outra para os dados. Isto permite realizar acessos simultâneos a ambas as memórias. Esta arquitectura tende a executar as instruções em menos ciclos de relógio. As duas memórias podem também ter palavras de comprimento diferentes. No caso do PIC16F84 a memória de programa é Flash e possui 1024 posições de 14 bits cada. A memória de dados tem uma capacidade muito menor e um tamanho típico de 8 bits

11 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca11 Princeton Vs Harvard

12 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca12 Micro-coded vs Hard-coded A execução de cada instrução é, de facto, um conjunto de passos. Para executar esses passos podem ser usadas duas aproximações: Micro-coded – É um processador dentro do processador. Uma máquina de estados executa cada instrução como um endereço para uma subrotina de instruções que depois são executadas pela lógica do microCode Instruction Decode and Processor. O PIC é Micro-coded Hard-coded – Usa o padrão de bits da instrução para aceder a lógica combinatória específica da instrução executando-a Um processador micro-coded é mais simples que o hard-coded, podendo ser mais rapidamente implementado. Facilita as revisões e actualizações do código. No entanto é mais lento que o hard- coded, pois as instruções são executadas em maior número de ciclos de relógio

13 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca13 Fabricantes de microcontroladores Fabricantes Intel – Pai dos microcontroladores, tendo desenvolvido na década de 70, o Teve muito sucesso com o 8051 Motorola – Ocupou o primeiro lugar na década de 90 com o 68HC11 usando a tecnologia HCMOS Microchip – Fabricante dos PIC (Peripheral Interface Controller) passou do 20º lugar em 1990 para o 2º lugar em 2000

14 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca14 Características das famílias de PICS ProdutoFamíliaExec./instruçã o Nº de instruções PIC12CXXXGama anã (básica e média de 8 pinos) 1000ns/4Mhz; 10 Mhz 33/35 instruções PIC16C5XGama básica200ns / 20Mhz33 inst. de 12 bits PIC16CXXXGama média200ns / 20 Mhz35 inst. de 14 bits PIC17CXXXGama alta120 ns / 33Mhz58 inst. de 16 bits PIC18CXXXGama melhorada 10 MIPS / 40 Mhz 77 inst. de 16 bits

15 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca15 Gama de Microcontroladores Low-End - Subset reduzido de instruções; Sem tratamento de interrupções; Menor disponibilidade de memória RAM; Sem I/O avançado; Instrução de 12bits; Ex: PIC 12C5xx; Não deve ser utilizado para novas aplicações ou em aprendizagem. MidRange - Baseado na organização dos Low- End; Tratamento de interrupções; Timers; Quantidade razoável de memória RAM; Tipos avançados de I/O; Instrução de 14bits; Caracterizado como sendo de uso geral; Ex: PIC 16C7xx High-End - Instruções de 16 bits; Acesso a todos os registos directamente; Múltiplos vectores de interrupção; Família: PIC 17Cxx

16 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca16 Quanto à memória do Programa PIC 16 Cxxx - Memória EPROM PIC 16 CRxxx - Memória ROM PIC 16 Fxxx - Memória FLASH

17 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca17 Execução de instruções Pipeline de instruções em dois estágios: Fase de busca (fetch) – Procura-se o código binário da instrução na memória do programa Fase de execução – Interpreta-se o código, buscam-se os operandos e executa-se a operação que implica A fase de fetch faz uma eficiente utilização de memória já que c ada instrução é recuperada da memória em apenas um ciclo Cada uma das fases é realizada em 4 ciclos de relógio As instruções de salto demoram 8 ciclos de relógio, enquanto que as outras demoram apenas 4 ciclos de relógio O PIC utiliza a técnica de segmentação para executar as instruções, pelo que enquanto executa a fase de execução de uma instrução, executa a fase de busca da instrução seguinte. Desta forma consegue-se executar cada instrução em quatro ciclos de relógio. Por ex. o tempo que um PIC16F84 a 4Mhz demora a executar um programa com 100 linhas de código, das quais 30 são de salto = 4*(1/ )*70 + 8*(1/ )*30 = 130 us

18 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca18 Execução de instruções Relação entre o sinal de clock e o ciclo de instrução: Exemplo de execução de uma instrução: (Nota: PIC 16C73)

19 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca19 PIC16F84 PIC16F84, fabricado com a tecnologia CMOS Capaz de trabalhar até 10 Mhz. PIC16F84A Capaz de trabalhar até 20 Mhz Pequeno, só tem 18 pernas Barato. O PIC16F84A custa 7,37 + IVA Memória de programa de 1K palavras de 14 bits FLASH, em que em cada uma cabe uma instrução. Pode ser regravada cerca de vezes com toda a segurança Memória de dados RAM de 68 Bytes Memória de dados EEPROM de 64 Bytes, não volátil 8 níveis de stack (pilha) 35 instruções de 14 bits Tempo de execução das instruções normais: 4xTosc Tempo de execução das instruções de salto: 8xTosc 4 tipos de interrupções (External RB0/INT pin, TMR0 timer overflow, PORTB interrupt-on-change, Data EEPROM write complete) 13 linhas de entradas/saída digitais 1 timer 1 watch-dog Alimentação de 2V a 6 V Gravação de 12V a 14V Encapsulamento DIP de 18 pernas (SOIC)

20 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca20 Diagrama de blocos do PIC16F84A

21 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca21 CPU O PIC tem um processador tipo RISC com a arquitectura de Harvard O processador do PIC pode ser visto como sendo uma ALU, recebendo, processando e armazenando dados de e para os vários registos Tipos de aceder aos dados Endereçamento directo – Endereço de registo dentro do banco de registos de 128 bytes é especificado na instrução Endereçamento imediato – Se é para ser especificada uma constante a seguir à instrução Endereçamento indexado – Porque o endereço a ser acedido pode ser modificado aritmeticamente

22 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca22 CPU

23 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca23 CPU A ALU é responsável por todas as operações aritméticas e com bits, bem como o início dos pedidos de execução condicional Todas as operações aritméticas usam o registo w O resultado das operações pode ser armazenado no registo w ou no file register O Program Counter contém o endereço da instrução seguinte que irá ser executada. Se uma instrução tem um endereço directo os últimos 7 bits são usados como os endereços O registo FSR armazena o endereço da memória, no endereçamento indirecto O registo INDF (que na realidade não existe) é o registo que é apontado pelo FSR

24 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca24 ALU A ALU (Arithmetic Logic Unit) é a componente mais complexa do PIC por conter todos os circuitos destinados a desenvolver as funções de cálculo e manipulação de dados durante a execução de um programa Executa as operações aritméticas, de bits e de deslocamento de um ou dois bytes A ALU pode ser vista como um conjunto de operações que são executadas em paralelo com um único multiplexer O registo STATUS armazena os resultados das operações As operações com bits são executadas executando ANDs para colocar a 0 ou ORs para colocar a 1

25 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca25 ALU OperaçãoOperação equivalente MoverAND com 0x0FF Adição SubtracçãoAdição com um Negativo NegaçãoXOR com 0x0FF (inversão bit a bit) e Incremento IncrementoAdição a 1 DecrementoSubtracção por um/Adição com 0x0FF AND OR XOR ComplementoXOR com 0x0FF Shift LeftAdicionar o valor a si próprio com Carry Shift Right

26 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca26 Registo Status Flags: Zero (Z) – Fica a 1 quando o resultado é 0 Carry (C) – Fica a 1 quando o resultado da operação é maior do que 255 Digit Carry (DC) – Fica a 1 quando o nibble menos significativo é maior do que 15 após uma operação aritmética (adição ou subtracção)

27 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca27 Organização da memória A memória de dados (register file) está dividida em dois grupos. Registos especiais (Special Function Registers) – Ocupam as 11 primeiras posições, desde 00 até 0B. São os registos que controlam o funcionamento do PIC Registos de utilização geral (General Purpose Registers) – Ocupam as posições seguintes, desde 08 até 4F Partes da memória está dividida em Bancos, incluindo registos especiais e registos de utilização geral. Para a utilização dos bancos é necessário configurar os bits RP0 e RP1 do registo STATUS

28 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca28 Endereçamento de Bancos Cada um dos 2 bancos tem 128 registos para acesso directo No Banco 0 pode-se aceder aos portos A e B (PORTA de 5 bits e PORTB de 8 bits) No Banco 1 podem-se configurar os portos (TRISA e TRISB) File addressBANCO 0BANCO 1File address 0INDF 80 1TMR0OPTION81 2PCL 82 3STATUS 83 4FSR 84 5PORT ATRIS A85 6PORT BTRIS B EEDATAEECON188 9EEADREECON289 0APCLATH 8A 0BINTCON 8B 0C68 registosMapeado8C.de utilização(acesso)..geralBanco 0..(SRAM). 4F CF 50 D F FF

29 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca29 Program Counter O Program Counter (PC) é um registo especial que serve para armazenar o endereço da próxima instrução a ser executada Tem a dimensão de 13 bits. PCL, para os bits menos significativos e PCH (não acessível) para os mais significativos Os 8 bits menos significativos são escritos no registo PCL e os restantes no registo PCLATH Nas instruções de salto (GOTO e CALL) 11 bits são usados para armazenar o endereço (até 2048 instruções)

30 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca30 Stack O Stack é uma estrutura (Last In First Out) e serve para armazenar o valor do Program Counter quando é chamada uma subrotina de forma a saber o local de retorno da mesma O PIC16F84 possui 8 níveis de Stack, pelo que consegue armazenar no máximo 8 chamadas sucessivas a subrotinas O Stack só armazena o Program Counter

31 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca31 Memória de programa ROM com máscara – A aplicação é gravada na ROM logo após o fabrico e antes de ser entregue ao cliente. A criação da máscara é muito dispendios, pelo que só compensa para grandes quantidades OTP (One-Time Programable) – A aplicação só pode ser gravada uma vez pelo utilizador EPROM – Pode gravar-se várias vezes, apagando com raios ultravioletas EEPROM – Pode gravar-se várias vezes, apagando electricamente FLASH – similares às EEPROM, mas mais rápidas e toleram mais ciclos de escrita

32 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca32 Memória de dados RAM – memória de leitura e escrita muito rápida e volátil EEPROM – memória de leitura e escrita lenta, mas não volátil

33 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca33 Recursos auxiliares Temporizadores Watch-dog Protecção de falha de alimentação (Brown out) Estado de repouso e baixo consumo (Sleep mode) Conversor A/D Conversor D/A Comparador analógico Modulador por largura de impulsos (PWM) Portas de entradas e saídas digitais Portas de comunicação Interrupções In-circuit serial programming

34 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca34 Recursos auxiliares - Temporizadores São usados para controlar períodos de tempo (temporizadores) e para ter em conta os acontecimentos exteriores (contadores) Para medirem o tempo é guardado num registo o valor adequado que irá ser incrementado ou decrementado ao ritmo dos impulsos de relógio até que haja carry ou chegue a 0 para ser produzido um aviso

35 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca35 O Timer O registo TMR0 é um contador, ou seja é um registo particular, no qual o seu conteúdo é incrementado com uma cadência regular e programada directamente pelo hardware do PIC. Na prática, a diferença de outro registro, é que o TMR0 não mantém inalterado o seu valor, incrementando-o continuamente

36 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca36 Recursos auxiliares – Watch-dog Permite fazer reset automático ao PIC quando este bloqueia Quando se pretende usar esta facilidade o programa tem de iniciar o Watch-dog antes deste provocar o reset

37 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca37 Recursos auxiliares – Brown-out É um circuito que coloca o PIC em reset quando a tensão de alimentação desce de um determinado nível Coloca novamente o PIC em funcionamento assim que a tensão de alimentação seja aceitável

38 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca38 Recursos auxiliares – Sleep mode Para poupar energia enquanto espera por algum acontecimento exterior o PIC pode ficar adormecido (usando a instrução SLEEP) Após o acontecimento o PIC acorda e continua a sua execução a partir do ponto em que tinha ficado

39 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca39 Recursos auxiliares – Conversores A/D e D/A Nos microcontroladores que têm estas possibilidades podem converter sinais analógicos em digitais e vice-versa

40 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca40 Recursos auxiliares – Comparador analógico Nos microcontroladores que têm esta possibilidade possuem um OP- AMP (Amplificador Operacional) interno que permite comparar uma tensão externa com uma tensão de referência indicando se é superior ou inferior

41 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca41 Recursos auxiliares – PWM Nos microcontroladores que têm esta possibilidade permitem a saída de impulsos de largura variável que permitem, por exemplo controlar motores

42 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca42 Recursos auxiliares – Portas de I/O Todos os microcontroladores possuem alguns pinos como linhas de entrada e saída digitais de dados Normalmente estas linhas estão agrupadas de oito em oito formando portas Estas linhas digitais podem ser configuradas como sendo de entrada ou como sendo de saída colocando 1 ou 0 no bit correspondente ao registo destinado à sua configuração

43 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca43 Recursos auxiliares – Portas de I/O O PIC16F84 dispõe de um total de 13 linhas de I/O organizadas em dois portos denominadas de PORTO A e PORTO B. O PORTO A dispõe de 5 linhas configuráveis tanto em entrada como em saída identificadas pelas siglas RA0, RA1, RA2, RA3 e RA4. O PORTO B dispõe de 8 linhas também configuráveis seja em entrada ou em saída identificadas pelas siglas RB0, RB1, RB2, RB3, RB4, RB5, RB6 e RB7. Para o controle da linha de I/O do programa, o PIC dispõe de dois registros internos que controlam os portos e são chamados de TRISA e PORTA para a porta A e TRISB e PORTB para a porta B. Todos os bits contidos nos registros mencionados correspondem univocamente a uma linha de I/O. Por exemplo o bit 0 do registro PORTA e do registo TRIS A correspondem à linha RA0, o bit 1 a linha RA1 e assim por diante. Se o bit 0 do registro TRISA for colocado em zero, a linha RA0 estará configurada como linha de saída, por isso o valor a que ira o bit 0 do registro PORTA determinará o estado lógico de tal linha (0 = 0 volts, 1 = 5 volts).

44 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca44 Recursos auxiliares – Portas de comunicação De forma a dotar os microcontroladores com a possibilidade de comunicarem com outros dispositivos externos, barramentos de microprocessadores, redes, etc. alguns modelos têm recursos que se permitem executar directamente esta tarefa: UART, adaptador de comunicação série assíncrona USART, adaptador de comunicação série síncrona e assíncrona Porta paralela escrava, para poder ligar aos barramentos de outros microprocessadores USB (Universal Serial Bus), que é o moderno barramento série dos PC I2C, que es un interface série de dois fios desenvolvido pela Philips CAN (Controller Area Network), para permitir a adaptação a redes CAN desenvolvidas pela Bosch e Intel para a cablagem de dispositivos em automóveis

45 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca45 Recursos auxiliares - Interrupções O PIC16F84 tem a possibilidade de contar com um sistema de interrupções. Este sistema consiste num mecanismo através do qual um acontecimento interno ou externo, assíncrono relativamente ao programa, pode interromper a sua execução produzindo automaticamente um salto para arotina de atendimento à interrupção de maneira a poder atender de imediato o acontecimento e retomar de seguida a execução do programa interrompido. Existem 4 fontes de interrupções: External RB0/INT pin TMR0 timer overflow PORTB interrupt-on-change Data EEPROM write complete

46 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca46 Recursos auxiliares - Interrupções O INTCON REGISTER (ADDRESS 0Bh, 8Bh) é o registo que contém os vários bits que inibem e desinibem as respectivas fontes de interrupção: bit 7 GIE: Global Interrupt Enable bit bit 6 EEIE: EE Write Complete Interrupt Enable bit bit 5 T0IE: TMR0 Overflow Interrupt Enable bit bit 4 INTE: RB0/INT External Interrupt Enable bit bit 3 RBIE: RB Port Change Interrupt Enable bit bit 2 T0IF: TMR0 Overflow Interrupt Flag bit bit 1 INTF: RB0/INT External Interrupt Flag bit bit 0 RBIF: RB Port Change Interrupt Flag bit

47 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca47 Recursos auxiliares - Interrupções

48 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca48 Recursos auxiliares - ICSP O PIC16F84 pode ser programado via comunicação série, mesmo após ter sido colocado no circuito final. Para tal bastam dois sinais para o relógio e para os dados e mais três sinais para a alimentação, a terra e a tensão de programação

49 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca49 Pinagem Azul (linhas de I/O) Vermelho e Preto (alimentação) Verde (funcionamento do PIC) PIC16F84 (PDIP, SOIC)

50 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca50 Pinagem 1 RA2 É uma linha de I/O programável em entrada ou saída da unidade. Corresponde ao BIT 2 da PORTA A. 2 RA3 É uma linha de I/O programável em entrada ou saída da unidade. Corresponde ao BIT 3 da PORTA A. 3 RA4 / RTCC É um pino multi função que pode ser programado como uma linha normal de I/O ou como linha de clock para entrada em sentido ao contador RTCC. Se programada como linha de I/O corresponde ao BIT 4 da PORTA A ao contrário de outra linha de I/O, quando esta linha funciona como saída, trabalha em colector aberto.

51 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca51 Pinagem 4 MCLR / VPP Em condição normal de funcionamento desenvolve a função de Master CLeaR ou seja Reset estará activo a nível 0. Pode ser conectado a um circuito de reset externo ou simplesmente conectando-o ao positivo da alimentação. Quando o PIC for colocado em Program Mode será utilizado como entrada para a tensão de programação Vpp. 5 VSS É o pino que vai conectado ao negativo da tensão de alimentação.

52 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca52 Pinagem 6 RB0 É uma linha de I/O programável em entrada ou em saída. Corresponde ao BIT 0 da PORTA B e pode ser programada para gerar interrupção. 7 RB1 É uma linha de I/O programável em entrada ou em saída. Corresponde ao BIT 1 da PORTA B. 8 RB2 É uma linha de I/O programável em entrada ou em saída. Corresponde ao BIT 2 da PORTA B. 9 RB3 É uma linha de I/O programável em entrada ou em saída. Corresponde ao BIT 3 da PORTA B.

53 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca53 Pinagem 10 RB4 É uma linha de I/O programável em entrada ou em saída. Corresponde ao BIT 4 da PORTA B e pode ser programada para gerar interrupção na alteração do valor. 11 RB5 É uma linha de I/O programável em entrada ou em saída. Corresponde ao BIT 5 da PORTA B e pode ser programada para gerar interrupção na alteração do valor. 12 RB6 É uma linha de I/O programável em entrada ou saída. Corresponde ao BIT 6 da PORTA B e pode ser programada para gerar interrupção na alteração do valor. Clock da porta série. 13 RB7 É uma linha de I/O programável em entrada ou saída. Corresponde ao BIT 7 da PORTA B e pode ser programada para gerar interrupção na alteração do valor. Dados da porta série.

54 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca54 Pinagem 14 VDD É o terminal positivo de alimentação do PIC. em todas as três versões disponíveis do PIC16F84 (comercial, industrial e automotiva) a tensão pode assumir um valor que vai de um mínimo de 2.0 volts a um máximo de 6.0 volts. 15 OSC2 / CLKOUT É um pino de ligação no caso de se utilizar um cristal de quartzo para gerar o clock. E como saída de clock caso for aplicado um oscilador RC externo. 16 OSC1 / CLKIN É um pino de ligação para o caso de se utilizar um cristal de quartzo ou um circuito RC para gerar o clock. E também como entrada caso utilizemos um oscilador externo.

55 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca55 Pinagem 17 RA0 É uma linha de I/O programável em entrada ou saída. Corresponde ao BIT 0 da PORTA A. 18 RA1 É uma linha de I/O programável em entrada ou saída. Corresponde ao BIT 1 da PORTA A

56 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca56 Oscilador Frequência RC (Resistor/Capacitor) HS (High Speed Crystal/Resonator)4 MHz – 20 MHz XT (Crystal/Resonator)200 KHz – 4 MHz LP (Low Power Crystal)0 – 200 KHz

57 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca57 Oscilador ModoFreq.Osc1/C1Osc2/C2 XT 455 kHz pF 2.0 MHz pF 4.0 MHz pF HS 8.0 MHz pF 10.0 MHz pF LP 32 kHz pF 200 kHz pF XT 100 kHz pF 2 MHz pF 4 MHz pF HS 4 MHz pF 20 MHz pF RC 5 k Rext 100 k Cext > 20pF

58 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca58 Programação e utilização Na primeira figura está esquematizado o fluxograma de operações e arquivos que deverão ser realizados para programar um código assembler para um PIC Na segunda figura é apresentado um esquema de montagem para 4 LEDs pisca-pisca, usando um oscilador RC

59 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca59 Special Function Register File

60 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca60 STATUS – Registo de estado bit 7-6 Unimplemented: Maintain as 0 bit 5 RP0: Register Bank Select bits (used for direct addressing) 01 = Bank 1 (80h - FFh) 00 = Bank 0 (00h - 7Fh) bit 4 TO: Time-out bit 1 = After power-up, CLRWDT instruction, or SLEEP instruction 0 = A WDT time-out occurred bit 3 PD: Power-down bit 1 = After power-up or by the CLRWDT instruction 0 = By execution of the SLEEP instruction bit 2 Z: Zero bit 1 = The result of an arithmetic or logic operation is zero 0 = The result of an arithmetic or logic operation is not zero bit 1 DC: Digit carry/borrow bit (ADDWF, ADDLW,SUBLW,SUBWF instructions) (for borrow, the polarity is reversed) 1 = A carry-out from the 4th low order bit of the result occurred 0 = No carry-out from the 4th low order bit of the result bit 0 C: Carry/borrow bit (ADDWF, ADDLW,SUBLW,SUBWF instructions) (for borrow, the polarity is reversed) 1 = A carry-out from the Most Significant bit of the result occurred 0 = No carry-out from the Most Significant bit of the result occurred Note: A subtraction is executed by adding the twos complement of the second operand. For rotate (RRF, RLF) instructions, this bit is loaded with either the high or low order bit of the source register.

61 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca61 OPTION - Registo de opções bit 7 RBPU: PORTB Pull-up Enable bit 1 = PORTB pull-ups are disabled 0 = PORTB pull-ups are enabled by individual port latch values bit 6 INTEDG: Interrupt Edge Select bit 1 = Interrupt on rising edge of RB0/INT pin 0 = Interrupt on falling edge of RB0/INT pin bit 5 T0CS: TMR0 Clock Source Select bit 1 = Transition on RA4/T0CKI pin 0 = Internal instruction cycle clock (CLKOUT) bit 4 T0SE: TMR0 Source Edge Select bit 1 = Increment on high-to-low transition on RA4/T0CKI pin 0 = Increment on low-to-high transition on RA4/T0CKI pin bit 3 PSA: Prescaler Assignment bit 1 = Prescaler is assigned to the WDT 0 = Prescaler is assigned to the Timer0 module bit 2-0 PS2:PS0: Prescaler Rate Select bits Bit ValueTMR0 RateWDT Rate : 2 1 : 41 : 81 : 16 1 : 321 : 641 : : 2561 : 11 : 2 1 : 41 : 81 : 16 1 : 321 : 641 : 128

62 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca62 INTCON - Registo de Interrupcões bit 7 GIE: Global Interrupt Enable bit 1 = Enables all unmasked interrupts 0 = Disables all interrupts bit 6 EEIE: EE Write Complete Interrupt Enable bit 1 = Enables the EE Write Complete interrupts 0 = Disables the EE Write Complete interrupt bit 5 T0IE: TMR0 Overflow Interrupt Enable bit 1 = Enables the TMR0 interrupt 0 = Disables the TMR0 interrupt bit 4 INTE: RB0/INT External Interrupt Enable bit 1 = Enables the RB0/INT external interrupt 0 = Disables the RB0/INT external interrupt bit 3 RBIE: RB Port Change Interrupt Enable bit 1 = Enables the RB port change interrupt 0 = Disables the RB port change interrupt bit 2 T0IF: TMR0 Overflow Interrupt Flag bit 1 = TMR0 register has overflowed (must be cleared in software) 0 = TMR0 register did not overflow bit 1 INTF: RB0/INT External Interrupt Flag bit 1 = The RB0/INT external interrupt occurred (must be cleared in software) 0 = The RB0/INT external interrupt did not occur bit 0 RBIF: RB Port Change Interrupt Flag bit 1 = At least one of the RB7:RB4 pins changed state (must be cleared in software) 0 = None of the RB7:RB4 pins have changed state

63 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca63 EECON1 – Registo da EEPROM bit 7-5 Unimplemented: Read as '0' bit 4 EEIF: EEPROM Write Operation Interrupt Flag bit 1 = The write operation completed (must be cleared in software) 0 = The write operation is not complete or has not been started bit 3 WRERR: EEPROM Error Flag bit 1 = A write operation is prematurely terminated (any MCLR Reset or any WDT Reset during normal operation) 0 = The write operation completed bit 2 WREN: EEPROM Write Enable bit 1 = Allows write cycles 0 = Inhibits write to the EEPROM bit 1 WR: Write Control bit 1 = Initiates a write cycle. The bit is cleared by hardware once write is complete. The WR bit can only be set (not cleared) in software. 0 = Write cycle to the EEPROM is complete bit 0 RD: Read Control bit 1 = Initiates an EEPROM read RD is cleared in hardware. The RD bit can only be set (not cleared) in software. 0 = Does not initiate an EEPROM read

64 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca64 Palavra de configuração do PIC

65 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca65 Instruções SintaxeDescrição MicrochipOperação equivalente ADDLW kAdd Literal and WW = W + k ADDWF f,dAdd W and fd = W + f (onde d pode ser W ou f) ANDLW kAND Literal with WW = W AND k ANDWF f,dAND W with fd = W AND f (onde d pode ser W ou f) BCF f,bBit Clear ff(b) = 0 BSF f,bBit Set ff(b) = 1 BTFSC f,bBit Test f, Skip if Clearf(b) = 0 ? Se é, salta uma instrução BTFSS f,bBit Test f, skip if Setf(b) = 1 ? Se é, salta uma instrução CALL kSubroutine CallChamada a uma subrotina no endereço k CLRF fClear ff = 0 CLRWClear W RegisterW = 0 CLRWDTClear Watchdog TimerWatchdog timer = 0 COMF f,dComplement fd = not f (onde d pode ser W ou f) DECF f,dDecrement fd = f -1 (onde d pode ser W ou f) DECFSZ f,dDecrement f, Skip if 0d = f -1 (onde d pode ser W ou f) se d = 0 salta

66 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca66 Instruções SintaxeDescrição MicrochipOperação equivalente GOTO kGo to addresssalta para o endereço k INCF f,dIncrement fd = f +1 (onde d pode ser W ou f) INCFSZ f,dIncrement f, Skip if 0d = f +1 (onde d pode ser W ou f) se d = 0 salta IORLW kInclusive OR Literal with WW = W OR k IORWF f,dInclusive OR W with fd = f OR W (onde d pode ser W ou f) MOVLW kMove literal to WW = k MOVF f,dMove fd = f (onde d pode ser W ou f) MOVWF fMove W to ff = W NOPNo OperationNenhuma operação OPTIONLoad Option RegisterOPTION = W RETFIEReturn from InterruptRetorna de uma interrupt handler RETLW kReturn Literal to WRetorna de uma subrotina com W = k RETURNReturn from SubroutineRetorna de uma subrotina RLF f,dRotale Left f through Carryd = f << 1 (onde d pode ser W ou f) RRF f,dRotale Right f through Carryd = f >> 1 (onde d pode ser W o f)

67 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca67 Instruções SintaxeDescrição MicrochipOperação equivalente SLEEPGo into Standby ModeColoca o PIC em standby SUBLW kSubtract W from LiteralW = k - W SUBWF f,dSubtract W from fd = f - W (onde d pode ser W ou f) SWAPF fSwap ff = Swap do bit 0123 com 4567 de f TRIS fLoad TRIS RegisterTRIS di f = W XORLW kExclusive OR Literal with WW = W XOR k XORWF f,dExclusive OR W with fd = f XOR W (onde d pode ser W ou f)

68 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca68 Instruções - ADDLW ADDLW Soma um literal a W Sintaxe: [label] ADDLW k Operandos: 0 k 255 Operação: : (W) + (k)==> (W) Flags afectadas: C, DC, Z Código OP: x kkkk kkkk Descrição: Soma o conteúdo do registo W e k, guardando o resultado em W. Exemplo: ADDLW 0xC2 Antes: W = 0x17 Depois: W = 0xD9

69 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca69 Instruções - ADDWF ADDWFW + F Sintaxe: [label] ADDWF f,d Operandos: d [0,1], 0 f 127 Operação: (W) + (f) ==> (dest) Flags afectadas: C, DC, Z Código OP: dfff ffff Descrição: Soma o conteúdo do registo W com o registo f. Se d é 0, o resultado armazena-se em W, Se d é 1 armazena-se em f. Exemplo: ADDWF REG,0 Antes: W = 0x17, REG = 0xC2 Depois: W = 0xD9, REG = 0xC2

70 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca70 Instruções - ANDLW ANDLW W AND literal Sintaxe: [label] ANDLW k Operandos: 0 k 255 Operação: : (W) AND (k)==> (W) Flags afectadas: Z Código OP: kkkk kkkk Descrição: Realiza a operação lógica AND entre o conteúdo do registo W e k, guardando o resultado em W. Exemplo: ADDLW 0xC2 Antes: W = 0x17 Depois: W = 0xD9

71 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca71 Instruções - BCF BCF Apaga um bit Sintaxe: [label] BCF f,b Operandos: 0 f 127, 0 b 7 Operação: : 0 ==> (f ) Flags afectadas: nenhum Código OP: 01 00bb bfff ffff Descrição: Apaga o bit b do registo f Exemplo: : BCF REG,7 Antes: REG = 0xC7 Depois: REG = 0x47

72 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca72 Instruções - BSF BSF Activa um bit Sintaxe: [label] BSF f,b Operandos: 0 f 127,, 0 b 7 Operação: 1 ==> (f ) Flags afectadas: nenhum Código OP: 01 01bb bfff ffff Descrição: Activa o bit b do registo f Exemplo: BSF REG,7 Antes: REG = 0x0A Depois: REG = 0x8A

73 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca73 Instruções - BTFSC BTFSC Testa o bit e salta se for 0 Sintaxe: [label] BTFSC f,d Operandos: d [0,1], 0 f 127 Operação: Salto Se (f ) = 0 Flags afectadas: nenhum Código OP: 01 10bb bfff ffff Descrição: Se o bit b do registo f é 0, salta uma instrução e continua com a execução. Em caso de salto, ocupará dois ciclos de relógio. Exemplo: BTFSC REG,6 GOTO NO_ES_0 SI_ES_0 instrução NO_ES_0 instrução

74 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca74 Instruções - BTFSS BTFSS Testa o bit e salta se for 1 Sintaxe: [label] BTFSS f,d Operandos: d [0,1], 0 f 127 Operação: Salto Se (f ) = 1 Flags afectadas: nenhum Código OP: 01 11bb bfff ffff Descrição: Se o bit b do registo f é 1, salta uma instrução e continua com a execução. Em caso de salto, ocupará dois ciclos de relógio. Exemplo: BTFSS REG,6 GOTO NO_ES_0 SI_ES_0 instrução NO_ES_0 instrução

75 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca75 Instruções - CALL CALL Salta para subrotina Sintaxe: [label] CALL k Operandos: 0 k 2047 Operação: PC ==> pilha; k ==> PC Flags afectadas: nenhum Código OP: 10 0kkk kkkk kkkk Descrição: Salta para uma subrotina. A parte baixa de k é carregada em PCL, e a alta em PCLATCH. Ocupa 2 ciclos de relógio. Exemplo: ORIGEM CALL DESTINO Antes: PC = ORIGEM Depois: PC = DESTINO

76 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca76 Instruções - CLRF CLRF Apaga um registo Sintaxe: [label] CLRF f Operandos: 0 f 127 Operação: : 0x00 ==> (f), 1 ==> Z Flags afectadas: Z Código OP: fff ffff Descrição: O registo f é carregado com 0x00. A flag Z é activada. Exemplo: : CLRF REG Antes: REG = 0x5A Depois: REG = 0x00, Z = 1

77 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca77 Instruções - CLRW CLRW Apaga o registo W Sintaxe: [label] CLRW Operandos: nenhum Operação: : 0x00 ==> W, 1 ==> Z Flags afectadas: Z Código OP: xxx xxxx Descrição: O registo de trabalho W é carregado com 0x00. A flag Z é activada. Exemplo: : CLRW Antes: W = 0x5A Depois: W = 0x00, Z = 1

78 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca78 Instruções - CLRWDT CLRWDT Apaga o WDT Sintaxe: [label] CLRWDT Operandos: nenhum Operação: 0x00 ==> WDT, 1 ==> /TO 1 ==> /PD Flags afectadas: /TO, /PD Código OP: Descrição: Esta instrução apaga tanto o WDT como o seu preescaler. Os bits /TO e /PD do registo de estado são colocados a 1. Exemplo: : CLRWDT Depois: Contador WDT = 0, Preescales WDT = 0, /TO = 1, /PD = 1

79 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca79 Instruções - COMF COMF Complemento de f Sintaxe: [label] COMF f,d Operandos: d [0,1], 0 f 127 Operação: : (/ f), 1 ==> (dest) Flags afectadas: Z Código OP: dfff ffff Descrição: O registo f é complementado. A flag Z é activada se o resultado é 0. Se d é 0 o resultado é armazenado em W. Se d é 1 é armazenado em f. Exemplo: : COMF REG,0 Antes: REG = 0x13 Depois: REG = 0x13, W = 0XEC

80 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca80 Instruções - DECF DECF Decremento de f Sintaxe: [label] DECF f,d Operandos: d [0,1], 0 f 127 Operação: : (f ) - 1 ==> (dest) Flags afectadas: Z Código OP: dfff ffff Descrição: Decrementa conteúdo de f. Se d é 0, o resultado é armazenado em W, Se d é 1 é armazenado em f. Exemplo: : DECF CONT,1 Antes: CONT = 0x01, Z = 0 Depois: CONT = 0x00, Z = 1

81 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca81 Instruções - DECFSZ DECFSZ Decremento e salta se 0 Sintaxe: [label] DECFSZ f,d Operandos: d [0,1], 0 f 127 Operação: (f) -1 ==> d; Salto Se R=0 Flags afectadas: nenhum Código OP: dfff ffff Descrição: Decrementa o conteúdo do registo f. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Se o resultado é 0 salta uma instrução e ocuparia 2 ciclos. Exemplo: DECFSZ REG,0 GOTO NO_ES_0 SI_ES_0 instrução NO_ES_0 Salta instrução anterior

82 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca82 Instruções - GOTO GOTOSalto incondicional Sintaxe: [label] GOTO k Operandos: 0 k 2047 Operação: k ==> PC Flags afectadas: nenhum Código OP: 10 1kkk kkkk kkkk Descrição: Trata-se de um salto incondicional. A parte baixa de k é carregada em PCL, e a alta em PCLATCH. Ocupa 2 ciclos de relógio. Exemplo: ORIGEM GOTO DESTINO Antes: PC = ORIGEM Depois: PC = DESTINO

83 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca83 Instruções - INCF INCF Incremento de f Sintaxe: [label] INCF f,d Operandos: d [0,1], 0 f 127 Operação: : (f ) + 1 ==> (dest) Flags afectadas: Z Código OP: dfff ffff Descrição: Incrementa o conteúdo de f. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Exemplo: : INCF CONT,1 Antes: CONT = 0xFF, Z = 0 Depois: CONT = 0x00, Z = 1

84 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca84 Instruções - INCFSZ INCFSZ Incremento e salta se 0 Sintaxe: [label] INCFSZ f,d Operandos: d [0,1], 0 f 127 Operação: (f) -1 ==> d; Salto Se R=0 Flags afectadas: nenhum Código OP: dfff ffff Descrição: Incrementa o conteúdo do registo f. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Se o resultado é 0 salta a instrução seguinte, em cujo caso demoraria 2 ciclos. Exemplo: INCFSC REG,0 GOTO NO_ES_0 SI_ES_0 instrução NO_ES_0 Salta instrução anterior

85 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca85 Instruções - IORLW IORLW W OR literal Sintaxe: [label] IORLW k Operandos: 0 k 255 Operação: : (W) OR (k)==> (W) Flags afectadas: Z Código OP: kkkk kkkk Descrição: Realiza a operação lógica OR entre o conteúdo do registo W e k, guardando o resultado em W. Exemplo: IORLW 0x35 Antes: W = 0x9A Depois: W = 0xBF

86 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca86 Instruções - IORLWF IORWFW OR F Sintaxe: [label] IORWF f,d Operandos: d [0,1], 0 f 127 Operação: (W) OR (f) ==> (dest) Flags afectadas: Z Código OP: dfff ffff Descrição: Realiza a operação lógica OR entre os registos W e f. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Exemplo: : IORWF REG,0 Antes: W = 0x91, REG = 0x13 Depois: W = 0x93, REG = 0x13

87 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca87 Instruções - MOVLW MOVLW Carregar literal em W Sintaxe: [label] MOVLW f Operandos: 0 f 255 Operação: (k) ==> (W) Flags afectadas: nenhum Código OP: 11 00xx kkkk kkkk Descrição: O literal k passa ao registo W. Exemplo: MOVLW 0x5A Depois: REG = 0x4F, W = 0x5A

88 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca88 Instruções - MOVF MOVF Mover f para W Sintaxe: [label] MOVF f,d Operandos: d [0,1], 0 f 127 Operação: (f) ==> (dest) Flags afectadas: Z Código OP: dfff ffff Descrição: O conteúdo do registo f é movido para o destino dependendo de d. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Quando d é 1 permite verificar o registo, já que afecta a Z. Exemplo: MOVF REG,0 Depois: W = REG

89 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca89 Instruções - MOVWF MOVWF Mover W para f Sintaxe: [label] MOVWF f Operandos: 0 f 127 Operação: W ==> (f) Flags afectadas: nenhum Código OP: fff ffff Descrição: O conteúdo do registo W passa para o registo f. Exemplo: MOVWF REG,0 Antes: REG = 0xFF, W = 0x4F Depois: REG = 0x4F, W = 0x4F

90 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca90 Instruções - NOP NOP Não operação Sintaxe: [label] NOP Operandos: nenhum Operação: No operar Flags afectadas: nenhum Código OP: xx Descrição: Não realiza nenhuma operação. Na realidade consome um ciclo de instrução sem fazer nada. Exemplo: NOP

91 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca91 Instruções - RETFIE RETFIE regresso de interrupção Sintaxe: [label] RETFIE Operandos: nenhum Operação: : 1 ==> GIE; TOS==>PC Flags afectadas: nenhum Código OP: Descrição: o PC é carregado com o conteúdo de cima da pilha (TOS): direcção de regresso. Consome 2 ciclos. As interrupções voltam a ser habilitadas. Exemplo: : RETFIE Depois: PC = direcção de regresso GIE = 1

92 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca92 Instruções - RETLW RETLW regresso de uma subrotina, com o valor em W Sintaxe: [label] RETLW k Operandos: 0 k 255 Operação: : (k)==> (W); TOS==>PC Flags afectadas: nenhum Código OP: 11 01xx kkkk kkkk Descrição: O registo W é carregado com a constante k. O PC é carregado com o conteúdo de cima da pilha (TOS): direcção de regresso. Consome 2 ciclos. Exemplo: : RETLW 0x37 Depois: PC = direcção de regresso W = 0x37

93 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca93 Instruções - RETURN RETURN regresso de rotina Sintaxe: [label] RETURN Operandos: nenhum Operação: : TOS ==> PC Flags afectadas: nenhum Código OP: Descrição: O PC é carregado com o conteúdo de cima da pilha (TOS): direcção de regresso. Consome 2 ciclos. Exemplo: : RETURN Depois: PC = direcção de regresso

94 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca94 Instruções - RLF RLF roda f para a esquerda Sintaxe: [label] RLF f,d Operandos: d [0,1], 0 f 127 Operação: Rotação a a esquerda Flags afectadas: C Código OP: dfff ffff Descrição: O conteúdo de f é rodado para a esquerda. O bit de menor peso de f passa para o carry (C), e o carry é colocado no de maior peso. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Exemplo: RLF REG,0 Antes: REG = , C = 0 Depois: REG = , W = , C = 1

95 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca95 Instruções - RRF RRF roda f para a direita Sintaxe: [label] RRF f,d Operandos: d [0,1], 0 f 127 Operação: Rotação a a direita Flags afectadas: C Código OP: dfff ffff Descrição: O conteúdo de f é rodado para a direita. O bit de menos peso de f passa para o carry (C), e o carry é colocado no de maior peso. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Exemplo: RRF REG,0 Antes: REG = , C = 1 Depois: REG = , W = , C = 0

96 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca96 Instruções - SLEEP SLEEP Modo baixo consumo Sintaxe: [label] SLEEP Operandos: nenhum Operação: 0x00==>WDT, 1 ==> / TO 0 ==> WDT Preescaler, 0 ==> / PD Flags afectadas: / PD, / TO Código OP: Descrição: O bit de energia é colocado a 0, e a 1 o de descanso. O WDT e o seu preescaler são apagados. o micro pára o oscilador, ficando adormecido. Exemplo: : SLEEP Preescales WDT = 0, /TO = 1, /PD = 1

97 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca97 Instruções - SUBLW SUBLW Subtrai W ao literal Sintaxe: [label] SUBLW k Operandos: 0 k 255 Operação: ( k ) - (W) ==> (W) Flags afectadas: Z, C, DC Código OP: x kkkk kkkk Descrição: Mediante o método do complemento para dois o conteúdo de W é subtraído ao literal. O resultado é armazenado em W. Exemplos: SUBLW 0x02 Antes:W=1,C=?. Depois: W=1, C=1 Antes:W=2,C=?. Depois: W=0, C=1 Antes:W=3,C=?.Depois:W=FF,C=0 (o resultado é negativo)

98 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca98 Instruções - SUBLWF SUBWF Subtrai W ao f Sintaxe: [label] SUBWF f,d Operandos: d [0,1], 0 f 127 Operação: ( f ) - (W )==> (dest) Flags afectadas: C, DC, Z Código OP: dfff ffff Descrição: Mediante o método do complemento para dois o conteúdo de W é subtraído ao de f. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Exemplos: SUBWF REG,1 Antes: REG = 0x03, W = 0x02, C = ? Depois:REG=0x01, W = 0x4F, C=1 Antes: REG = 0x02, W = 0x02, C = ? Depois:REG=0x00, W =0x02, C= 1 Antes: REG= 0x01, W= 0x02, C= ? Depois:REG=0xFF, W=0x02, C= 0 (Resultado negativo)

99 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca99 Instruções - SWAPF SWAPF Troca de f Sintaxe: [label] SWAPF f,d Operandos: d [0,1], 0 f 127 Operação: : (f ) (f ) Flags afectadas: nenhum Código OP: dfff ffff Descrição: Os 4 bits de maior peso e os 4 de menor são trocados. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Exemplo: SWAPF REG,0 Antes: REG = 0xA5 Depois: REG = 0xA5, W = 0x5A

100 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca100 Instruções - XORLW XORLW W XOR literal Sintaxe: [label] XORLW k Operandos: 0 k 255 Operação: : (W) XOR (k)==> (W) Flags afectadas: Z Código OP: kkkk kkkk Descrição: Realiza a operação lógica XOR entre o conteúdo do registo W e k, guardando o resultado em W. Exemplo: : XORLW 0xAF Antes: W = 0xB5 Depois: W = 0x1A

101 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca101 Instruções - XORLW XORWFW XOR F Sintaxe: [label] XORWF f,d Operandos: d [0,1], 0 f 127 Operação: (W) XOR (f) ==> (dest) Flags afectadas: Z Código OP: dfff ffff Descrição: Realiza a operação lógica XOR entre os registos W e f. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Exemplo: : XORWF REG,0 Antes: W = 0xB5, REG = 0xAF Depois: W = 0xB5, REG = 0x1A

102 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca102 Programa – Walk.asm

103 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca103 Programa – Walk.asm ; WALK.ASM ; ; To use this program connect four LEDs from each of RB0-RB7 to ground ; via four 470 ohm resistors. The LEDs are illuminated one at time in ; a to-and-fro pattern. ; The illumination rate is more or less independent of the PIC clock ; frequency and configuration although this program assumes an RC ; oscillator. The program includes the __CONFIG, __IDLOCS and DE ; directives (mostly just to show how they can be used). The program ; can be used unchanged on any 16X8X device. LIST P=16F84 ERRORLEVEL -302 ;SUPPRESS BANK SELECTION MESSAGES __CONFIG 3FF5H ;XT OSC, WATCHDOG __IDLOCS 1234 ; PORTB EQU 6 TRISB EQU 86H OPTREG EQU 81H STATUS EQU 3 CARRY EQU 0 RP0 EQU 5 MSB EQU 3 ;BIT POSITION OF LEFTMOST LED ;

104 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca104 Programa – Walk.asm CLRF PORTB ;ALL LEDS OFF BSF STATUS,RP0 ;SELECT REGISTER BANK 1 CLRF TRISB ;SET PORTB TO ALL OUTPUTS MOVLW 0AH MOVWF OPTREG ;ASSIGN PRESCALER (1:4) TO WDT BCF STATUS,RP0 ;SELECT REGISTER BANK 0 INCF PORTB,F ;TURN ON RIGHTMOST LED BCF STATUS,CARRY ;CLEAR CARRY LEFT SLEEP ;WAIT FOR WDT TIMEOUT RLF PORTB,F ;TURN ON LED TO LEFT BTFSS PORTB,MSB ;REACHED LEFTMOST? GOTO LEFT ;LOOP IF NOT RIGHT SLEEP ;WAIT FOR WDT TIMEOUT RRF PORTB,F ;TURN ON LED TO RIGHT BTFSS PORTB,0 ;REACHED RIGHTMOST? GOTO RIGHT ;LOOP IF NOT GOTO LEFT ;START NEW CYCLE ; ORG 2100H ; DE "Copyright (C) 1996 David Tait" END

105 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca105 Porta Série As portas série usam basicamente o mesmo hardware que usaram inicialmente na altura do primeiro PC em 1981, tendo sofrido apenas uma actualização significativa quando foi introduzido o PS/2 São a melhor forma que um PIC tem de comunicar com um PC O uso da ficha de 9 pinos foi desenvolvida porque a porta série era colocada no mesmo adaptador que a porta paralela e não havia espaço para duas fichas de 25 pinos Podem ser endereçadas até 4 portas série num PC, só duas é que serão usadas para ligar a dispositivos externos ao PC

106 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca106 Porta Série - Pinout Nome do pino 25 pinos9 pinosDirecção I/O TxD23 RxD32 Gnd75 RTS47O CTS58I DTR204O DSR66I RI229I DCD81I

107 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca107 Porta Série A porta série usa o integrado 8250, ou as actualizações do PS/2, ou Estes últimos integrados possuem buffers (memórias FIFO), que não são muito usados e só são necessários para velocidades de transmissão elevadas (a partir de bps) Estes integrados são UART (Universal Asynchronous Receiver/Transmitter)

108 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca108 Porta Série – Offset das portas Offset do endereço baseNome do registo 0Transmitter Holding Register/Receiver Character Buffer/LSB Divisor Latch 1Interrupt Enable Register/MSB Divisor Latch 2Interrupt Identification Register 3Line Control Register 4Modem Control Register 5Line Status Register 6Modem Status Register 7Scratchpad Register

109 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca109 Porta Série Velocidade=1,8432 Mhz/(16*Divisor ) VelocidadeDivisor 110 bps0x bps0x bps0x00C bps0x bps0x bps0x000C bps0x bps0x0001

110 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca110 Circuitos

111 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca111 Circuitos

112 Jan 2003PICmicro Microcontroladores - José Carlos Fonseca112 Bibliografia Programming and customizing PICmicro microcontrollers, second edition, Myke Predko, McGraw Hill, 2001 Monte o seu Microbot 07/01/2003


Carregar ppt "PICmicro Microcontrolador Sistemas Digitais II (Documento em versão Draft ainda em elaboração) José Carlos Fonseca 14 de Janeiro de 2003."

Apresentações semelhantes


Anúncios Google