MICROCONTROLADOR 8051
|
|
|
- Matheus Henrique Sá Carvalho
- 9 Há anos
- Visualizações:
Transcrição
1 Sumário 1 Introdução aos Microcontroladores O Microcontrolador - História e Aplicação Motivação para o Estudo de um Microcontrolador O Sistemas Microprocessados Programação de um Microcontrolador Sistemas de Desenvolvimento, Emuladores e Simuladores Diagrama em Blocos de um Sistema Básico com Microprocessador Família 8051 Hardware A Organização da memória do RAM interna Os Registros de Função Especial do Palavra de Status de Programa (PSW) Registro Apontador de Pilha (SP Stack Pointer) Registro Apontador de Dados (DPTR Data PoinTeR) Modos de Endereçamento do Modo de endereçamento DIRETO Modo de endereçamento de registro ou modo REGISTRADOR Modo de endereçamento INDIRETO Modo de endereçamento de registros específicos ou ESPECÍFICO A REGISTRO Modo de endereçamento IMEDIATO ou CONSTANTE IMEDIATA Modo de endereçamento INDEXADO Reset no Clock no Interrupções no Temporizadores e Contadores no Modos de operação dos Contadores / Temporizadores MODO 0 Contador / Temporizador de 13 bits (8 bits com divisor de freqüência por 32) MODO 1 Contador / Temporizador de 16 bits MODO 2 Contador / Temporizador de 8 bits com recarga automática MODO 3 1 Contador / Temporizador de 8 bits e 1 Temporizador de 8 bits O Canal Serial Canal serial operando no Modo Funções dos demais bits do SCON no Modo Canal Serial operando no Modo Funções dos demais bits do SCON no Modo Geração de taxa de transmissão Canal serial operando no Modo Funções dos demais bits do SCON no Modo Canal serial operando no Modo Comunicação entre CIs O assembly do Instruções de transferência de dados Instruções para variáveis booleanas Instruções aritméticas Instruções de desvio Instruções lógicas Exercícios Tabela dos códigos das instruções do microcontrolador Bibliografia... 38
2 MICROCONTROLADOR Introdução aos Microcontroladores 1.1 O Microcontrolador - História e Aplicação Para se entender melhor o que é um microcontrolador, torna-se necessária uma abordagem histórica sobre os microcomputadores e os computadores pessoais em geral. Em janeiro de 1975, a revista Popular Electronics publicou um artigo descrevendo o Altair 8800, o primeiro computador que poderia ser construído e programado em casa. O Altair básico não tinha teclado, monitor ou drives. A programação era feita através de chaves no painel frontal. O processador utilizado era um 8080, da Intel, e a memória RAM padrão era de 256 bytes. Como curiosidade, o kit custava US$ 397 desmontado e US$ 498 montado. Uma guinada na utilidade do Altair ocorreu quando a então pequena companhia chamada Microsoft ofereceu uma versão da linguagem BASIC para o mesmo. O crescimento dessas máquinas pessoais tornou-se cada vez maior, até se chegar ao que temos hoje, onde os microcomputadores são utilizados para as mais diversas tarefas, como edição de texto, CAD (Computer Aided Design Projeto Auxiliado por Computador), simuladores poderosos nas mais diversas áreas, planilhas de cálculo etc. Assim, um computador pessoal é uma máquina de propósito geral que requer uma série de dispositivos para ser utilizada (teclado, vídeo, impressora, drives etc). Os computadores pessoais, no entanto, tornam-se inadequados para algumas tarefas específicas, seja por seu custo ou por seu tamanho excessivo. Assim, para que se possa ter as vantagens do poder computacional sem ter-se necessidade da parafernália utilizada em um computador pessoal, utilizam-se dispositivos específicos: microcontroladores. A etmologia da palavra indica que um microcontrolador é um dispositivo pequeno (micro) e que sua função é controlar algo, podendo controlar objetos, processos ou eventos. Um microcontrolador também é conhecido como controlador embedded, porque o mesmo muitas vezes está embutido nos dispositivos que controla. É interessante fazer-se a distinção entre três conceitos: a) Microprocessador: chip responsável pelo processamento em um microcomputador. É um elemento complexo, contendo, entre outras coisas, uma unidade lógica e aritmética (ULA) e diversos registros (registradores) especiais. b) Microcomputador-de-um-só-chip: como o nome indica, reúne no mesmo chip os diversos elementos de um microcomputador: microprocessador, RAM, ROM, temporizadores, contadores, canal de comunicação serial e portas de I/O. c) Microcontrolador: microcomputador-de-um-só-chip que pode ainda conter elementos para uso industrial, tais como conversores A/D e D/A, PLL, PWM etc. 1.2 Motivação para o Estudo de um Microcontrolador O microcontrolador, hoje em dia, é um elemento indispensável para o engenheiro eletricista ou de eletrônica, ou ainda para o técnico de nível médio da área, em função de sua versatilidade e da enorme aplicação. Entre algumas das aplicações de um microcontrolador podemos citar automação industrial, telefones celulares, auto-rádios, fornos de microondas, videocassetes, teclados, modems, impressoras e o controle de muitos dispositivos em automóveis. Além disso, a tendência da eletrônica digital é de se resumir a microcontroladores e a chips que concentram grandes circuitos lógicos, como os PLDs (Programmable Logic Devices). Para sistemas dedicados, o microcontrolador apresenta-se como a solução mais acessível, em função do baixo custo e facilidade de uso. 1
3 1.2.1 O 8051 O 8051, lançado pela Intel na década de 80, é, sem dúvida, o microcontrolador mais popular da história. De acordo com o Philips Components em Notícias de Jan/Fev/Mar 95, a produção mundial do dispositivo naquele ano estava estimada em 100 milhões de unidades, representando aproximadamente 30% do mercado mundial de microcontroladores de 8 bits. O dispositivo em si é um microcontrolador de 8 bits relativamente simples, mas com ampla aplicação. Porém, o mais importante é que não existe somente o CI 8051, mas sim uma família de microcontroladores baseada no mesmo. Entende-se família como sendo um conjunto de dispositivos que compartilha os mesmos elementos básicos, tendo também um mesmo conjunto básico de instruções. 1.3 Sistemas Microprocessados Sistemas microprocessados são aqueles que têm por elemento central um microprocessador. O microprocessador funciona como um sistema seqüencial síncrono, onde a cada pulso, ou grupos de pulsos de clock, uma instrução é executada. Entre os microprocessadores mais conhecidos podemos citar o Z-80, 8086, 8088, 68000, 80286, 80386, 80486, Pentium e Athlon. Embora hoje em dia já existam microprocessadores que trabalhem em unidades de GHz, como o Pentium IV, o 8051 utiliza tipicamente um clock de 12 MHz, dividido internamente por 12, o que gera uma taxa de 1µs para cada instrução básica (existem também instruções de 2µs e 4µs). Nos microcontroladores, diferentemente do que ocorre em um computador pessoal, o programa é tipicamente armazenado em memória semicondutora do tipo ROM (PROM, EPROM EEPROM, Flash EPROM) ou ainda NVRAM. A memória de programa pode estar no próprio chip do microcontrolador ou em um chip separado. As interfaces com o mundo exterior variam muito com a aplicação, e podem incluir um pequeno display, um teclado pequeno (keypad) ou chaves, sensores, relés, motores etc. 1.4 Programação de um Microcontrolador Para programar um microcontrolador, pode-se utilizar código de máquina, linguagem assembly específica para o processador em questão ou uma linguagem de alto nível. O uso direto de código de máquina (machine code) é a forma mais básica e trabalhosa de programação, visto que o código de instrução tem que ser procurado em uma tabela. Uma linguagem assembly (montagem) utiliza o auxílio de mnemônicos para facilitar a lembrança. Por exemplo, é muito mais fácil utilizar o mnemônico SETB C, indicando que o bit C (carry) deve ser setado do que se lembrar do código de máquina para a operação, No entanto, é necessário converter o programa escrito com os mnemônicos para código de máquina, o que manualmente só se torna viável para programas muito curtos. Torna-se necessário, então, o uso de um programa montador (assembler), o qual é um programa que roda em um computador pessoal e converte a linguagem assembly para código de máquina, geralmente ainda oferecendo facilidades de edição e geração de listas. Uma outra possibilidade é a utilização de uma linguagem de alto nível. As linguagens de alto nível utilizam uma sintaxe padrão que facilita a portabilidade de programas de um dispositivo para outro, enquanto que a linguagem assembly é muito mais específica. O grifo na palavra facilita é importante, pois modificações são quase sempre necessárias. Uma vantagem adicional de uma linguagem de alto nível é a de permitir que se faça em poucas linhas o que exigiria muitas (às vezes muitas mesmo!) em assembly. No entanto, linguagens de alto nível têm que ser compiladas ou interpretadas. Uma mesma linguagem de alto nível pode, portanto, fazer uso de um compilador ou de um interpretador. Um interpretador faz a tradução do programa em código de máquina cada vez que o programa é rodado, enquanto que um compilador faz este processo uma única vez, criando um arquivo executável que pode ser rodado diretamente. A vantagem de um interpretador sobre um compilador é a de permitir que o programa seja rodado imediatamente após ser escrito, sem a necessidade de um passo separado de compilação ou montagem. No entanto, a velocidade de execução é menor com interpretador, além do espaço 2
4 de memória ocupado pelo interpretador propriamente dito. Os programas compilados são mais rápidos do que os interpretados. Porém, quando comparado com um programa equivalente escrito em assembly, um programa compilado é, geralmente, maior e mais lento. Assim, quando o espaço em memória disponível é muito pequeno e/ou precisa-se de o máximo de velocidade, programas em assembly são a melhor solução. Uma linguagem de alto nível pode ainda não oferecer todos os recursos que podem ser obtidos com a linguagem assembly, problema que pode ser contornado com a chamada de subrotinas em assembly, quando necessário. 1.5 Sistemas de Desenvolvimento, Emuladores e Simuladores Em um projeto, após um programa ter sido escrito, é necessário testá-lo para verificar se está funcionando de acordo com o previsto. Se não estiver, deve-se fazer no mesmo as modificações necessárias e testá-lo novamente. Trata-se do processo de depuração do programa. A maneira mais rudimentar de se testar um programa é a gravação direta do mesmo em EPROM (processo trabalhoso). Após a gravação, instala-se a EPROM no sistema, testa-se o programa e verificam-se os resultados. Se algo sair errado, repete-se todo o procedimento. Podese notar que este método é muito trabalhoso. Uma solução mais prática é o uso de um sistema de desenvolvimento. Normalmente, um sistema de desenvolvimento tem um programa monitor, armazenado em memória permanente, e um link serial para um computador pessoal. O programa monitor permite a carga do programa a ser testado, via link serial, do computador pessoal para memória RAM do sistema microcontrolado, para ser rodado e testado. A maioria dos sistemas de desenvolvimento também possui recursos que facilitam a depuração, como a possibilidade de rodar o programa passo-apasso ou a colocação de breakpoints no programa. Trata-se de um processo muito mais eficiente do que o anterior. Uma vez que o programa esteja funcionando corretamente, o mesmo poderá ser gravado em memória permanente, uma única vez. Uma alternativa a um sistema de desenvolvimento é o uso de um emulador. Um emulador de memória, por exemplo, é conectado ao soquete onde estaria a EPROM e também se comunica com um computador pessoal, possibilitando também um processo de depuração com recursos como os apresentados por um sistema de desenvolvimento. Para quem não possui um sistema de desenvolvimento ou um emulador, uma possibilidade é o uso de um simulador. Trata-se de um programa que roda em um computador pessoal e mostra o que aconteceria se um processador específico rodasse um determinado programa. Normalmente, um simulador permite que se visualize posições de memória interna e registros de função especial, permite a colocação de breakpoints ou mesmo rodar um programa passo-a-passo. No entanto, os simuladores têm duas desvantagens: a primeira está relacionada com o fato de não conseguirem simular todas as características do dispositivo em questão, principalmente características de temporização. E a segunda diz respeito à definição de um simulador, isto é, sendo um programa, o mesmo tem que ter sido perfeitamente programado para se comportar como o que simula, e disto o usuário não pode estar certo. Outra alternativa é a utilização do laboratório de experimentação remota. Como exemplo, tem-se o da UFSC, onde acontece a real execução do programa, e não a simulação. O mesmo pode ser acessado, via Internet, no endereço 3
5 2. Diagrama em Blocos de um Sistema Básico com Microprocessador GERADOR DE CLOCK GERADOR DE RESET INTERRUPÇÕES M I C R O P R O C E S S A D O R BARRAMENTO DE DADOS MEMÓRIA DE PROGRAMA BARRAMENTO DE ENDEREÇOS BARRAMENTO DE CONTROLE MEMÓRIA DE DADOS PORTAS DE ENTRADAS E SAÍDAS ALIMENTAÇÃO DECODIFICADOR DE ENDEREÇOS Figura Diagrama em Blocos de um Sistema Básico com Microprocessador A Figura 2.1 apresenta o diagrama em blocos de um sistema básico com microprocessador. Além do microprocessador, um sistema básico como este tem os seguintes elementos: Gerador de Clock: Gerador de Reset: gera os pulsos necessários ao sincronismo do sistema. responsável por inicializar o sistema ao ligar ou quando acionado. Memória de Programa: memória onde o microprocessador vai procurar as instruções a executar. Em sistemas dedicados costuma-se utilizar memórias ROM, embora em alguns casos memórias RAM também sejam utilizadas. Memória de Dados: Portas de I/O: Seleção de Endereços: Interrupções: memória onde o microprocessador lê e escreve dados durante a operação normal. Geralmente é do tipo volátil, embora memórias nãovoláteis possam ser utilizadas. sua função é a comunicação com o mundo externo. Através delas, dispositivos como teclados, impressoras, displays, entre outros, comunicam-se com o sistema. lógica para escolher qual memória ou periférico o microprocessador vai utilizar. são entradas de sinal externo que fazem com que o processamento seja interrompido e seja iniciada uma sub-rotina específica. (Obs.: o 8051 tem interrupções com estrutura nesting, onde uma interrupção pode interromper outra que está sendo atendida, desde que tenha maior prioridade). 4
6 3. Família Hardware A família 8051 é composta por diversos microcontroladores de 8 bits que possuem o mesmo conjunto básico de instruções (na verdade, existem alguns dispositivos de 16 bits, como o 80C51 XA, da Philips, lançado em 1994). A Tabela 3.1 lista os principais elementos desta família. Versão com ROM interna ROM (bytes) RAM (bytes) Temporizadores de 16 bits Tecnologia Versão sem ROM Versão com EPROM k NMOS C51 4k CMOS 80C31 87C k NMOS C52 8k CMOS 80C32 87C52 80C53 8k CMOS - 87C54 83CL410 4k CMOS/ 80CL410 - Low Power 83C451 4k CMOS 80C451 87C451 83C528 32k watchdog CMOS 80C528 87C528 83C550 4k watchdog CMOS 80C550 87C550 83C552 8k watchdog CMOS 80C552 87C552 83C592 16k watchdog CMOS - 87C592 83C852 6k CMOS - - Tabela Família 8051 O 8051 será visto em detalhes a seguir. Os demais elementos são versões ampliadas, com os seguintes recursos adicionados: 8052/80C52: 256 bytes de RAM, 8 Kbytes de ROM, 3 temporizadores/contadores e 6 sinais de interrupção. 80C53: versão para aplicações em controle central de televisão. Possui controlador de tela, 3 saídas de vídeo digital, controle de multiplexador/mixador e intensidade de fundo de tela, RAM de display de 128x10, ROM gerador de caracteres de 60x18x14, 8 PWM de 6 bits, 1 PWM de 14 bits, polaridade de entrada e saída de vídeo programável, 12 saídas para +12V com dreno aberto e 4 saídas com dreno aberto para alta corrente. 83CL410: versão para baixas tensões de alimentação (1,5 a 6V). Opera em baixa freqüência (de 32KHz a 20MHz). 80C451: versão com entrada/saída estendida, tendo 7 portas de I/O com recursos de interface direta e interface de impressora paralela. 80C528: possui 32K bytes de ROM, 512 bytes de RAM, 3 temporizadores e watchdog. 83C550: versão com 8 canais de conversor A/D de 8 bits. 83C552: versão com 8 canais de conversor A/D de 10 bits, 4 temporizadores/contadores, saídas PWM e 6 portas de I/O e watchdog. 83C592: versão com barramento de interface para rede (CAN - Control Area Network) e transferência de DMA entre RAM no chip e interface CAN. 83C852: versão para aplicações de segurança. Contém memória EEPROM e características de segurança do sistema. 5
7 A pinagem do 8051 é mostrada na Figura 3.1. P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RESET TxD P3.1 INT0 P3.2 INT1 P3.3 T0 P3.4 WR P3.6 RD P3.7 XTAL2 XTAL1 GND Vcc P0.0 P0.1 P0.2 P0.4 P0.5 AD0 AD1 AD2 AD4 AD5 P0.7 AD7 EA ALE PSEN P2.7 A15 P2.6 A14 P2.5 A13 P2.3 P2.0 A11 A8 Figura Pinagem do 8051 Como já foi citado, o 8051 é um microcontrolador de ampla utilização. O mesmo tem dois modos básicos de funcionamento: a) modo mínimo - onde somente recursos internos são utilizados pela CPU. Neste modo, estão disponíveis 4 Kbytes de ROM para memória de programa e 128 bytes de RAM para memória de dados. O modo mínimo possui a vantagem (além da economia de componentes e espaço físico) de poder utilizar as 4 portas de 8 bits cada para controle (I/O); b) modo expandido - Neste modo, a memória de programa (ROM), a memória de dados (RAM) ou ambas podem ser expandidas para 64 KB, através do uso de CIs externos. No entanto, apresenta a desvantagem de perder duas das 4 portas para comunicação com as memórias externas. Na Figura 3.2, apresenta-se um exemplo de expansão da memória de dados e da memória de programa. No caso do microcontrolador 8031, a utilização de uma memória de programa externa ligada de maneira similar ao exemplo abaixo é obrigatória, visto que o mesmo não possui uma memória ROM internamente. 6
8 +V D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7 RST P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 XTAL1 XTAL2 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/TO P3.5/T1 P3.6/WR P3.7/RD AD0/P0.0 AD1/P0.1 AD2/P0.2 AD3/P0.3 AD4/P0.4 AD5/P0.5 AD6/P0.6 AD7/P0.7 EA ALE A8/P2.0 A9/P2.1 A10/P2.2 A11/P2.3 A12/P2.4 A13/P2.5 A14/P2.6 A15/P2.7 PSEN D0 D1 D2 D3 D4 D5 D6 D7 G OC Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 OE CS A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 OE R/W CS Figura Expandindo RAM e ROM Como pode ser visto na Figura 3.2, além das memórias faz-se necessário a utilização de um outro CI (no caso o 74373) para a multiplexação de dados e endereços. Esta multiplexação ocorre no primeiro ciclo de máquina. O 8051 coloca nos pinos AD0 a AD7 o byte menos significativo do endereço externo e leva o pino ALE (Address Latch Enable - Habilitador da Trava de Endereços) a nível alto, de modo que o (oito latches tipo D) coloque em suas saídas essa informação, e logo em seguida passa este pino para nível baixo, para que esse byte fique retido no Após isso, os pinos AD0 a AD7 estarão livres para o transporte dos dados. O 8051 pode, no modo expandido, utilizar toda a memória de programa externa (com nível lógico 0 aplicado ao pino 31 - External Address ) ou ainda utilizar os primeiros 4 kb internos e o restante externo (com 1 em EA ). O CI 8031 é a versão sem ROM interna do O mesmo é muito utilizado em fase de desenvolvimento ou quando se quer produzir em pequenas quantidades. Como o 8031 tem a mesma pinagem que o 8051, o mesmo possui o pino EA, que deverá sempre ser utilizado em nível lógico baixo. Retornando a Figura 3.2, nela estamos utilizando KB de RAM externa, além dos bytes de RAM interna. Além disso, temos um total de KB de memória ROM que, no caso do 8051, pode estar sendo utilizado apenas no CI externo ou com os bytes menos significativos em memória interna e os bytes mais significativos na memória externa. Ainda em relação à Figura 3.2, para fazer uma leitura na ROM externa, o pino PSEN será levado a nível baixo, para fazer uma leitura na RAM externa, o pino RD será levado a nível baixo e, para fazer uma escrita na RAM externa, o pino WR será levado a nível baixo. A Tabela 3.2 ilustra as situações possíveis para esses pinos de controle. PSEN RD WR Leitura da ROM (EPROM) Leitura da RAM externa Escrita na RAM externa Tabela 3.2 Barramento de controle ( PSEN, RD e WR ) 7
9 4. A Organização da Memória do 8051 As Figuras 4.1 e 4.2 ilustram, respectivamente, a organização da memória de programa e da memória de dados do É importante salientar que, diferentemente de outros sistemas baseados em microprocessador, onde cada endereço de memória identifica univocamente uma única posição física, no 8051 o mesmo endereço hexadecimal pode identificar 3 posições físicas diferentes (e até 4, no caso do 8052, que tem 256 bytes de RAM interna). Por exemplo, temos o endereço 23H na RAM interna, o endereço 23H na RAM externa e o endereço 23H na ROM externa. Mesmo com esses endereços iguais, não há risco de confusão, pois as instruções e o modo de endereçamento são diferentes. Para deixar mais claro, vamos supondo que se deseja carregar no acumulador o conteúdo de cada uma das posições 23H. Veja os exemplos abaixo: a) da RAM interna b) da RAM externa c) da ROM MOV A,23H ;end.direto MOV R0,#23H ;end. imediato CLR A ;R0 como ponteiro MOV DPTR,#0023H MOVX A,@R0 ;indireto MOVC A,@A+DPTR 4.1 RAM interna A Figura 4.3 mostra em detalhes a divisão da RAM interna do Note a presença dos 4 bancos de registradores auxiliares, cada um contendo 8 registradores (R0, R1, R2, R3, R4, R5, R6, R7). R0 e R1 são utilizados para endereçamento indireto. Apesar de existirem 4 bancos de 8
10 registradores, somente um está ativo por vez para uso como índice. A seleção do banco ativo é feita no registro de função especial PSW, que será visto em breve. Como pode ser visto pela Figura 4.3, os bytes de 20H a 2FH da RAM interna têm bits endereçáveis individualmente. É possivel, com os mesmos, executar várias instruções de bits. Por exemplo, a instrução SETB 3CH coloca em nível alto o bit 3CH ou seja, o bit 4 da posição de memória 27H da RAM interna. 9
11 5. Os Registros de Função Especial do 8051 Os Registros de Função Especial (SFRs - Special Function Registers) são responsáveis pela maior parte do controle do Os mesmos são mostrados na Figura 5.1. Alguns deles possuem bits endereçáveis (os com endereço de byte terminando em 0 ou 8). Note que alguns dos bits endereçáveis possuem inclusive um nome mnemônico, para maior facilidade de desenvolvimento de software em compiladores. F7 F6 F5 F4 F3 F2 F1 F0 E7 E6 E5 E4 E3 E2 E1 E0 CY AC F0 RS1 RS0 OV - P D7 D6 D5 D4 D3 D2 D1 D0 PS PT1 PX1 PT0 PX0 BF BE BD BC BB BA B9 B8 P3.7 P3.6 P3.5 P3.4 P3.3 P3.1 P3.0 B7 B6 B5 B4 B3 B2 B1 B0 EA ES ET1 ET0 EX0 AF AE AD AC AB AA A9 A8 P2.7 P2.6 P2.5 P2.4 P2.3 P2.1 P2.0 A7 A6 A5 A4 A3 A2 A1 A0 SM0 SM1 SM2 REN TB8 TI RI 9F 9E 9D 9C 9B 9A P1.7 P1.6 P1.5 P1.4 P1.3 P1.1 P ENDEREÇO DE BIT MNEUMÔNICO DE BIT B F0 ACC E0 PSW D0 IP B8 P3 B0 IE A8 P2 A0 SBUF 99 SCON 98 P1 90 ENDEREÇO DE BYTE MNEUMÔNICO DE REGISTRO TF1 TR1 TF0 TR0 IE1 IE0 IT0 8F 8E 8D 8C 8B 8A SMOD GF1 PD IDL P0.7 P0.6 P0.5 P0.4 P0.3 P0.1 P TH1 8D TL1 8C TH0 8B TL0 8A TMOD 89 TCON 88 PCON 87 DPH 83 DPL 82 SP 81 P0 80 Figura Registros de Função Especial A função básica de cada registro especial é descrita abaixo. Ao lado do registro está seu endereço na RAM. P0 (80H), P1 (90H), P2 (A0H) e P3 (B0H) Posições na RAM que contêm os dados das 4 portas de I/O do microcontrolador, caso as mesmas sejam utilizadas com esse fim. Se for feita uma escrita em um desses registros, o conteúdo nos pinos correspondentes à porta será automaticamente alterado. Já uma leitura dos mesmos verifica o estado dos pinos. SP (81H) Trata-se do apontador de pilha (Stack Pointer), que aponta para o alto da pilha. DPL (82H) e DPH (83H) Em conjunto formam o DPTR, utilizado para endereçamento indireto de 16 bits. 10
12 PCON (87H) O registro PCON (Power Control) permite adaptar o microcontrolador para redução de consumo com segurança. TCON (88H) e TMOD (89H) Registros dos Temporizadores/Contadores. Permitem a programação dos mesmos. TL0 (8AH), TH0 (8CH), TL1 (8BH) e TH1 (8DH) Registros dos dados dos dois Temporizadores/Contadores (T0 e T1). SCON (98H) e SBUF (99H) Registros para uso da porta de comunicação serial. IE (A8H) e IP (B8H) Registros para programação (habilitação/desabilitação, prioridade etc) das interrupções. PSW (D0H) O PSW (Program Status Word - palavra de status do programa) é o registro dos flags do ACC (E0H) Acumulador. B ( F0H) Registro auxiliar B. A seguir, são abordados com mais detalhes os registros PSW, SP e DPTR. Os demais registros serão vistos nas próximas seções. 5.1 Palavra de Status de Programa ( P S W ) A palavra de status de programa ( PSW ) contém vários bits de status que refletem o estado corrente da CPU. O registro PSW é acessado pelo endereço D0H e também é bit endereçável. A Figura 5.2 apresenta a estrutura do registro PSW, que reside no espaço de endereçamento de registros de função especial. D7H D6H D5H D4H D3H D2H D1H D0H CY AC F0 RS1 RS0 OV - P PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0 CY (PSW.7) - Flag de carry para bit 7 da ALU; AC (PSW.6) - Flag de carry auxiliar para bit 3 da ALU ( para operações BCD ); F0 (PSW.5) - Flag 0 - Flag de status de propósito geral ( definido pelo usuário ); RS1 (PSW.4) - Bit 1 de seleção de banco RS0 (PSW.3) - Bit 0 de seleção de banco OV (PSW.2) - Flag de overflow para operações aritméticas; - (PSW.1) - Reservado P (PSW.0) - Flag de paridade do acumulador ( 1=ímpar, 0=par ). Figura Registro PSW 11
13 Este registro contém o bit de carry, carry auxiliar para operações BCD, dois bits de seleção de banco de registros, flag de overflow, bit de paridade e dois flags de status definidos pelo usuário. O bit de carry é usado em operações aritméticas e, também, serve como acumulador para operações booleanas. Os bits RS0 e RS1 são usados para selecionar um dos quatro bancos de registros mostrados na Tabela 4.3. As instruções referem-se a estas localizações de RAM como registros de R0 a R7. A seleção de qual dos quatro bancos estará sendo utilizado é feita com base nos conteúdos de RS0 e RS1, durante o tempo de execução do programa, conforme mostra a Tabela 5.1. RS1 RS0 BANCO Endereço na RAM interna H - 07H H - 0FH H - 17H H - 1FH Tabela Seleção do banco de registros O bit de paridade reflete o número de uns do acumulador. P será 1 se o acumulador tiver um número ímpar de uns e P será 0 se ACC tiver um número par de uns. Assim, o número de uns do acumulador mais P será sempre par. O flag de overflow é afetado por operações aritméticas. Além do flags usuais, como CY, AC, OV, P, há dois flags de propósito geral que não estão associados com qualquer estado ou função da CPU. Estes são os bits PSW.5 ( F0 ) e PSW.1 ( sem nome ). O programador pode usar F0 ( PSW.5 ) como um bit de flag para aplicação definida pelo usuário. Pode ser setado ou ressetado pelo programa como uma função de alguma condição especial ou ser lido de um pino de alguma porta. Documentos da INTEL indicam que PSW.1 está reservado para uma utilização futura e é recomendado que não seja utilizado em programas Note que o PSW não tem flag ZERO, mas isto não é problema, porque o 8051 tem instrução específicas para testar se o acumulador é zero. Exemplos: JZ rel * - desvia se o acumulador for zero JNZ rel * - desvia se o acumulador não for zero * rel. = indica um byte sinalizado com complemento de dois, usado para deslocamento relativo na faixa de 128 a Registro Apontador de Pilha ( SP - Stack Pointer ) O registro SP é um registro de 8 bits. O mesmo será incrementado antes que um dado seja armazenado na pilha, durante a execução de uma instrução PUSH, ou CALL. Sendo um registro de 8 bits, a região de pilha ( stack ) irá residir no espaço de RAM interna do O SP é inicializado com o valor 07H após ocorrer o RESET. Isto faz com que a pilha inicie na localização 08H. Caso sejam usados os bancos de registradores 1, 2 e/ou 3, e seja utilizada a pilha, o SP deverá ser alterado para iniciar a pilha em outra região da RAM que não cause problemas. Neste caso, a instrução MOV SP,#novo endereço deverá aparecer no programa, preferencialmente no início. O SP é acessado pelo endereço 81H e, portanto, não é bit endereçável (os registros especiais que são endereçáveis também por bit têm seu endereço de byte terminando em 0 ou em Registro Apontador de Dados ( DPTR Data PoinTeR) O registro apontador de dados é formado por um byte alto (DPH), acessado pelo endereço 83H, e por um byte baixo (DPL), acessado pelo endereço 82H. Este registro pode ser manipulado como um registro de 16 bits (DPTR), ou como dois registros independentes de 8 bits.a principal função do DPTR é manter um endereço de 16 bits, o qual é usado para acessar memórias externas. 12
14 6. Modos de Endereçamento do 8051 Como o conjunto de instruções da família 8051 foi otimizado para aplicação de controle em 8 bits, o mesmo contém uma variedade de modos de endereçamento rápidos para acessar a RAM interna, facilitando operações de byte em pequenas estruturas de dados. 6.1 Modo de endereçamento DIRETO Neste modo o operando é especificado na instrução por um campo de endereço de 8 bits. Somente a RAM de dados interna (as primeiras 128 posições de memória) e os registros de função especial podem ser endereçados diretamente. Exemplo a: Exemplo b: MOV A, 25H A ( 25H ) ADD A, 7FH A A + ( 7FH ) Exemplo c: MOV 90H, A Obs.: 90H = Porta 1 ( 90H ) A 6.2 Modo de endereçamento de registro ou modo REGISTRADOR Os bancos de registros, contendo de R0 a R7, são acessados por certas instruções onde a especificação do registro é feita por três bits do próprio opcode (código da operação). As instruções de acesso aos registros são eficientes, visto que nenhum endereço é necessário. Quando a instrução for executada, um dos oito registros do banco selecionado será acessado. Exemplo a: Exemplo b: MOV R5, A R5 A ADD A, R0 A A + R0 6.3 Modo de endereçamento INDIRETO Neste modo, a instrução deve especificar o registro que contém o endereço do operando. As memórias interna e externa poderão ser endereçadas indiretamente. Somente R0 e R1 podem ser usados para endereçamento indireto de 8 bits, enquanto que para endereços de 16 bits é necessário utilizar-se o registro apontador de dados ( DPTR ). Exemplo a: Exemplo b: Exemplo c: R1, 15H ( R1 ) ( 15H ) ADD R0 A A + ( R0 ) DPTR, A ( DPTR ) A é utilizado para indicar endereçamento pode ser lido como endereçado pelo conteúdo de... 13
15 6.4 Modo de endereçamento de registros específicos (ESPECÍFICO A REGISTRO) Algumas instruções referem-se a certos registros. Por exemplo, algumas instruções operam o acumulador, o registro DPTR etc. Desta forma, nenhum byte de endereço será necessário, pois o opcode já define qual é o registro que será afetado. Exemplo a: Exemplo b: Exemplo c: DA A Faz o ajuste decimal do acumulador CLR A A 00H ( zera o acumulador ) INC DPTR DPTR DPTR Modo de endereçamento IMEDIATO ou CONSTANTE IMEDIATA Neste modo de endereçamento, o opcode é seguido de um valor de uma constante que será operada. Na linguagem assembly, este modo é indicado através do símbolo #. Exemplo a : MOV B, # 252 B FCH Exemplo b : MOV A, # 100 A 64H Exemplo c : MOV DPTR, # 05FEH DPTR 05FEH Obs.: # indica valor constante; Um H após a constante indica que o valor da mesma é hexadecimal, um B indica binário e quando a letra for omitida ou aparecer um D, o valor será decimal. 6.6 Modo de endereçamento INDEXADO Somente a memória de programa (ROM) poderá ser acessada (lida) com endereçamento indexado. O endereço efetivo é a soma do acumulador e um registro de 16 bits ( DPTR ou PC ). Este modo é usado para leituras de tabelas colocadas na memória de programa (ROM), como, por exemplo, tabelas de conversão ou de mensagens. Um registro base de 16 bits, como o registro DPTR ou contador de programa (PC), aponta para a base da tabela e o acumulador recebe o deslocamento dentro da tabela. Assim, o endereço de entrada da tabela será formado com a soma do conteúdo do acumulador e do registro base. Exemplo a: Exemplo b: MOVC A + DPTR A ( A+DPTR ) da ROM MOVC A + PC A ( A + PC ) da ROM Outro tipo de endereçamento indexado é usado nas instruções de case jump. Neste caso, o endereço destino do salto (jump) é calculado com a soma do conteúdo do acumulador e do conteúdo do apontador base. Assim, o valor base do endereço do salto será carregado no apontador base (DPTR), e o valor de indexação do salto que realiza a condição (case) será carregado no acumulador. Exemplo : A + DPTR Faz um salto para o endereço dador por A + DPTR PC A + DPTR 14
16 7. Reset no 8051 O reset é conseguido mantendo-se nível alto no pino 9 (RST) por, pelo menos, dois ciclos de máquina (24 pulsos de clock). Isto pode ser obtido ao alimentarmos o dispositivo, com um circuito como o apresentado na Figura 7.1. Nesta figura, a chave permite que o dispositivo seja ressetado sempre que se queira. Figura Circuito para reset do 8051 Para a versão CMOS ( 80C51 ), o resistor se torna desnecessário. Se existir, não interfere em nada. O RESET afetará os registros de função especial, de acordo com a Tabela 7.1 REGISTRO VALOR REGISTRO VALOR PC 0000 H TMOD 00 H ACC 00 H TCON 00 H B 00 H TH0 00 H PSW 00H TL0 00 H SP 07 H TH1 00 H DPTR 0000 H TL1 00 H P0 a P3 FF H ou SCON 00 H B SBUF indeterminado IP XXX00000 B PCON (NMOS) 0XXXXXXX B IE 0XX00000 B PCON (CMOS) 0XXX0000 B Tabela Registros afetados pelo Reset do 8051 A RAM não é afetada por reset forçado. Em caso de reset por inicialização, o seu valor será aleatório. 15
17 8. Clock no 8051 Para sincronização do 8051, pode-se utilizar clock externo, se houver um gerador de clock disponível, ou clock interno. As formas de sincronismo são mostradas na Figura 8.1. Freqüência de clock mínima = 3,5 MHz Freqüência de clock máxima = 33 MHz (algumas versões) e 12 MHz (mais comum) Clock interno (válido para versões NMOS e CMOS) 33pF XTAL 18 XTAL2 33pF 19 XTAL Clock externo (válido somente para versões NMOS) GERADOR DE CLOCK 18 XTAL2 19 XTAL Clock externo (válido somente para versões CMOS) NC 18 XTAL2 GERADOR DE CLOCK 19 XTAL Clock externo (válido para versões NMOS e CMOS) 18 XTAL2 GERADOR DE CLOCK 19 XTAL Figura Circuito para clock do
18 9. Interrupções no 8051 O 8051 pode ser interrompido de 5 maneiras: - pela interrupção externa 0 ( INT0 - pino P3.2 ); - pela interrupção externa 1 ( INT1 - pino P3.3 ); - pelo contador/temporizador 0; - pelo contador/temporizador 1; - pelo canal de comunicação serial. As interrupções do 8051 são VETORADAS, ou seja, têm um endereço de início da rotina de tratamento da interrupção fixo. Os vetores das interrupções são os seguintes: INTERRUPÇÃO Endereço no 8051 Endereço no kit INT0 0003H 4230H C/ T 0 000BH 4240H INT1 0013H 4250H C/ T 1 001BH 4260H SERIAL 0023H 4270H Quando atende uma interrupção, o PC é salvo no stack (pilha). O acumulador, PSW e demais registros não são salvos. As interrupções no 8051 são MASCARADAS, ou seja, podem ser desabilitadas pelo software. O registro IE (Interrupt Enable) é o registro responsável pelas habilitações das interrupções (ver Figura 9.1). AFH AEH ADH ACH ABH AAH A9H A8H A8H EA X X ES ET1 EX1 ET0 EX0 IE bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 Figura 9.1a - Registro IE - bits - EA ( Enable All ) - em 0 desabilita todas as interrupções; em 1 permite que cada interrupção seja habilitada individualmente. - ES ( Enable Serial ) - Habilita ou desabilita a interrupção pedida pelo canal de serial; 0 desabilita e 1 habilita se EA = 1; - ET1 ( Enable Timer 1 ) - Habilita ou desabilita a interrupção pedida pelo temporizador 1; 0 desabilita e 1 habilita se EA = 1; - EX1 ( Enable External 1 ) - Habilita ou desabilita a interrupção externa 1; 0 desabilita e 1 habilita se EA = 1; - ET0 ( Enable Timer 0 ) - Habilita ou desabilita a interrupção pedida pelo temporizador 0; 0 desabilita e 1 habilita se EA = 1; - EX0 ( Enable External 0 ) - Habilita ou desabilita a interrupção externa 0; 0 desabilita e 1 habilita se EA = 1; Figura 9.1b - Registro IE - função dos bits 17
19 Cada interrupção no 8051 poderá ser individualmente programada para um dos dois níveis de prioridade (0 ou 1). Isto é feito através dos bits do registro IP (Interrupt Priority) (Figura 9.2). BFH BEH BDH BCH BBH BAH B9H B8H B8H X X X PS PT1 PX1 PT0 PXO IP bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 0, Prioridade BAIXA / 1, Prioridade ALTA - PS ( Priority Serial ) - Nível de prioridade para o canal serial; - PT1 ( Priority Timer 1 ) - Nível de prioridade para o temporizador 1; - PX1 ( Priority External 1 ) - Nível de prioridade para a interrupção externa 1; - PT0 ( Priority Timer 0 ) - Nível de prioridade para o temporizador 0; - PX0 ( Priority External 0 ) - Nível de prioridade para a interrupção externa 0; Figura Registro IP - bits e função dos bits Uma interrupção de prioridade baixa poderá ser interrompida por outra de prioridade alta, mas não por outra de prioridade baixa. Uma interrupção de prioridade alta não poderá ser interrompida por qualquer outra fonte de interrupção. Se ocorrerem dois pedidos de interrupções simultaneamente (difícil de ocorrer), e ambas forem de mesma prioridade, ocorrerá uma outra seleção interna, que escolherá qual interrupção será atendida primeiro, de acordo com a Tabela 9.1. INTERRUPÇÃO Externa 0 Temporizador 0 Externa 1 Temporizador 1 Serial PRIORIDADE INTERNA MAIOR MENOR Tabela Seleção interna de prioridade de interrupções As interrupções EXTERNAS no 8051 podem ser ativadas por transição 1 para 0 (borda de descida) ou por nível (nível lógico baixo). O ajuste da forma de ativar as interrupções externas está no registro TCON (Controle do Temporizador). 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H 88H TF1 TR1 TF0 TRO IE1 IT1 IE0 IT0 TCON bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 - IT 0 = 0 - ativa a interrupção com nível lógico baixo no pino INT0 (pino P3.2); = 1 - ativa a interrupção com borda de descida no pino INT0 ; - IT 1 = 0 - ativa a interrupção com nível lógico baixo no pino INT1 (pino P3.3); = 1 - ativa a interrupção com borda de descida no pino INT1 ; - IE x - fica em 1 quando for detectado uma borda de descida (pedido de interrupção). É resetado após o atendimento da rotina de tratamento da interrupção. Obs.: * Caso a interrupção seja ativada por nível lógico baixo, o pino INTx poderá permanecer em 0 durante a execução da rotina de tratamento da interrupção (RTI), só que deve estar em 1 antes do término da RTI para evitar um novo pedido de interrupção. * Com interrupção acionada por borda de descida, o pino correspondente deverá ficar em zero por pelo menos 12 períodos de clock. 18
20 10. Temporizadores e Contadores no 8051 O 8051 possui internamente 2 Contadores/Temporizadores denominados de Temporizador 0 (T0) e Temporizador 1 (T1). Ambos podem ser configurados para operar como temporizador ou contador de eventos, individualmente. Podem ter sua operação habilitada por software ou hardware. Na função de temporizador, um registro será incrementado a cada ciclo de máquina. Como cada ciclo de máquina consiste em 12 períodos do clock, a taxa de contagem será de 1/12 da freqüência do clock. Na função de contador, um registro será incrementado em resposta a uma transição de 1 para 0 (borda de descida) de seu correspondente pino de entrada externa, T0 (P3.4) e T1 (P3.5). Nesta função, os pinos externos (T0 e T1) são amostrados a cada ciclo de máquina. Quando uma amostragem indicar um nível alto em um ciclo de máquina e um nível baixo no próximo ciclo, o contador será incrementado. A máxima taxa de contagem será, portanto, de 1/24 da freqüência do clock, visto que são necessários dois ciclos de máquina para o reconhecimento de uma transição de 1 para 0. A operação dos Contadores/Temporizadores pode ser feita de quatro formas possíveis (modos 0, 1, 2 ou 3), sendo o registro TMOD responsável pela seleção do modo. TMOD também seleciona se o Temporizador/Contador irá operar como temporizador ou como contador. O registro TMOD é dividido em duas partes iguais que controlam o TEMPORIZADOR 1 e o TEMPORIZADOR 0. O registro TMOD é acessado pelo endereço 89H e não é bit endereçável. O registro TMOD é mostrado abaixo, assim como a função de cada bit. GATE.1 C/ T.1 M1.1 M0.1 GATE.0 C/ T.O M1.0 M0.0 89H bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 Bit 0 Controle do C/T 1 Controle do C/T 0 C/ T.x - Seleciona a função, TEMPORIZADOR (timer) ou CONTADOR. Será selecionado como TEMPORIZADOR se este bit estiver em 0. Se em 1 a operação será como CONTADOR. GATE.x - Quando GATE.x = 1 e TRx = 1, o temporizador irá operar somente enquanto o pino INTx (pinos P3.2 e P3.3) = 1 (controle por circuito). Quando GATE.x = 0, o temporizador irá operar somente quando TRx = 1 (controle por software). Obs.: TRx é um bit de TCON (palavra de controle do Contador/Temporizador) que será vista a seguir. M1.x e M0.x Bits de seleção de modo de operação. O registro TCON (Timer CONtrol Controle do Temporizador) é mostrado abaixo. TCON é um registro acessado pelo endereço 88H e é bit endereçável. 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 88H TCON.7 TCON.6 TCON.5 TCON.4 TCON.3 TCON.2 TCON.1 TCON.0 - TFx = Bit de overflow do temporizador. É ativado ( setado ) pelo circuito quando ocorrer um overflow no temporizador, gerando um pedido de interrupção. É ressetado pelo hardware após terminada a rotina de interrupção. - TRx = Bit de controle de operação do temporizador. É o bit que liga e desliga o C/T. Para ligar o temporizador, o software deverá setar este bit, e para desligar deverá ressetá-lo. 19
21 10.1 Modos de Operação dos Contadores / Temporizadores M 1.x M 0.x Modo de operação Característica 0 0 Modo 0 C/T de 13 bits 0 1 Modo 1 C/T de 16 bits 1 0 Modo 2 C/T de 8 bits com recarga automática 1 1 Modo 3 1 C/T de 8 bits e 1 Temporizador MODO 0 Contador / Temporizador de 13 bits (8 bits com divisor de freqüência por 32) Neste modo, o registro do temporizador será configurado como um registro de 13 bits. Quando o registro TH1 (ou TH0) mudar de FFH para 00H, o mesmo habilita a solicitação de interrupção do temporizador, através de o bit TF1 (ou TF0) do registro de função especial TCON (88H). O registro de 13 bits é composto por todos os bits de TH1 ou TH0, e pelos 5 bits menos significativos de TL1 ou TL0. Estes 5 bits possibilitam a divisão por 32. Os 3 bits mais significativos de TL1 e TL0 são indeterminados e devem ser ignorados em caso de leitura. A habilitação de operação do temporizador através de TRx não limpa estes registros. Os registros TH1, TH0, TL1 e TL0 estão localizados na região dos registros de função especial e são acessados pelos endereços 8DH (TH1), 8CH (TH0), 8BH (TL1) e 8AH (TL0). Estes registros não são bit endereçáveis. No modo 0, a operação do temporizador poderá ser controlada por programação (software) ou por circuito externo (hardware). O controle por circuito externo será realizado colocando-se o bit TRx em 1, o bit GATE.x em 1 e a entrada INTx em 1. Desta maneira, será possível que a temporização seja controlada externamente por INTx. Isto possibilita a medição de largura de pulsos, pois o temporizador somente opera enquanto o pino INTx estiver em nível alto. O controle por programação será realizado colocando-se o bit GATE.x em 0 e colocando-se TRx em 1. Neste caso, o bit TRx atua como habilitador de operação do temporizador. Para realizar uma temporização, o registro THx deverá receber o valor inicial da contagem (via software) e, dessa forma, ao ligar o temporizador (através de TRx), o mesmo conta até FFH e em seguida avança para 00H (overflow). Ao ocorrer o overflow nesse registro, o C/T em questão fará um pedido de interrupção, que será ou não aceito pela CPU. O valor deste registro poderá ser lido a qualquer momento pelo software. O sinal de contagem (clock interno ou externo) será dividido por 32. Desta maneira, para que o registro THx seja incrementado, deverá ter ocorrido 32 pulsos. Quando ocorrer overflow (na troca de THx de FFH para 00H), um pedido de interrupção será feito. Caso a interrupção esteja habilitada, desejando-se fazer uma nova temporização ou contagem, os registros THx e TLx deverão ser novamente carregados. Neste modo,a freqüência é dividida por 32 (TLx) e pode-se contar no máximo até 256 (THx). Portanto, este modo permite contar até 8192 (256x32) MODO 1 Contador / Temporizador de 16 bits Neste modo de operação, o Contador/Temporizador será de 16 bits, sendo utilizado os registros TH1 e TL1 ou TH0 e TL0 para formar estes 16 bits. Desta forma, pode-se contar de 0000H até FFFFH (65536 contagens). O valor inicial da contagem deverá ser programado por software. Quando ocorrer overflow (passar de FFFFH para 0000H), será feito um pedido de interrupção. Assim como no modo 0, o valor inicial de uma nova contagem deverá ser carregado na rotina de interrupção, se esta estiver habilitada. 20
22 MODO 2 Contador / Temporizador de 8 bits com recarga automática Neste modo, os registros TL1 e TL0 são responsáveis pela contagem e TH1 e TH0 retêm o valor a ser carregado nos registros TL1 e TL0, quando ocorrer overflow. Mesmo com a recarga automática do valor da contagem, os registros TH1 e TH0 podem ser alterados a qualquer momento. Neste modo de funcionamento, temos um sistema no qual não há necessidade de reescrever por software o valor a ser contado. Aqui, escreve-se no registro TLx, o valor inicial da contagem, e em THx o valor inicial da próxima contagem. Ao ocorrer o overflow em TLx, o sistema gera a interrupção e automaticamente recarrega em TLx o valor contido em THx, e prossegue incrementando sob comando do sinal externo (contador) ou interno (temporizador). Devido à recarga automática, não é necessário que seja feita a carga do valor inicial na rotina de interrupção MODO 3 1 Contador / Temporizador de 8 bits e 1 Temporizador de 8 bits O modo 3 apresenta comportamentos diferentes para os dois temporizadores. Em T0, TL0 e TH0 operarão como dois contadores separados. TL0 usa os bits de controle do temporizador 0, ou seja, usa os bits C/ T.0, GATE.0, TR0, TF0 e INT0 e pode operar como contador ou temporizador. TH0 opera somente como temporizador e usa os bits de controle TR1 e TF1 do temporizador 1. Assim, TH0 controla a interrupção do temporizador 1. O temporizador 1 permanece com a sua contagem (mantém TH1 e TL1) quando no modo 3. Fica desligado, ou seja, é como se o TR1 estivesse em 0. Quando configurado para outro modo (com T0 no modo 3) funciona normalmente, mas fica permanentemente ligado, ou seja, como se TR1 = 1. O temporizador 1 poderá então ser usado em aplicações que não necessitem de interrupções, como, por exemplo, geração de taxa de transmissão para a porta serial. Obs.: Para ativar as interrupções dos Contadores/Temporizadores, os bits EA, ET1 e ET0 do registro IE (Interrupt Enable) deverão ser ajustados. Para habilitar a interrupção do C/T 1, além do bit EA =1, ET1 = 1 e para o C/T 0, EA =1 e ET0 = 1. 21
23 11. O Canal Serial no 8051 O 8051 permite comunicação serial full-duplex (à exceção do modo 0 de operação), através dos pinos RXD (P3.0) e TXD (P3.1). A comunicação serial é controlada pelo registro especial SCON (Serial CONtrol), o qual é mostrado na Figura FH 9EH 9DH 9CH 9BH 9AH 99H 98H SCON SM0 SM1 SM2 REN TB8 RB8 TI RI 98H SCON.7 SCON.6 SCON.5 SCON.4 SCON.3 SCON.2 SCON.1 SCON.0 Figura Registro SCON Como a função dos bits SCON.0 a SCON.5 depende do modo de operação do canal serial (controlado pelos bits SCON.6 e SCON.7), a explicação sobre os mesmos será feita em função do modo de operação. A Tabela 11.1 mostra cada um dos modos de operação. SM0 SM1 Modo de operação Taxa de Transmissão 0 0 Modo 0 FreqClock/ Modo 1 Variável 1 0 Modo 2 FreqClock/32 ou FreqClock/ Modo 3 Variável Tabela Modos de operação do canal serial Tanto a transmissão quanto a recepção utilizam o registro especial SBUF (Serial BUFfer), cujo endereço de byte é 99H. Quer dizer, para a transmissão, é necessária uma escrita no endereço 99H, enquanto que para recepção é necessária uma leitura no referido endereço. Mas é importante salientar que existem dois registradores físicos distintos SBUF, um para transmissão (acessado por escrita) e outro para recepção (acessado por leitura), o que permite comunicação FULL-DUPLEX. Ainda, o SBUF receptor é de dois estágios, o que significa que se pode começar a receber um segundo byte sem que o byte previamente recebido tenha sido lido. Entretanto, se o primeiro byte não for lido e o segundo byte for completamente recebido, um dos dois será perdido Canal serial operando no Modo 0 Este é o único modo em que a operação é síncrona. Desta forma, o pino TXD (P3.1) é utilizado para o envio do sinal de clock de sincronismo, enquanto que o pino RXD (P3.0) é utilizado para transmissão ou recepção. Como mostra a Tabela 11.1, a taxa de transmissão é fixa no modo 0, sendo de 1/12 da freqüência de clock do sistema. Como este valor é relativamente alto, deve-se ter especial cuidado com ruídos Funções dos demais bits do SCON no Modo 0 SM2 - não tem função. Deve ficar em 0. REN - em 1 habilita a recepção. Em 0 desabilita a recepção e o pino RXD (P3.0) pode ser utilizado como I/O. TB8 - sem função. RB8 - sem função TI - flag de requisição de interrupção de transmissão. É setado pelo hardware após a transmissão do oitavo bit de dados. Deve ser zerado pelo software da rotina de transmissão para permitir novas interrupções. RI - flag de requisição de interrupção de recepção. É setado pelo hardware após a recepção do oitavo bit de dados. Deve ser zerado pelo software da rotina de recepção para permitir novas interrupções. 22
24 11.2 Canal serial operando no Modo 1 O modo 1, assim como os modos 2 e 3, permite operação full-duplex com TXD (P3.1) usado para transmissão e RXD (P3.0) usado para recepção. Em cada pacote são transmitidos/recebidos 10 bits, sendo 1 start bit (nível 0), 8 bits de dados (vão para o SBUF) e um stop bit (nível 1) Funções dos demais bits do SCON no Modo 1 SM2 - não permitirá a geração do pedido de interrupção se estiver em 1 e se o stop bit recebido for ilegal. REN - em 1 habilita a recepção. Em 0 desabilita a recepção e o pino RXD (P3.0) pode ser utilizado como I/O. TB8 - sem função. RB8 - indica o estado do stop bit recebido, se SM2 estiver em 0. TI - flag de requisição de interrupção de transmissão. É setado pelo hardware ao início do stop bit. Deve ser zerado pelo software da rotina de transmissão para permitir novas interrupções. RI - flag de requisição de interrupção de recepção. É setado pelo hardware durante a recepção do stop bit. Deve ser zerado pelo software da rotina de recepção para permitir novas interrupções Geração da taxa de transmissão Como pode ser visto pela Tabela 11.1, a taxa de transmissão nos modos 1 e 3 é variável. A mesma é fornecida pelo Temporizador 1, através de overflow. O bit SMOD do registro especial PCON (o qual tem 87H como endereço de byte) 1 também influencia na taxa de transmissão, a qual pode ser obtida pela fórmula abaixo: 2 Taxa = 32 SMOD FreqClok 12 n 1 contagenst 1 Exemplo: Para obter uma taxa de 4800 BPS com um cristal de freqüência 11,059MHz, pode-se fazer SMOD=1 para obter n contagenst1 = 2 x 11, x 12 x 4800 = 12 contagens O que pode ser obtido com T1 operando no modo 2 (temporizador de 8 bits com recarga automática) com TH1 valendo = 244 = F4H, onde 256 é o numero máximo com 8 bits e TH1 indica o valor inicial do contador. A Tabela 11.2 relaciona valores que podem ser utilizados para a obtenção de taxas de transmissão usuais, considerando-se T1 no modo 2 e SMOD=0. Taxa (BPS) Recarga/TH1 (decimal) Recarga/TH1 (hexadecimal) A0H D0H E8H F4H FAH FDH Tabela Obtenção de valores usuais de taxas de transmissão para T1 no modo 2 e SMOD= Canal serial operando no Modo 2 O modo 2, assim como os modos 1 e 3, permite operação full-duplex com TXD (P3.1) 1 ATENÇÃO: o registro PCON não é bit endereçável. Assim, para se alterar o seu bit7 é necessário fazer-se uma escrita de um byte completo, o que altera os outros bits (os bits b0 a b3 têm funções nas versões CMOS). 23
25 usado para transmissão e RXD (P3.0) usado para recepção. Na recepção, em cada pacote são recebidos 11 bits, sendo 1 start bit (nível 0), 8 bits de dados (no SBUF), um nono bit de dado que vai para o RB8 e um stop bit (nível 1). Na transmissão, o 9º bit de dado a ser enviado deve ser escrito no TB8. A taxa de transmissão será de 1/32 (com o bit SMOD do registro especial PCON, o qual tem 87H como endereço de byte, em 1) ou de 1/64 (com SMOD em 0) da freqüência de clock do sistema Funções dos demais bits do SCON no Modo 2 SM2 REN TB8 RB8 TI RI - habilita ou não a comunicação entre vários 8051s (de modo geral é setado para comunicação multiprocessador). Não permitirá a geração do pedido de interrupção se estiver em 1 e se o nono bit de dados for zero. - em 1 habilita a recepção. Em 0 desabilita a recepção e o pino RXD (P3.0) pode ser utilizado como I/O. - indica o estado do nono bit de dados a ser transmitido. Pode ser setado ou zerado por software. - indica o estado do nono bit de dados recebido. - flag de requisição de interrupção de transmissão. É setado pelo hardware ao início do stop bit. Deve ser zerado pelo software da rotina de transmissão para permitir novas interrupções. - flag de requisição de interrupção de recepção. É setado pelo hardware durante a recepção do stop bit. Deve ser zerado pelo software da rotina de recepção para permitir novas interrupções Canal serial operando no Modo 3 O modo 3 é idêntico ao modo 2, com exceção à taxa de transmissão, que é variável e pode ser obtida como apresentada no item Comunicação entre CIs 8051 Para a comunicação entre um 8051 mestre e vários 8051 escravos, utiliza-se os mesmos no modo 2 ou no modo 3, sendo que o TXD do mestre deve ser ligado no RXD de todos escravos e o RXD do mestre deve ser ligado no TXD de todos os escravos. Como a interrupção do canal serial só será atendida se SM2=1 e RB8=1, o protocolo para comunicação é o seguinte: Todos os escravos partem com SM2=1. Quando o mestre deseja transmitir, envia um byte de endereço do escravo de destino com 1 no nono bit de dados. Como todos os escravos recebem o nono bit em nível alto, todos passarão a ter SM2=1 e RB8=1, portanto todos vão entrar na rotina de interrupção para verificar se trata-se do seu endereço. O escravo com endereço correto zera seu SM2, impossibilitando nova chamada à rotina de interrupção até que a transmissão esteja concluída. Os dados enviados para o escravo escolhido não acionarão interrupções nos demais, pois possuem o nono bit em nível baixo. 24
26 12. O assembly do 8051 SÍMBOLOS UTILIZADOS * Rn Indica Registro R0 a R7 genericamente, dependendo de n. * Ri Indica Registro R0 ou R1, dependendo de i. Significa endereçado pelo valor de.... * #Dado Indica valor constante de 8 bits. * #Dado 16 Indica valor constante de 16 bits. * Direto Indica um endereço de memória de 8 bits (256 posições internas - RAM interna e Registros de Função Especial). * rel Indica que endereçamento é relativo. *? Indica que o flag indicado é afetado pela instrução e depende do resultado INSTRUÇÕES DE TRANSFERÊNCIA DE DADOS MOV A,Rn Move o Registro n para o Acumulador. (1 byte 12 pulsos); MOV A,Direto Move o conteúdo da posição de memória para o Acumulador. (2 bytes 12 pulsos); MOV A,@Ri Move o conteúdo da RAM interna endereçada por Ri para o Acumulador. (1 byte 12 pulsos); MOV A,#Dado Move o Dado para o Acumulador. (2 bytes 12 pulsos); MOV Rn,A Move o conteúdo do Acumulador para o Registro n. (1 byte 12 pulsos); MOV Rn,Direto Move o conteúdo da memória para o Registro n. (2 bytes 24 pulsos); MOV Rn,#Dado Move o Dado para o Registro n. (2 bytes 12 pulsos); MOV Direto,A Move o conteúdo do Acumulador para a posição de memória. (2 bytes 12 pulsos); MOV Direto,Rn Move o conteúdo do Registro n para a posição de memória. (2 bytes 24 pulsos); MOV Direto1,Direto2 Move o conteúdo da posição de memória 2 para a posição de memória 1. (3 bytes 24 pulsos); MOV Direto,@Ri Move o conteúdo da posição de memória endereçada por Ri para a posição de memória destino. (2 bytes 24 pulsos); MOV Direto,#Dado Move o Dado para a posição de memória. (3 bytes 24 pulsos); Move o conteúdo do Acumulador para a posição de memória endereçada por Ri. (1 byte 12 pulsos); Move o conteúdo da posição de memória fonte para a posição de memória endereçada por Ri. (2 bytes 24 pulsos); Move o Dado para a posição de memória endereçada por Ri. (2 bytes 12 pulsos); MOV DPTR,#Dado 16 Move o Dado de 16 bits para o Registro DPTR. (3 bytes 24 pulsos); MOVC A,@A+DPTR Move o conteúdo da posição de memória da ROM endereçada por A + DPTR. O endereço fonte é de 16 bits. (1 byte 24 pulsos); MOVC A,@A+PC Move o conteúdo da posição de memória da ROM endereçada por A + PC. O endereço fonte é de 16 bits. (1 byte 24 pulsos); MOVX A,@Ri Move o conteúdo da posição de memória da RAM externa endereçada por Ri para o Acumulador. (1 byte 24 pulsos); MOVX A,@DPTR Move o conteúdo da posição de memória da RAM externa endereçada por DPTR para o Acumulador. (1 byte 24 pulsos); Move o conteúdo do Acumulador para a posição de memória da RAM externa endereçada por Ri. (1 byte 24 pulsos); Move o conteúdo do Acumulador para a posição de memória da RAM externa endereçada por DPTR. (1 byte 24 pulsos); 25
27 PUSH Direto Coloca na pilha o conteúdo da posição de memória. Incrementa primeiro o SP (Stack Pointer) e escreve na pilha. (2 bytes 24 pulsos); POP Direto Retira da pilha o Dado e coloca na posição de memória. Decrementa o SP (2 bytes 24 pulsos); XCH A,Rn Troca entre si os conteúdo do Acumulador e do Registro n. (1 byte 12 pulsos); XCH A,Direto Troca entre si os conteúdo do Acumulador e da posição de memória. (2 bytes 12 pulsos); XCH A,@Ri Troca entre si os conteúdo do Acumulador e da posição de memória endereçada por Ri. (1 byte 12 pulsos); XCHD A,@Ri Troca os nibbles menos significativos do conteúdo do Acumulador e da posição de memória endereçada por Ri. (1 byte 12 pulsos) INSTRUÇÕES PARA VARIÁVEIS BOOLEANAS CLR C CLR Bit SETB C SETB Bit CPL C CPL Bit ANL C,Bit ANL C,/Bit ORL C,Bit ORL C,/Bit MOV C,Bit MOV Bit,C JC rel JNC rel JB Bit, rel JNB Bit,rel JBC Bit,rel Zera o Carry. (1 byte 12 pulsos) (CY=0); Zera o bit Endereçado. (2 bytes 12 pulsos); Seta o Carry. (1 byte 12 pulsos) (CY=1); Seta o bit endereçado. (2 bytes 12 pulsos); Complementa (inverte) o Carry. (1 byte 12 pulsos) (CY=?); Complementa (inverte) o bit endereçado. (2 bytes 12 pulsos); Operação AND entre o Carry e o bit endereçado. (2 bytes 24 pulsos) (CY=?); Operação AND entre o Carry e o complemento do bit endereçado. (2 bytes 24 pulsos) (CY=?); Operação OR entre o Carry e o bit endereçado. (2 bytes 24 pulsos) (CY=?); Operação OR entre o Carry e o complemento do bit endereçado. (2 bytes 24 pulsos) (CY=?); Move o bit endereçado para o Carry. (2 bytes 12 pulsos) (CY=?) Move o Carry para o bit endereçado. (2 bytes 24 pulsos); Salta se o Carry for 1. O jump é relativo. (2 bytes 24 pulsos); Salta se o Carry for 0. O jump é relativo. (2 bytes 24 pulsos); Salta se o bit endereçado estiver em 1. (3 bytes 24 pulsos); Salta se o bit endereçado estiver em 0. (3 bytes 24 pulsos); Salta se o bit endereçado estiver em 1 depois zera o bit. (3 bytes 24 pulsos) INSTRUÇÕES ARITMÉTICAS ADD A,Rn ADD A,Direto ADD A,@Ri ADD A,#Dado ADDC A,Rn ADDC A,Direto ADDC A,@Ri ADDC A,#Dado SUBB A,Rn SUBB A,Direto Soma o conteúdo do Registro n ao Acumulador. (1 byte 12 pulsos) (CY=?, AC=?, OV=?); Soma o conteúdo da posição de memória ao Acumulador. (2 bytes 12 pulsos) (CY=?, AC=?, OV=?); Soma o conteúdo da posição de memória endereçada por Ri ao Acumulador. (1 byte 12 pulsos) (CY=?, AC=?, OV=?); Soma o Dado ao Acumulador.(2 bytes 12 pulsos) (CY=?, AC=?, OV=?); Soma o conteúdo do Registro n e o Carry ao Acumulador. (1 byte 12 pulsos) (CY=?, AC=?, OV=?); Soma o conteúdo da posição de memória e o Carry ao Acumulador. (2 bytes 12 pulsos) (CY=?, AC=?, OV=?); Soma o conteúdo da posição de memória endereçada por Ri e o Carry ao Acumulador. (1 byte 12 pulsos) (CY=?, AC=?, OV=?); Soma o Dado e o Carry ao Acumulador. (2 bytes 12 pulsos) (CY=?, AC=?, OV=?); Subtrai o conteúdo do Registro n e o Carry do Acumulador. (1 byte 12 pulsos) (CY=?, AC=?, OV=?); Subtrai o conteúdo da posição de memória e o Carry do Acumulador. (2 bytes 12 pulsos) (CY=?, AC=?, OV=?); 26
28 SUBB SUBB A,#Dado INC A INC Rn INC Direto DEC A DEC Rn DEC Direto INC DPTR MUL AB DIV AB DA A Subtrai o conteúdo da posição de memória endereçada por Ri e o Carry do Acumulador. (1 bytes 12 pulsos) (CY=?, AC=?, OV=?); Subtrai o Dado e o Carry do Acumulador. (2 bytes 12 pulsos) (CY=?, AC=?, OV=?); Incrementa o Acumulador. (1 byte 12 pulsos); Incrementa o Registro n. (1 byte 12 pulsos); Incrementa o conteúdo da posição de memória. (2 bytes 12 pulsos); Incrementa o conteúdo da posição de memória endereçada por Ri. (1 byte 12 pulsos); Decrementa o Acumulador. (1 byte 12 pulsos). Decrementa o Registro n. (1 byte 12 pulsos); Decrementa o conteúdo da posição de memória. (2 bytes 12 pulsos); Decrementa o conteúdo da posição de memória endereçada por Ri. (1 byte 12 pulsos); Incrementa o DPTR. (1 byte 24 pulsos); Multiplica A e B. O resultado fica: parte mais significativa em B e menos significativa no Acumulador. (1 byte 48 pulsos) (CY=0, OV=?); Divide A por B. O resultado fica: a parte inteira no Acumulador e o resto em B. (1 byte 48 pulsos) (CY=0, OV=0*) *OV=1 caso B inicialmente seja 00H; Faz o ajuste decimal do Acumulador. (1 byte 12 pulsos) (CY=?, AC=?) INSTRUÇÕES DE DESVIO ACALL End 11 Chama sub-rotina numa faixa de 2 Kbytes da atual posição. (2 bytes 24 pulsos); LCALL End 16 Chama sub-rotina em qualquer posição da memória de programa (ROM).(3 bytes 24 pulsos); RET Retorno de sub-rotina. (1 byte 24 pulsos); RETI Retorno de rotina de interrupção. (1 byte 24 pulsos); AJMP End 11 Salta para outro endereço numa faixa de 2 Kbytes da atual. (2 bytes 24 pulsos); LJMP End 16 Salta para qualquer posição de memória de programa (ROM). (3 bytes 24 pulsos); SJMP rel Salto curto relativo, até 127 posições para frente ou 128 para trás. (2 bytes 24 pulsos); Salta para o endereço A + DPTR. (1 byte 24 pulsos); JZ rel Salta se o Acumulador for zero. (2 bytes 24 pulsos); JNZ rel Salta se o Acumulador não for zero. (2 bytes 24 pulsos); CJNE A, Direto, rel Compara e salta se o Acumulador for diferente da memória endereçada. (3 bytes 24 pulsos) (CY=?); CJNE A,#Dado,rel Compara e salta se o Acumulador for diferente do Dado. (3 bytes 24 pulsos) (CY=?); CJNE Rn,#Dado,rel Compara e salta se o Registro n for diferente do Dado. (3 bytes 24 pulsos) (CY=?); rel Compara e salta se o conteúdo da RAM interna endereçada for diferente do Dado. (3 bytes 24 pulsos) (CY=?); DJNZ Rn,rel Decrementa o Registro n e salta se for diferente de zero. (2 bytes 24 pulsos); DJNZ Direto,rel Decrementa o conteúdo da posição de memória e salta se for diferente de zero. (3 bytes 24 pulsos); NOP Nenhuma operação. (1 byte 12 pulsos). 27
29 INSTRUÇÕES LÓGICAS ANL A,Rn Executa a operação AND entre o Acumulador e o Registro n. (1 byte 12 pulsos); ANL A,Direto Executa a operação AND entre o Acumulador e o conteúdo da posição de memória. (2 bytes 12 pulsos); ANL A,@Ri Executa a operação AND entre o Acumulador e o conteúdo da posição de memória endereçada por Ri. (1 byte 12 pulsos); ANL A,#Dado Executa a operação AND entre o Acumulador e o Dado. (2 bytes 12 pulsos); ANL Direto,A Executa a operação AND entre o conteúdo da posição endereçada e o Acumulador. O Resultado fica na posição endereçada. (2 bytes 12 pulsos); ANL Direto,#Dado Executa a operação AND entre a posição de memória endereçada e o Dado. (3 bytes 24 pulsos); ORL A,Rn Executa a operação OR entre o Acumulador e o Registro n. (1 byte 12 pulsos); ORL A,Direto Executa a operação OR entre o Acumulador e o conteúdo da posição de memória. (2 bytes 12 pulsos); ORL A,@ Ri Executa a operação OR entre o Acumulador e o conteúdo da posição de ORL A,#Dado memória endereçada por Ri. (1 byte 12 pulsos); Executa a operação OR entre o Acumulador e o Dado. (2 bytes 12 pulsos); ORL Direto,A Executa a operação OR entre o conteúdo da posição endereçada e Acumulador. O Resultado fica na posição endereçada. (2 bytes 12 pulsos); ORL Direto,#Dado Executa a operação OR entre a posição de memória endereçada e o Dado.(3 bytes 24 pulsos); XRL A,Rn XRL A,Direto XRL A,@Ri XRL A,#Dado XRL Direto,A XRL Direto,#Dado CLR A CPL A RL A RLC A RR A RRC A Executa a operação OU EXCLUSIVO entre o Acumulador e o Registro n. (1 byte 12 pulsos); Executa a operação OU EXCLUSIVO entre o Acumulador e o conteúdo da posição de memória. O resultado fica no Acumulador. (2 bytes 12 pulsos); Executa a operação OU EXCLUSIVO entre o Acumulador e o conteúdo da posição de memória endereçada por Ri. (1 byte 12 pulsos); Executa a operação OU EXCLUSIVO entre o Acumulador e o Dado. (2 bytes 12 pulsos); Executa a operação OU EXCLUSIVO entre o conteúdo da posição de memória e o Acumulador O resultado fica na posição de memória. (2 bytes 12 pulsos); Executa a operação OU EXCLUSIVO entre o conteúdo da posição de memória e o Dado. O resultado fica na posição de memória. (3 bytes 24 pulsos); Zera o Acumulador. (1 byte 12 pulsos); Complementa o Acumulador. (1 byte 12 pulsos); Desloca o Acumulador à esquerda. (1 byte 12 pulsos); Desloca o Acumulador à esquerda através do Carry. (1 byte 12 pulsos) (CY=?); Desloca o Acumulador à direita. (1 byte 12 pulsos); Desloca o Acumulador à direita através do Carry. (1 byte 12 pulsos) (CY=?); SWAP A Troca o nibble inferior do Acumulador com o superior. Equivale a 4 vezes RR A ou RL A. (1 byte 12 pulsos). 28
30 13. Exercícios Responda as questões: 1 Relacione microprocessador com microcontrolador. 2 Cite vantagens dos microcontroladores sobre os microprocessadores. 3 Em que tipo de memória é gravado o programa de um microcontrolador? 4 Quais os tipos de memórias de programa utilizadas em microcontroladores? Cite diferenças entre elas. 5 Cite as principais características do microcontrolador Por que se fala muito em microcontrolador 8051 mas não utiliza-se, aqui, o CI 8051? 7 Por que não se pode utilizar o CI 8031 no modo mínimo? 8 Quais as diferenças entre os CIs 8051, 8031 e 8751? 9 Cite e descreva os 2 modos básicos de funcionamento do Em relação à questão 9, qual o modo de funcionamento é mais vantajoso de se utilizar? 11 Qual a função dos pinos EA, ALE e PSEN? 12 Como o 8051 consegue utilizar uma mesma porta como saída de endereços e entrada/saída de dados? 13 Quais as possibilidades de combinações entre os pinos ALE, PSEN, RD e WR? O que ocorre em cada uma delas? 14 Qual a máxima quantidade de memória que se pode acessar, utilizando o 8051? 15 Sabendo que existem endereço iguais para as memórias ROM, RAM interna e RAM externa, como o 8051 não confunde esses endereços? 16 Descreva como funciona a pilha no Descreva as regiões da RAM interna do Para que servem os bits endereçáveis? 19 Quais Registros de Função Especial são bits endereçáveis? Cite uma maneira de identificálos. 20 Descreva o registro PSW. 21 Como se faz a seleção dos bancos de registradores ( R0 a R7 )? 22 Quais os modos de endereçamento do 8051? Comente cada um. 23 Em que estado ficam os pinos das portas quando ocorre o reset? 29
31 24 O que é necessário para realizar o reset? 25 O que acontece com a memória RAM quando se realiza um reset? 26 Logo após um reset, qual posição da ROM passa a ser apontada? 27 Escreva a(s) instrução(ões) que realiza(m) as funções pedidas abaixo: a) Carrega o valor 81H no acumulador; b) Carrega o conteúdo da posição 30H da RAM interna no acumulador; c) Escreve, na posição 51H da RAM interna, o conteúdo do acumulador; d) Carrega o Registrador 5 com o valor 87H; e) Carrega o acumulador com o conteúdo do Registrador 3; f) Carrega a posição 31H da RAM interna com o valor 80H; g) Transfere o conteúdo da posição 20H da RAM interna para a posição 10H da mesma memória; h) Carrega no acumulador o conteúdo da posição de memória (RAM interna) endereçada pelo Registrador 1; i) Carrega no acumulador o conteúdo da posição de memória (RAM externa) endereçada pelo Registrador 1; j) Carrega no acumulador o conteúdo da posição 1234H da RAM externa; k) Transfere para a posição 5678H da RAM externa o conteúdo do acumulador; l) Transfere o conteúdo da posição 1357H da ROM para o Registrador 0; m) Lê o valor do bit 3 da porta 1 e guarda no bit 00H; n) Salta se o bit 2 da Porta 3 for 1 ; o) Salta se o bit 7 da Porta 1 for 0 ; p) Realiza a operação AND entre o carry e o bit 5 da Porta 3; q) Realiza a operação OR entre os bits 00H e 01H e guarda o resultado no bit 03H; r) Soma os valores 12H com 34H e guarda o resultado no Registrador 0; s) Incrementa o conteúdo da posição 60H da RAM interna; t) Salta incondicionalmente para a posição 0000H; u) Salta se acumulador for diferente de AAH; v) Salta para o posição 6789H se acumulador for igual ao Registrador 7; w) Decrementa o conteúdo da posição 7FH e salta se for 00H; x) Realiza a operação AND entre as posições 78H e 79H e coloca o resultado na posição 7AH; y) Realiza a operação OR entre o Registrador 4 e o valor 55H; z) Zera o acumulador; aa) Complementa os 4 bits menos significativos do acumulador; bb) Complementa todo o conteúdo do acumulador; cc) Habilita o banco de registradores 2; dd) Habilita o banco de registradores 1; ee) Coloca em nível lógico alto o pino P1.0; ff) Coloca em nível baixo o pino P3.7; gg) Salta se no pino P1.1 tiver nível alto; hh) Salta se o pino P1.5 estiver em nível baixo; ii) Realiza a operação AND entre as posições 9876H e 5432H da RAM externa e coloca o resultado na posição 8642H; jj) Altera a região da pilha, fazendo-a começar na posição 67H; kk) Coloca na pilha o conteúdo da posição 0003H da ROM; ll) Salta se acumulador for zero; Complete as lacunas 28 O 8051 pode operar no modo mínimo (também conhecido como modo microcomputador) ou no modo expandido (também conhecido como modo microprocessador). 30
32 a) No modo mínimo, o mesmo tem que ter o pino ( EA / PSEN / ALE) ligado constantemente a nível lógico (alto / baixo). Ainda, no modo mínimo, tem-se disponível (4K / 8K / 2K) bytes de memória de programa e (64 / 128 / 256) bytes de memória de dados, além de poder-se contar também com as portas (P1 e P3 / P0 e P3 / P0 e P2) para entrada/saída. b) No modo expandido, tem-se, no máximo, (64K / 32K / 16K) bytes de memória de programa e no máximo (64K / 32K / 16K / 64K / 32K / 16K) bytes de memória de dados. 29 A família 8051 é constituída por mais de 100 dispositivos distintos. O 8051 propriamente dito possui uma ROM interna. Se for de tecnologia CMOS, chamar-se-á 80C51. a) A versão sem R0M interna para o 80C51 chama-se, a versão com uma EPROM chama-se e a versão com uma EEPROM interna chama-se. b) O 87C52 possui (128 / 256 / 8K) bytes de RAM interna e (4K / 8K / 64K) bytes de (ROM / EPROM / EEPROM) interna. 30 Através de modos de endereçamento diferentes, o 8052 pode acessar posições físicas distintas que possuem o mesmo endereço hexadecimal. a) Os registros de função especial (SFRs) só podem ser acessados por endereçamento, enquanto que a RAM interna de H a H somente pode ser acessada por endereçamento. b) As instruções de movimento (MOVE) de dados de acesso a RAM interna têm como mnemônico o, as (MOVE) de acesso a RAM externa têm como mnemônico o e só podem ser utilizadas com endereçamento, enquanto que as (MOVE) de acesso a memória de programa, interna ou externa, têm como mnemônico o e só podem ser utilizadas com endereçamento. 31 Os registros de função especial com endereço de byte terminando em ou em têm bits endereçáveis, sendo que o endereço do bit (mais / menos) significativo coincide com o endereço de byte do registro. 32 O reset do 8051 afeta vários registros especiais. Imediatamente após o reset, se não fizermos nenhuma alteração nos SFRs, alguns cuidados devem ser tomados. a) O Stack Pointer é inicializado com o valor H. Isto significa que, caso não alteremos o valor do mesmo e formos utilizar uma pilha com até 20 bytes de extensão, as posições de memória interna de H a H não poderão ser utilizadas pelo programa, pois o SP é incrementado (antes / depois) de jogar o dado na pilha. 33 No 8051, há 5 interrupções possíveis, 2 interrupções externas, 1 interrupção do canal serial e uma para cada um dos temporizadores. a) Para tratamento de interrupções, há dois registros de função especial: o IP, responsável pelo(a) (mascaramento / definição de prioridade); e o IE, responsável pelo(a) (mascaramento / definição de prioridade). O bit do registro permite que todas as interrupções sejam desabilitadas simultaneamente. 31
33 b) Uma interrupção de prioridade poderá ser interrompida por uma de prioridade, enquanto que uma interrupção de prioridade não poderá ser interrompida. 34 O 8051 possui 2 Temporizadores de 16 bits (T0, T1), cada um deles sendo composto de 2 registros de 8 bits (TH0 e TL0, TH1 e TL1). Cada temporizador pode operar em 4 modos distintos. a) T1 e T0 (podem / não podem) operar em modos distintos, simultaneamente. b) No modo 1, cada temporizador tem uma contagem máxima igual a, pois opera como um circuito de bits. c) No modo 2, TL é um temporizador de bits, enquanto que a função de THx é. d) Se estiver no modo 3, T1 fica. e) T0, no modo 3, opera como um contador/temporizador normal de 8 bits, através do registro. Com T0 no modo 3, o registro TH0 (pode / não pode) gerar interrupção. f) Com T0 no modo 3, a utilidade do temporizador T1 é a de, e para isto o mesmo (pode / não pode) estar no modo 3. g) Tanto T1 como T0 podem operar como temporizador (conta os pulsos do relógio interno) ou como contador (conta os pulsos aplicados no pino de mesmo nome que o temporizador, ou seja, pino T1 ou pino T0). O bit responsável pela seleção contador/temporizador é o bit do registro. h) Com GATE.1 em nível baixo, o controle de T1 é por (circuito externo / software). Neste caso o mesmo será ligado/desligado através do. i) Com GATE.1 em nível alto, o controle de T1 é por (circuito externo / software). Neste caso o mesmo será ligado/desligado através do. 35 Escreva as instruções necessárias para o que é pedido abaixo: a) carregar no acumulador o conteúdo da posição 35h da RAM interna ( Obs.: faça de 2 maneiras distintas ); b) carregar no acumulador o conteúdo da posição 83h da RAM interna ( Obs.: só é válido para o 8052 ); c) carregar no acumulador o conteúdo da posição 83h da EPROM externa. 36 Sabendo que a posição D0h dos registros de função especial é igual a B, responda em que posição de memória será colocado o conteúdo do acumulador com a seguinte instrução: MOV R3, A 32
34 37 Dada a tabela abaixo: ENDEREÇO CONTEÚDO 04H 1EH 03H 0CH 02H ABH 01H 33H 00H F2H e sabendo que RS1 = 0 e RS0 = 0, responda o que faz a instrução MOVX R1 38 Dado o programa abaixo, diga qual o conteúdo do Acumulador, do acumulador auxiliar (B) e dos registradores R0 e R7, após a execução do mesmo. END. MNEUMÔNICO COMENTÁRIOS 5000H MOV A, # 05H 5002H ADD A, # H MOV R0, # 20H 5006H R0, A 5007H ADD R0 5008H ADD A, 20H 500AH MOV A, # 05H 500CH ADDC A, # 07H 500EH MOV A, # 05H 5010H INC A 5011H MOV B, # 07H 5014H MUL AB 5015H MOV A, # 23H 5017H MOV R7, # 48H 5019H ADD A, R7 501AH DA A 39 Dada a tabela abaixo que representa a RAM interna: ENDEREÇO CONTEÚDO 23H BCH 22H 83H 21H A7H 20H 00H 00H F2H Responda como ficarão as mesmas posições de memória após a execução do programa abaixo: MNEUMÔNICO CLR C CLR 0AH SETB 16H CPL 1DH CPL 18H ORL C, /05H MOV 03H, C COMENTÁRIOS 33
35 40 Dado o programa abaixo, responda qual o conteúdo do acumulador e do Registrador 1 (R1) após a execução do mesmo. END. MNEUMÔNICO COMENTÁRIOS 5000H MOV SP, # 20H 5003H MOV A, # 26H 5005H MOV R1, # 18H 5007H R1, A 5008H MOV 26H, # 7AH 500CH MOV DPTR, # 5038H 500FH DPTR, A 5010H PUSH R1 5012H XCH A, R1 5013H XCHD R1 5014H POP R1 41 Dado o programa abaixo, responda qual valor estará presente na Porta 1 (P1) e o estado do carry (CY) após a execução do mesmo. END. LABEL MNEUMÔNICO COMENTÁRIOS 5000H MOV P1, # 01H 5003H MOV 20 h, # 0D4H 5006H MOV C, 00H 5008H ORL C, 01H 500AH MOV 90H, C 500CH MOV C, 02H 500EH ORL C, 03H 5010H MOV 90H, C 5012H MOV C, 04H 5014H ANL C, / 05H 5016H MOV 91H, C 5018H SETB C 5019H MOV 92H, C 501BH MOV C, 06H 501DH JNB 07H, FIM 5020H CPL C 5021H FIM : MOV 92H, C 42 Dado o programa abaixo, responda qual o conteúdo do acumulador após a execução do mesmo. END. LABEL MNEUMÔNICO COMENTÁRIOS 5000H MOV A, 00H 5002H REPETE : MOV P1, A 5004H MOV R0, # 05H 5007H SALTO 3 : MOV R1, # 0FFH 500AH SALTO 2 : MOV R2, # FFH 500DH SALTO 1 : DJNZ R2, SALTO 1 500FH DJNZ R1, SALTO H DJNZ R0, SALTO H INC A 5014H CJNE A, # 81H,REPETE 34
36 43 Determine que códigos devem ser gravados na EPROM para a subrotina abaixo: VAI: MOV R7, # 0AH MOV TH1, # 00H MOV TL1, # 01H SETB TR1 JNB TF1, $ CLR TF1 CLR TR1 DJNZ R7, VAI RET 44 A subrotina acima é um delay. Considerando o clock de 12 MHz e Temporizador 1 no modo 1, qual é o tempo que foi programado para esta rotina? 35
37 14. Tabela dos códigos das instruções do microcontrolador 8051 TABELA DOS CÓDIGOS DAS INSTRUÇÕES DO MICROCONTROLADOR 8051 * Rn Indica registro R0 a R7 genericamente, dependendo de n. * Ri Indica registro R0 ou R1, dependendo de i. Significa endereçado pelo valor de... * #Dado Indica valor constante de 8 bits * #Dado 16 Indica valor constante de 16 bits * Direto Indica um endereço de memória de 8 bits ( 256 posições internas - RAM interna e Registros de Função Especial ) * rel Indica que o endereçamento é relativo INSTRUÇÕES DE TRANSFERÊNCIA DE DADOS Mnemônico R0 R1 R2 R3 R4 R5 R6 R7 MOV A,Rn E8 E9 EA EB EC ED EE EF MOV A,Direto E5 xx MOV A,@Ri E6 E7 MOV A,#Dado 74 xx MOV Rn,A F8 F9 FA FB FC FD FE FF MOV Rn,Direto A8 xx A9 xx AA xx AB xx AC xx AD xx AE xx AF xx MOV Rn,#Dado 78 xx 79 xx 7A xx 7B xx 7C xx 7D xx 7E xx 7F xx MOV Direto,A F5 xx MOV Direto,Rn 88 xx 89 xx 8A xx 8B xx 8C xx 8D xx 8E xx 8F xx MOV Direto1,Direto2 85 xx xx MOV Direto,@Ri 86 xx 87 xx MOV Direto,#Dado 75 xx xx F6 F7 A6 xx A7 xx 76 xx 77 xx MOV DPTR,#Dado16 90 xx xx MOVC A,@A+DPTR 93 MOVC A,@A+PC 83 MOVX A,@Ri E2 E3 MOVX A,@DPTR E0 F2 F3 F0 PUSH Direto C0 xx POP Direto D0 xx XCH A,Rn C8 C9 CA CB CC CD CE CF XCH A,Direto C5 xx XCH A,@Ri C6 C7 XCHD A,@Ri D6 D7 INSTRUÇÕES PARA VARIAVEIS BOOLEANAS Mnemônico CLR C C3 CLR Bit C2 xx SETB C D3 SETB Bit D2 xx CPL C B3 CPL Bit B2 xx ANL C,Bit 82 xx ANL C,/Bit B0 xx ORL C,Bit 72 xx ORL C,/Bit A0 xx MOV C,Bit A2 xx MOV Bit,C 92 xx JC rel 40 xx JNC rel 50 xx JB Bit, rel 20 xx xx JNB Bit,rel 30 xx xx JBC Bit,rel 10 xx xx INSTRUÇÕES DE DESVIO Mnemônico R0 R1 R2 R3 R4 R5 R6 R7 LCALL End xx xx RET 22 RETI 32 LJMP End xx xx SJMP rel 80 xx 73 JZ rel 60 xx JNZ rel 70 xx CJNE A, Direto, rel B5 xx xx CJNE A,#Dado,rel B4 xx xx CJNE Rn,#Dado,rel B8 xx xx B9 xx xx BA xx xx BB xx xx BC xx xx BD xx xx BE xx xx BF xx xx rel B6 xx xx B7 xx xx DJNZ Rn,rel D8 xx D9 xx DA xx DB xx DC xx DD xx DE xx DF xx DJNZ Direto,rel D5 xx xx NOP 00 ACALL End 11 A10A9A8 1 / 0001 AJMP End 11 A10A9A8 0 /
38 INSTRUÇÕES LÓGICAS Mnemônico R0 R1 R2 R3 R4 R5 R6 R7 ANL A,Rn A 5B 5C 5D 5E 5F ANL A,Direto 55 xx ANL ANL A,#Dado 54 xx ANL Direto,A 52 xx ANL Direto,#Dado 53 xx xx ORL A,Rn A 4B 4C 4D 4E 4F ORL A,Direto 45 xx ORL ORL A,#Dado 44 xx ORL Direto,A 42 xx ORL Direto,#Dado 43 xx xx XRL A,Rn A 6B 6C 6D 6E 6F XRL A,Direto 65 xx XRL XRL A,#Dado 64 xx XRL Direto,A 62 xx XRL Direto,#Dado 63 xx xx CLR A E4 CPL A F4 RL A 23 RLC A 33 RR A 03 RRC A 13 SWAP A C4 F7 F6 F5 F4 F3 F2 F1 F0 F0 H B E7 E6 E5 E4 E3 E2 E1 E0 EO H ACC D7 D6 D5 D4 D3 D2 D1 D0 DO H CY AC F0 RS1 RS0 OV - P PSW BF BE BD BC BB BA B9 B8 B8 H PS PT1 PX1 PT0 PX0 IP B7 B6 B5 B4 B3 B2 B1 B0 RD\ WR\ T1 T0 INT1\ INT0\ TXD RXD B0 H P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 P3 AF AE AD AC AB AA A9 A8 A8 H EA ES ET1 EX1 ET0 EX0 IE A7 A6 A5 A4 A3 A2 A1 A0 A0 H P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 P2 99 H SBUF 9F 9E 9D 9C 9B 9A H SM1 SM2 SM3 REN TB8 RB8 T1 R1 SCON H P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 P1 8D H TH 1 INSTRUÇÕES ARITMÉTICAS Mnemônico R0 R1 R2 R3 R4 R5 R6 R7 ADD A,Rn A 2B 2C 2D 2E 2F ADD A,Direto 25 xx ADD A,@Ri ADD A,#Dado 24 xx ADDC A,Rn A 3B 3C 3D 3E 3F ADDC A,Direto 35 xx ADDC A,@Ri ADDC A,#Dado 34 xx SUBB A,Rn A 9B 9C 9D 9E 9F SUBB A,Direto 95 xx SUBB A,@Ri SUBB A,#Dado 94 xx INC A 04 INC Rn A 0B 0C 0D 0E 0F INC Direto 05 xx DEC A 14 DEC Rn A 1B 1C 1D 1E 1F DEC Direto 15 xx INC DPTR A3 MUL AB A4 DIV AB 84 DA A D4 GATE- 1 C / T-1 M 1-1 M 0-1 GATE- 0 8C H TH 0 8B H TL 1 8A H TL 0 89 H C / T-0 M 1-0 M 0-0 TMOD 8F 8E 8D 8C 8B 8A H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TCON 87 H SMOD GF 1 GF 0 PD IDL PCON 83 H DPH 82 H DPL 81 H SP H P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 P0 37
39 15. Bibliografia SILVA JÚNIOR, Vidal Pereira da. Aplicações práticas do microcontrolador São Paulo-SP: Ed. Érica, 4. ed STEWART, James W. The 8051 microcontroller: hardware, software and interfacing. Englewoods Cliffs - New Jersey: Ed. Regents/Prentice Hall, RIBEIRO, Celso Henrique e FERREIRA, Ignácio Sérgio Miranda. Microcontroladores 68HC11 e Apostila. Itajubá-MG: FUPAI, TAVARES, Maurício Campelo. Projeto de Sistemas Dedicados a Microcontrolador. Apostila. Pelotas-RS: UCPel, DATA HANDBOOK IC20. 80C51 Based 8-Bit Microcontrollers. Philips PREDKO, Myke. Programming & customizing the 8051 microcontroller. New York-NY: Ed. MCGraw-Hill,
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;
MICROCONTROLADOR 8051
MICROCONTROLADOR 8051 Notas de Aula (v.2014) Prof. André R. Hirakawa Prof. Paulo S. Cugnasca Prof. Carlos E. Cugnasca ARQUITETURA 8051 APLICAÇÕES MAIS FREQUENTES SISTEMAS COMPACTOS: MEMÓRIAS ROM / RAM
Microcontrolador 8051:
Microcontrolador 8051: Fonte: CORRADI 2009 O Microcontrolador 8051: Começou a ser produzido no início da década de 80, pela Intel; Hoje é fabricado por várias empresas e com muitas variações; Atualmente,
Microcontroladores 8051
Microcontroladores 8051 1. Microcontroladores Microcontrolador é o nome dado ao componente que incorpora em um só "chip" todos os elementos necessários a um microcomputador. Deve ter : CPU, Memória e Interfaces
UTFPR Departamento Acadêmico de Eletrônica Curso Técnico em Eletrônica Microcontroladores 1 - Prof. Cion nov/2010 (atualizado em jul 2015)
UTFPR Departamento Acadêmico de Eletrônica Curso Técnico em Eletrônica Microcontroladores 1 - Prof. Cion nov/2010 (atualizado em jul 2015) Interrupção e Contadores/Temporizadores Este texto apresenta uma
O microcontrolador Quatro partes importantes
SEL-433 APLICAÇÕES DE MICROPROCESSADORES I A escolha do microprocessador mais adequado depende basicamente da aplicação, e deve se levar em conta os seguintes critérios: Técnicos: Velocidade, capacidade
Microprocessadores. Organização de Memória
Microprocessadores Organização de Memória Prof. Clayrton Henrique rev. 01 fev. 2016 Roteiro Introdução; RAM Interna; Parte de Dados; Parte de SFR; Registradores; Assembly; Referências... 2 Introdução RAM
Organização de Memórias
Intel 8051 O Intel 8051 é um microcontrolador de 8 bits que pertence a família MCS-51 da Intel e foi lançado em 1977. É tido como o microcontrolador mais popular do mundo, pois é muito versátil e possui
8051 Estudo de Caso. Prof. Carlos E. Capovilla - CECS/UFABC 1
8051 Estudo de Caso Prof. Carlos E. Capovilla - CECS/UFABC 1 8051 - Características O 8051 é membro da família MCS-51, e constitui o núcleo de todos os dispositivos MCS-51. Diversos fabricantes produzem
Memória de Dados Interna. Memória de Dados Interna
Memória de Dados Interna Memória de Dados Interna - faixa de endereço endereçável diretamente: 00 a 7F hexadecimal. - faixa de endereço endereçável indiretamente: 00 a FF hexadecimal. - espaço endereçável
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
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
Aula 8 Microcontrolador 8051
SEL 0415 Departamento de Engenharia Elétrica e de Computação EESC-USP SEL 0415 Introdução à Organização de Computadores Aula 8 Microcontrolador 8051 Profa Luiza Maria Romeiro Codá Autores: Prof Dr Marcelo
Aula 4. Engenharia de Sistemas Embarcados. Prof. Abel Guilhermino Tópico: Arquitetura de um microcontrolador 8051
Aula 4 Engenharia de Sistemas Embarcados Prof. Abel Guilhermino Tópico: Arquitetura de um microcontrolador 8051 Cenário: Sistema de Controle de LEDs Sistema Embarcado Sistema Engenharia de Sistemas Embarcados
9/3/2009. Aula 4. Engenharia de Sistemas Embarcados. Cenário: Sistema de Controle de LEDs
Cenário: Sistema de Controle de LEDs Sistema Embarcado Aula 4 Sistema Engenharia de Sistemas Embarcados Prof. Abel Guilhermino Tópico: Arquitetura de um microcontrolador 851 Engenharia de Sistemas Embarcados
Aula 8 Microcontrolador 8051
SEL 0415 Departamento de Engenharia Elétrica e de Computação EESC-USP SEL 0415 Introdução à Organização de Computadores Aula 8 Microcontrolador 8051 Profa. Luiza Maria Romeiro Codá Autores: Prof. Dr. Marcelo
SEL-433 Aplicação de Microprocessadores I. Prof: Adilson Gonzaga
SEL-433 Aplicação de Microprocessadores I Prof: Adilson Gonzaga HISTÓRICO Microprocessador Circuito integrado ( chip ) capaz de executar instruções. 1971 Intel Corporation lançou no mercado o microprocessador
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
SEL 337 Aplicação de Microprocessadores II
SEL 337 SEL 337 Aplicação de Microprocessadores II Prof. Dr. Marcelo A. C. Vieira SEL 337 DIREÇÃO DE TRANSFERÊNCIA DE DADOS TRANSM Fluxo de Dados RECEP SIMPLEX TRANSM RECEP Fluxo de Dados TRANSM RECEP
Temporizadores e Contadores
Temporizadores e Contadores Temporizadores e Contadores (Timer/Counter) O 8051 possui 2 T/C internos de 16 Bits programáveis e com capacidade de operação independente da CPU. Contadores crescentes (up-counter)
Apontamentos sobre o 8051 Prof. Eng Luiz Antonio Vargas Pinto Versão revista e ampliada em 01/07/2009 Revisada em 28/02/2006 Revisada em 18/11/2007
1 Apontamentos sobre o 8051 Prof. Eng Luiz Antonio Vargas Pinto Versão revista e ampliada em 01/07/2009 Revisada em 28/02/2006 Revisada em 18/11/2007 Revisada em 17/03/2011 Revisada em 13/01/2013 1. Introdução:...
Temporizadores e Contadores (Timer/Counter)
SEL-433 APLICAÇÕES DE MICROPROCESSADORES I O 8051 possui 2 (ou 3) T/C internos de 16 Bits programáveis e com capacidade de operação independente da CPU. Contadores crescentes (up-counter) que geram sinal
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.
MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 UMA SOLUCAO POSSÍVEL
MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 UMA SOLUCAO POSSÍVEL Aluno: Matrícula: 1. Escreva as instruções necessárias para atender a cada uma das configurações solicitadas. Valor: 2,0 (a) Interrupção
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
Disc.: Sistemas Microprocessados Curso Técnico em Eletrônica
Disc.: Sistemas Microprocessados Curso Técnico em Eletrônica Prof. Paulo Demantova Sistemas Microprocessados - Prof: Demantova 1 1. Objetivo da Disciplina: Apresentar características e conceitos de um
Prof. Adilson Gonzaga
Prof. Adilson Gonzaga Memória de Dados Interna (RAM Interna) O endereçamento é feito com 8 bits Chips com 128 bytes de RAM não possuem a área I (Apenas Endereçamento Indireto) Memória de Dados Interna
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
Família 8051 (introdução) 2011/1
Família 8051 (introdução) 2011/1 Refresh Microprocessador vs. microcontrolador. Periféricos built-in. Single-chip computer 2 Objetivos Histórico Modelos da família original Principais características Diagrama
Prof. Adilson Gonzaga
Exemplo de Projeto com Microcontrolador MCS-51 Prof. Adilson Gonzaga Definições Iniciais: Microcontrolador Tamanho da Memória de Programa Interna define o tamanho da Memória de Programa Externa a ser utilizada.
SEMINÁRIO ASSEMBLY: Arquitetura 8051
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 8051 Fernando Takeshi Sato Diego Schmitt
ORGANIZAÇÃO DE MEMÓRIA NO 8051: Microcontroladores - Prof: Demantova 1
ORGANIZAÇÃO DE MEMÓRIA NO 8051: 1 8. ORGANIZAÇÃO DE MEMÓRIA NO 8051: 00H 0000H BANCOS DE REGISTROS 00H 7FH 80H RAM INTERNA REGISTROS ESPECIAIS REGISTROS ENDEREÇÁVEIS POR BIT RAM DE USO GERAL 1FH 20H 2FH
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
Laboratório de Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 2: Interrupções Externas e Relés Alunos: Matrícula:
MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 (Tema: Microcontrolador 8051) Resposta Esperada
MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 (Tema: Microcontrolador 8051) Resposta Esperada 1. Tema: programação geral do microcontrolador 8051. Valor: 2,5 A Tabela 1 mostra um programa, em linguagem
MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 Resposta Esperada
MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 Aluno: Matrícula: 1. Na figura a seguir 8 Leds são conectados à porta P1 e 8 à porta P2. Valor: 2,5 Faça um programa em assembly do 8051 em que as interrupções
2.4 Temporização da CPU
2.4 Temporização da CPU Todos os Microcontroladores da família MCS-51 têm um oscilador interno. Para uso deste devese conectar um cristal entre os pinos Xtal1 e Xtal2. Pode-se também utilizar um oscilador
Arquitetura do Disciplina de Microcontroladores. Prof. Ronnier Prof. Rubão
Arquitetura do 8051 Disciplina de Microcontroladores Prof. Ronnier Prof. Rubão Objetivo fim Entender as noções básicas de microprocessadores, microcontroladores e sistemas embarcados Estudar a arquitetura
Aula 10 Microcontrolador Intel 8051 Parte 1
Aula 10 Microcontrolador Intel 8051 Parte 1 SEL 0415 INTROD. À ORGANIZAÇÃO DE COMPUTADORES Prof. Dr. Marcelo A. C. Vieira SEL 0415 Microcontroladores Grupo de Sistemas Digitais n Microcontrolador é o nome
Laboratório de Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 3: Temporizadores e Display LCD Alunos: Matrícula:
SEL 0415 INTROD. À ORGANIZAÇÃO DE COMPUTADORES
SEL 0415 Aula 11 Microcontrolador 8051 Parte 3 SEL 0415 INTROD. À ORGANIZAÇÃO DE COMPUTADORES Prof. Dr. Marcelo A. C. Vieira SEL 415 INTERRUPÇÃO Estrutura de Interrupção do 8051 n 5 Fontes [ 2 Externas
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
Interface Serial. Prof. Adilson Gonzaga
Interface Serial Prof. Adilson Gonzaga Comunicação de Dados em Microprocessadores. Comunicação Paralela Tipos de Comunicação FONTE DADOS READY STROBE GND DESTINO Distância < 30 metros Amplificação complexa
17/04/2017. Comunicação Serial. Comunicação Serial. Comunicação de Dados em Microprocessadores. . Comunicação Paralela. Comunicação Serial
DESLOCAMENTO DESLOCAMENTO 1/0/01 SEL- APLICAÇÕES DE MICROPROCESSADORES I Comunicação de Dados em Microprocessadores. Comunicação Paralela Tipos de Comunicação FONTE DADOS READY STROBE DESTINO Distância
Aula 5. Engenharia de Sistemas Embarcados. Prof. Abel Guilhermino Tópico: Arquitetura e Ambiente de Desenvolvimento
Aula 5 Engenharia de Sistemas Embarcados Prof. Abel Guilhermino Tópico: Arquitetura e Ambiente de Desenvolvimento O ambiente de Execução Como o sistema utiliza a memória Como o processador gerencia a pilha
Laboratório de Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 2: Interrupções Externas e Relés Alunos: Matrícula:
Laboratório de Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 3: Temporizadores e Display LCD Alunos: Matrícula:
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.
14/3/2016. Prof. Evandro L. L. Rodrigues
SEL 433 APLICAÇÕES DE MICROPROCESSADORES I SEL-433 APLICAÇÕES DE MICROPROCESSADORES I Prof. Evandro L. L. Rodrigues Tópicos do curso Conceitos básicos - Aplicações e utilizações dos microcontroladores
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
MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 - RESPOSTA ESPERADA
MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 - RESPOSTA ESPERADA 1. Escreva as instruções para as configurações pedidas. Valor: 2,0 a) Habilita as interrupções externas zero e um e a interrupção do
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
SEL-433 APLICAÇÕES DE MICROPROCESSADORES I
SEL 433 APLICAÇÕES DE MICROPROCESSADORES I SEL-433 APLICAÇÕES DE MICROPROCESSADORES I Apresentação do curso Critério de avaliação Média final = 0.8 * MP + 0.2 * ME onde MP = (P1 + P2) / 2 e ME = Notas
DIAGRAMA DE BLOCOS DE UM MICROCONTROLADOR
DIAGRAMA DE BLOCOS DE UM MICROCONTROLADOR BARRAMENTO [BUS] DE ENDEREÇOS UNIDAD CENTRAL DE PROCESO C.P.U INTERFACE SERIE UNIDADE DE CONTROLE U.L.A REGITRADORES TIMERS ROM RAM PORTAS E/S [I/O] BUS DE DADOS
Introdução à Organização de Computadores. Aula 8
SEL-0415 Introdução à Organização de Computadores Set de Instruções Modelos de Arquiteturas Aula 8 Prof. Dr. Marcelo Andrade da Costa Vieira INSTRUÇÕES n Padrão de código binário armazenado em um dispositivo
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 [email protected] Ana Cristina Lopes, 22 de Novembro de 2004 Microprocessadores
Interrupções 8051 Porta Serial
Interrupções 8051 Porta Serial Disciplina de Microcontroladores Prof. Ronnier Prof. Rubão Finalidade Introduzir ao aluno a ideia de que se possa interromper o programa, de forma temporária, e desta vez
INTRODUÇÃO: MICROCONTROLADORES
INTRODUÇÃO: MICROCONTROLADORES MICROCONTROLADOR X MICROPROCESSADOR Baixa capacidade de processamento Freq. Operação em MHz Custo de R$ 7,00 a 30,00 Aplicações mais restrita Alta capacidade de processamento
EEC2104 Microprocessadores
EEC2104 Microprocessadores Edição 2005/2006 Arquitectura de um microprocessador básico (Qual o hardware necessário para executar instruções e poder chamar subrotinas?) Uso da memória Guardar instruções
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.
Microprocessadores e Microcontroladores. Professor Lucas Araujo do Nascimento
Microprocessadores e Microcontroladores Professor Lucas Araujo do Nascimento REVISÃO Microprocessadores e Microcontroladores Microprocessadores e Microcontroladores COMPUTADOR Microprocessadores e Microcontroladores
MICROPROCESSADORES E MICROCONTROLADORES. Prova 1 Resposta Esperada
MICROPROCESSADORES E MICROCONTROLADORES Prova 1 Resposta Esperada 1. Tema: Conceitos Gerais Valor: 1,0 Os microcontroladores da família 8051 possuem arquitetura CISC, e os microcontroladores da família
Laboratório de Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 5: Comunicação Serial Alunos: Matrícula: Prof. Dr.
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
07/06/2015. Outras características importantes em Microprocessadores/Microcontroladores SEL-433 APLICAÇÕES DE MICROPROCESSADORES I
SEL-433 APLICAÇÕES DE MICROPROCESSADORES I Redução de Potência de Operação As versões CHMOS (89C51, 89S52, etc ) da família MCS-51 possuem dois modos de controle de redução de potência de operação do chip.
No. de bits. O primeiro IBM PC foi construído com o 8088 (versão de 8 bits do 8086).
Cap2.1 2. Arquitetura do microprocessador 8086 2.1 A família Intel iapx86 (ou 80X86) Processador Co-proc. Ano de introdução No. de bits No. de transistores Velocidade (MHz) 4004-1971 4 2.205-8008 - 1972
Sistemas Embarcados:
Sistemas Embarcados Microcontroladores Prof. Protásio Laboratório de Microengenharia/DEE/CEAR/UFPB Fundamentos de microcontroladores Bit (Binary digit) Zero lógico (Ø) e Um lógico (1) 0V e 5V ou 3,3V Byte
Microcontroladores. Interrupções no Prof. Guilherme Peron Prof. Heitor S. Lopes Prof. Ronnier Rohrich Prof. Rubão
Microcontroladores no 8051 Prof. Guilherme Peron Prof. Heitor S. Lopes Prof. Ronnier Rohrich Prof. Rubão O que é interrupção? Interrupção 2 Definição Qualquer evento interno ou externo que obriga o microcontrolador
Laboratório de Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 6: Comunicação Serial Alunos: Matrícula: Prof. Dr.
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
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
µcontroladores da Família 51
DEPARTAMENTO DE ELECTROTECNIA Sistemas Digitais µcontroladores da Família 51 João Paulo Baptista Índice 1 Família de Micro Controladores 8051 1 2 Arquitectura Base 1 3 PinOut do µcontrolador 2 4 Sistema
Comunicação Serial. Comunicação Serial
RECEPÇÃO TRANSMISSÃO D7 D6 D5 D4 D3 D2 D1 D0 DESLOCAMENTO DESLOCAMENTO D7 D6 D5 D4 D3 D2 D1 D0 D0 D0 D7 D6 D5 D4 D3 D2 D1 D1 D0 D1 D7 D6 D5 D4 D3 D2 D2 D0 D1 D2 D7 D6 D5 D4 D3 D3 D0 D1 D2 D3 D7 D6 D5 D4
Aula 5: Introdução a Arquitetura do Microcontrolador 8051
Microprocessadores - 2013-1 06/05/2013 Aula 5: Introdução a Arquitetura do Microcontrolador 8051 Professor: Eraldo Silveira e Silva [email protected] 1 Objetivos da Aula apresentar as principais características
SEL-0415 Introdução à Organização de Computadores Aula 2 Prof. Dr. Marcelo Andrade da Costa Vieira
SEL-0415 Introdução à Organização de Computadores Conceitos Básicos Aula 2 Prof. Dr. Marcelo Andrade da Costa Vieira INTRODUÇÃO n Organização Æ implementação do hardware, componentes, construção dos dispositivos
MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 - Uma Solução Possível
Parte 3 Parte 1 Parte 2 Goiânia, 5 de junho de 2014. MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 - Uma Solução Possível 1. Suponha um sistema com um conjunto de 8 LEDs conectados à porta P1 e duas
Prof. Adilson Gonzaga
Prof. Adilson Gonzaga Outras características importantes em Microprocessadores/Microcontroladores Redução de Potência de Operação As versões CHMOS (89C51, 89S52, etc ) da família MCS-51 possuem dois modos
EPUSP PCS2355 Laboratório Digital MICROPROCESSADORES
MICROPROCESSADORES M.M. / 2001 (revisão) L.M.S. e P.S.C. / 2001 (revisão) E.T.M./2004 (revisão) E.T.M./2005 (revisão) Resumo Nesta experiência serão estudados os conceitos básicos de microprocessadores
Microprocessadores CPU. Unidade de Controle. Prof. Henrique
Microprocessadores CPU Unidade de Controle Prof. Henrique Roteiro Registradores; Unidade de Controle Níveis de Complexidade Introdução Um sistema microprocessado conta com diversos dispositivos para um
MICROPROCESSADORES E MICROCONTROLADORES Parte 3 Microcontrolador 8051
MICROPROCESSADORES E MICROCONTROLADORES Parte 3 Microcontrolador 8051 José Wilson Lima Nerys Página: www.emc.ufg/~jwilson Emails: [email protected] e [email protected] 1 Prof. José Wilson Lima
2º Estudo Dirigido CAP 3
2º Estudo Dirigido CAP 3 1. Cite três exemplos de aspecto na definição e implementação de uma arquitetura que são influenciados pelas características do conjunto de instruções? R.: Operações lógicas e
Lista de Exercícios 2
Conceitos envolvidos: a) Contadores e Temporizadores b) Interface serial RS232 c) Interrupções Lista de Exercícios 2 1. Fazer um contador hexadecimal que coloque o valor de contagem na porta P1 em intervalos
