Parte II – O microcontrolador Intel 8051

1 Comentários sobre microcontroladores
Um microcontrolador é um componente que tem, num único chip, além de uma CPU, elementos tais como memórias ROM e RAM, temporizadores, contadores, canais de comunicação e conversores analógico-digitais. Esta característica diferencia os sistemas baseados em microcontroladores daqueles baseados em microprocessadores, onde normalmente se utilizam vários componentes para implementar essas funções. Com isso, os microcontroladores permitem a implementação de sistemas mais compactos e baratos do que aqueles baseados em microprocessadores. Em contrapartida, as CPUs dos microcontroladores são, em geral, menos poderosas do que os microprocessadores. Seu conjunto de instruções costuma se limitar às instruções mais simples encontradas nestes, sua freqüência de clock é mais baixa e o espaço de memória endereçável costuma ser bem menor. Vê-se daí que o campo de aplicação dos microcontroladores é diferente daquele dos microprocessadores, e que um sistema que possa ser controlado por um microcontrolador tende a ter menor complexidade e menor custo do que um sistema que exija a capacidade de processamento de um microprocessador. Exemplos de sistemas onde os microcontroladores encontram aplicação incluem controle de semáforos, balanças eletrônicas, microterminais, telefones públicos, controle de veiculação de comerciais de TV, controle de carregadores de baterias, inversores, controles de acesso, taxímetros, sistemas de aquisição de dados de manufatura e eletrodomésticos em geral. A programação dos microcontroladores é, em geral, mais simples do que a dos microprocessadores, ao menos no que diz respeito às exigências de conhecimento dos componentes periféricos. Isto acontece porque os periféricos on-chip dos microcontroladores são acessados de uma forma padronizada e integrada na própria linguagem de programação, dispensando o conhecimento de detalhes externos. Não se deve pensar, porém, que isto simplifique a tarefa do programador em todos os níveis: é necessário que ele conheça bem o hardware conectado ao microcontrolador para poder produzir programas que funcionem corretamente. Cabe citar ainda uma vantagem particular dos microcontroladores que possuem memória ROM, que é a possibilidade de armazenar programas internamente, dificultando sensivelmente a cópia ilícita do código.

1.1 A família 8051
Diversos fabricantes produzem microcontroladores da família 8051 (Intel, AMD, Atmel, Dallas, OKI, Matra, Philips, Siemens, SMC, SSI). A Intel iniciou a produção do 8051 em 1981. Em 1982 foram produzidos 2 milhões de unidades, em 1985 foram 18 milhões e em 1993, 126 milhões. A tendência atual é uma participação crescente dos microprocessadores de 8 bits e uma diminuição da fatia de mercado dos microcontroladores de 4 bits. Além do 8051 propriamente dito, existem variantes como o 8031 (sem memória ROM interna e com apenas 128 bytes de memória RAM), o 8751 (4 kB de memória EPROM) e o 8052 (8 kB de memória ROM, um terceiro timer e 256 bytes de memória RAM). A menos dessas diferenças, os modelos
Microcontrolador 8051 - 1/30

citados são idênticos, e o texto utilizará o termo “8051” de forma genérica, citando as outras versões apenas onde for necessário. Informações complementares podem ser obtidas em [Inte89], [Siem90] e [Silv94].

1.2 Principais características
• • • • Freqüência de clock de 12 MHz, com algumas versões que alcançam os 40 MHz; até 64 kB de memória de dados externa; 128 bytes de RAM interna; até 64 kB de memória de programa, independente da anterior, e configurável de duas formas mutuamente excludentes: ◊ 4 kB internos (ROM no 8051 e EPROM no 8751) e mais 60 kB externos; ◊ 64 kB externos; • 4 portas bidirecionais de I/O, cada uma com 8 bits individualmente endereçáveis; duas dessas portas (P0 e P2) e parte de uma terceira (P3) ficam comprometidas no caso de se utilizar qualquer tipo de memória externa; • 2 temporizadores /contadores de 16 bits; • 1 canal de comunicação serial; • 5 fontes de interrupção (dois timers, dois pinos externos e o canal de comunicação serial) com 2 níveis de prioridade selecionáveis por software; • oscilador de clock interno. As características citadas são básicas e formam o núcleo da família 8051, que pode ser acrescido de uma ou mais das características, conforme a figura 1.2.
CONVERSOR AD
ENCAPSULAMENTO MINIMIZADO

LOW POWER LOW VOLTAGE EPROM & OTP

I/O ESTENDIDAS FUNÇÕES ESPECIAIS

80C51 NÚCLEO

MEMÓRIA 1k - 32k EEPROM DERIVATIVES

CLOCK de até 40 MHz

I²C & CAN SERIAL BUS

Fig. 1.2 - Características especiais da família 8051 A título de exemplo, a tabela 1.2 apresenta as características de alguns componentes da família 8051 com a indicação de seus fabricantes. O número total de variantes é muito maior. A Philips, por exemplo, produz mais de 40 tipos diferentes.
Tipo MCS251 80C517A 80C537A 80537 80517 80C535A 80C515A 80535 80515 80C535 80C51GB 87C51GB 80C592 87C592 87C598 80C552 Pinos 40 84 84 84 84 68 68 68 68 68 68 68 68 68 80 68 Fabr. Intel Siemens Siemens Siemens Siemens Siemens Siemens Siemens Siemens Siemens Intel Intel Philips Philips Philips Philips RAM 1K 256 256 256 256 256 256 256 256 256 256 256 256 256 256 256 CODE 16K 64Kx 32K 64Kx 8K 64Kx 32K 64Kx 8K 64Kx 64Kx 8K 64Kx 16K 32K 64Kx Notes (LV - low voltage) 16 Bit 80x51FX! Preliminar ALU;8PWM;CC;2UART;10bA/D ALU;8PWM;CC;2UART;10bA/D ALU;8PWM;CC;2UART;8bA/D ALU;8PWM;CC;2UART;8bA/D 515+10bA/D;1K XRAM;BRG;OWD 515+10bA/D;1K XRAM;BRG;OWD Timer2CaptComp 6ports 8/10bA/D Timer2 CaptComp 4 ports 8b A/D Timer2 CaptComp 5 ports 8b A/D 8051FA+PCA; 8b A/D; SPI 8051FA+PCA; 8b A/D; SPI 552-I2C+CAN+XRAM 552-I2C+CAN+XRAM 552-I2C+CAN+XRAM 10b A/D; I2C; CaptComp; PWM

Microcontrolador 8051 - 2/30

87C552 80C562

68 68

Philips Philips

256 256

8K 64Kx

10b A/D; I2C; CaptComp; PWM 8b A/D; I2C; CaptComp; PWM

Tab. 1.2 - Alguns integrantes da família MCS51

1.3 Análise externa
O aspecto externo do 8051 é o da figura 1.4. Os pinos com nomes da forma P0.0, P0.1, etc. correspondem às quatro portas de E/S (P0 a P3). Note a dupla utilidade das portas P0 e P2, que ficam comprometidas com o uso de memória externa, assim como os pinos P3.6 e P3.7. O sinal ALE (Address Latch Enable) permite fazer a demultiplexação de dados e endereços na porta P0, da maneira que foi estudada para o microprocessador 8085. Através do sinal PSEN (program storage enable), o controlador informa o mundo externo se a operação em andamento é uma leitura de instrução (acesso à memória de programa) ou um acesso à memória de dados. Este sinal permite que o processador tenha duas regiões distintas de memória externa, uma para armazenar código e outra para dados. Ambas ocupam os endereços de 0 a FFFFH (64 kB), num total de 128 kB.
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST / VPD RxD/data P3.0 TxD/data P3.1 INT0 P3.2 INT1 P3.3 T0 P3.4 T1 P3.5 WR P3.6 RD P3.7 XTAL2 XTAL1 VSS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 VCC P0.0 P0.1 P0.2 P0.3 AD0 AD1 AD2 AD3

8 0 5 1

P0.4 AD4 P0.5 AD5 P0.6 AD6 P0.7 AD7 EA ALE PSEN P2.7 A15 P2.6 A14 P2.5 A13 P2.4 A12 P2.3 A11 P2.2 A10 P2.1 A9 P2.0 A8

Fig. 1.4 - Aspecto externo do 8051 O pino EA é um sinal de entrada, através do qual o usuário escolhe se será utilizada a memória ROM interna ou se todo o programa será armazenado externamente. Os pinos da porta P3 também são utilizados para realizar certas funções especiais: • • • • • • • • P3.0 - RxD/data - recepção serial assíncrona ou E/S de dados síncronos; P3.1 - TxD/clock - transmissão porta serial assíncrona ou saída de clock p/ dados síncronos; P3.2 - INT0 - entrada da interrupção 0 ou bit de controle para o temporizador/contador 0; P3.3 - INT1 - entrada da interrupção 1 ou bit de controle para temporizador/contador ; P3.4 - T0 - entrada de clock externo para o temporizador/contador 0; P3.5 - T1 - entrada de clock externo para o temporizador/contador 1; P3.6 - WR - sinal de escrita na memória de dados externa; P3.7 - RD - sinal de leitura na memória de dados externa. A alimentação (5V) é feita pelo pino 40 e o GND é o pino 20; o cristal para o oscilador interno é conectado aos pinos 18 e 19. Finalmente, o pino 9, RST/VPD, é a entrada de reset.

1.4 Modelo de programação simplificado
Desenhar um modelo de programação completo para um microcontrolador é mais difícil do que para um microprocessador, porque os microcontroladores têm, em geral, um número bem maior de registradores, que servem para acessar os componentes periféricos on-chip. O modelo da figura 1.6 contempla apenas os registradores de caráter geral.
Microcontrolador 8051 - 3/30

também indicados na figura. Aqui há duas opções: se a memória ROM interna do controlador for utilizada. serão detalhados nas seções subseqüentes.6 .4/30 . Nível lógico zero seleciona memória de programa externa para todos os endereços. que é sempre indireto. então esta será mapeada nos primeiros 4 kB deste espaço de endereçamento (endereços 0000H a 0FFFH). RS0 e RS1. 15 0 7 0 PC 15 8 7 0 SP A DH 7 0 7 DL 0 7 DPTR 0 7 B 0 R0 R4 7 6 5 R1 R5 4 3 2 R2 R6 1 0 R3 R7 CY AC F0 RS1 RS0 OV F1 P PSW Fig. espalhados em endereços da faixa 80H-FFH. é responsável pelas principais operações. como no 8085. 1.8. 1. assim como os oito registradores R0 a R7. que se denomina DPTR. e os demais 60 kB (1000H a FFFFH) serão externos. B é um registrador de caráter geral. conforme mencionado na seção 1.6.O registrador A é o acumulador que. PC contém o endereço da próxima instrução executável e SP aponta para o topo da pilha. com nível 1. 1. Há dois blocos de RAM. de 128 bytes cada. DH e DL também são de uso geral. e mais cerca de 20 registradores de funções especiais. conforme ilustra a figura 1. de acordo com o nível de tensão aplicado ao pino EA. Caso não se deseje utilizar a ROM interna.6. então toda a memória será externa. que não aparecem no modelo acima. auxiliary carry. Os flags estão todos reunidos no registrador PSW (program status word). mapeados nos endereços 00H-7FH e 80H-FFH. Este registrador é o único que pode conter valores de 16 bits e por isso é freqüentemente utilizado no endereçamento da memória externa. que contém ainda os bits de seleção de banco de registradores. overflow e parity) e dois flags de usuário (F0 e F1). as instruções são lidas da memória interna se seu endereço for menor do que 1000H (primeiros 4 kB). é feita por hardware.5 Organização da memória de programa A memória de programa do 8051 pode ocupar até 64 kB. Os registradores de controle dos periféricos on-chip. sobretudo as lógicas e aritméticas.6.1 Memória de dados interna A memória interna é dividida em três blocos fisicamente distintos. A escolha.12. que também apresenta mais detalhes sobre os registradores R0 a R7. Microcontrolador 8051 .Modelo de programação simplificado para o 8051 O 8051 conta com quatro flags de sistema (carry.6 Organização da memória de dados 1. A distinção entre os dois blocos cujos endereços coincidem é feita pelos modos de endereçamento. Estes últimos são descritos na seção 1. que o programador pode utilizar como desejar. mas podem ser utilizados como um registrador de 16 bits.

conforme mostra a figura 1..3 Mais detalhes sobre a RAM interna Os primeiros 48 bytes da RAM interna (00H a 2FH) apresentam ainda algumas particularidades. Este sinal é ativado na leitura de instruções da memória na utilização da instrução MOVC.R0). o processador precisa decidir ainda a qual banco a instrução se refere. para a memória externa. É interessante notar que esta última instrução exige sempre endereçamento indireto. R1. Em cada banco. copia A para a posição em R0 1. ou então diretamente através dos seus endereços (MOV A. Por exemplo.A armazena na posição 20H da memória RAM interna o conteúdo do acumulador.4.#20H MOVX @R0.00H). Esta seleção de banco é feita configurando os bits RS1 e RS0 do registrador PSW de acordo com a tabela 1. . para distinguir entre memória de dados interna e memória de dados externa. o procedimento seria: MOV R0. há coincidências de endereços com toda a faixa de memória de programa e com os endereços 00H a FFH da memória de dados interna. coloca o endereço em R0 . para armazenar o mesmo conteúdo na posição 20H da memória de dados externa.Organização da memória de dados interna do 8051 1.8 .. transfere dados entre registradores e a memória de programa. os registradores são denominados R0. Microcontrolador 8051 . a distinção entre memória de programa e memória de dados é feita pelo sinal PSEN. o microcontrolador oferece duas instruções distintas: MOV. 2.5/30 .2 Memória de dados externa A memória de dados externa pode ocupar até 64 kB.6. R7 (os nomes são repetidos). por causa da repetição dos nomes.10. para acessar a memória interna. Os endereços 00H a 1FH compreendem quatro bancos de oito registradores cada. Estes conflitos são resolvidos por dois mecanismos distintos: 1.Bloco superior de 128 bytes MOV com endereçamento indireto Bloco inferior de 128 bytes MOV com endereçamento direto ou indireto FFH 80H Registradores de funções especiais MOV com endereçamento direto FFH 80H 7FH 00H Fig.A .6.6. Por outro lado. Portanto. Estes podem ser endereçados por seus nomes nas instruções (como em MOV A. No primeiro caso. que o hardware utiliza para habilitar o banco de memória correspondente. e MOVX (move external). a instrução MOV 20H. 1. conforme mencionado na seção 1.

TL1 (8BH).R7 Banco 0 2FH .6. P1(90H). os interessados em obter maiores detalhes são convidados a consultar uma das referências bibliográficas. PSW (D0H).1. • TH1 (8DH).. B (F0H).R7 Banco 3 R0 .6/30 . através das instruções SETB (set bit).7F 0F 07 7E 0E 06 7D 0D 05 7C . Microcontrolador 8051 .Organização da parte baixa da RAM interna RS1 0 0 1 1 RS0 0 1 0 1 Banco 0 1 2 3 Tab. • P0 (80H)..4 . 21H 20H 1FH 18H 17H 10H 0FH 08H 07H 00H Fig. P2 (A0H) e P3(B0H) correspondem a posições de RAM contendo os dados das portas de E/S. registradores da porta serial.10 . respectivamente. TH0 (8CH) e TL0 (8AH) contêm os valores das contagens dos temporizadores/contadores 1 e 0.R7 Banco 2 R0 . mas onde se quer manter os conteúdos das memórias internas (falha de alimentação.. por exemplo). A (E0H). P0.0. 1. • SP (81H). • PCON (87H) permite adaptar o chip a uma situação na qual não há processamento.R7 Banco 1 R0 . 1.4 Os registradores de funções especiais Os registradores de funções especiais incluem posições de acesso às portas de E/S. • TCON (88H) e TMOD (89H) são os registradores de controle e modo de operação dos temporizadores/contadores. temporizadores e registradores aritméticos. 1.. 7B 7A 0A 02 79 09 01 78 08 00 0C 0B 04 03 R0 . registradores de interrupção. DPH (83H) e DPL (82H) foram apresentados na seção 1.Seleção dos bancos de registradores do 8051 Acima dos bancos de registradores há uma região de 16 bytes (endereços 20H a 2FH) cujos bits podem ser endereçados individualmente. respectivamente.8. CLR (clear) e CPL (complement). Os endereços desses 128 bits vão de 00 a 7FH. Aqueles situados em endereços múltiplos de 8 também podem ser endereçados bit a bit Os registradores são descritos resumidamente a seguir. os bits individuais são endereçados como P0. • SCON (98H) e SBUF (99H) permitem. começando do bit menos significativo do byte 20H e terminando no bit mais significativo do byte 2FH. programar a porta de comunicação serial e armazenar o dado recebido ou a ser transmitido. • IE (A8H) e IP (B8H) são registradores associados à gestão de interrupção (habilitação e prioridade).. etc.

DPTR ou PC apontam para a base de uma tabela enquanto o acumulador seleciona um elemento dentro da tabela. Exemplo: MOV A. R1 ou SP. Conforme a seção 1. Caso o endereço seja de 16 bits. os registradores que podem ser especificados no corpo da instruções são R0. cujo conteúdo é o endereço do operando.2 Endereçamento direto Neste modo.7.copia R3 para A.#255 . Nesse tipo de acesso.7.@A+DPTR .7.A .R3 . Exemplo: MOV A. o endereço do operando é dado pela soma do conteúdo de um registrador de base. Exemplos: MOVC A. Exemplos: SETB 0FH . este modo consegue instruções mais curtas do que o modo direto. Microcontrolador 8051 . 1. que deve ser um número de 8 bits. Desta forma. por dispensar byte com o endereço.o registrador B recebe uma cópia do valor do byte que está A posições à frente do PC.faz o registrador B igual a FFH.1 Endereçamento imediato O valor do operando faz parte do corpo da instrução e segue o opcode na memória de programa.0 . O operando deve ser precedido do símbolo ‘#’.coloca o valor 15H no byte endereçado por R1.4 Endereçamento indireto A instrução especifica um registrador.7/30 .#15H .7. CLR P1.12.10). Exemplos: MOV @R1. O banco de registradores referenciado é aquele que está selecionado pelos bits RS1 e RS0 no instante em que a instrução é executada.o acumulador indica o offset de um byte dentro da tabela que inicia em DPTR e que deve ser copiado para o acumulador.traz para o acumulador o conteúdo do byte 25H da RAM interna.7. Este modo pode ser utilizado para endereçar tanto a memória interna quanto a memória externa. MOVC B. MOV @DPTR. quer sob a forma de uma abreviatura.@A+PC .5 Endereçamento indexado Este modo serve apenas para endereçar a memória de programa (instrução MOVC). Se o endereço do operando for de 8 bits. projetados de modo a agilizar o acesso à RAM interna e também para facilitar as operações de manipulação de bits e bytes. com o conteúdo do acumulador. que pode ser DPTR ou PC.7.zera o bit menos significativo da porta 1.seta o bit mais significativo do byte 21H da memória interna. 1.6 Endereçamento dos registradores R0 a R7 Os opcodes das instruções de acesso aos registradores R0 a R7 utilizam três dos seus oito bits para especificar o registrador endereçado. Dessa forma.7 Modos de endereçamento O conjunto de instruções oferece diversos modos de endereçamento. a fim de evitar a confusão com o modo direto. a instrução especifica o endereço do operando. somente dados dos primeiros 128 bytes da memória RAM interna e dos registradores de funções especiais são endereçados deste modo.25H . 1.1.copia o valor do acumulador para o byte endereçado por DPTR. o registrador a ser utilizado tem que ser DPTR.3 Endereçamento de bits individuais As instruções que manipulam bits individuais especificam este bit de forma direta. como no caso das portas de E/S ou de outros bits dos registradores de funções especiais. 1. Exemplo: MOV B. 1. quer sob a forma de um número (os endereços dos bits individualmente endereçáveis da figura 1. 1.

6 . externa 1.8/30 . • instrução POP: o byte da posição apontada por SP é copiado para o destino e em seguida SP é decrementado.O registrador IE Microcontrolador 8051 .7... e portanto nenhum byte é necessário para endereçar o operando. do timer 0.. com o byte menos significativo no endereço mais baixo. Portanto.12 . e que por isso o tamanho da pilha do 8051 é bem menor do que o das pilhas normalmente usadas com outros microprocessadores. 1. 1.12. no byte de memória interna 08H. pois aqui o armazenamento se faz no sentido dos endereços crescentes e os bytes são empilhados um a um. respectivamente. dois temporizadores/contadores (Timer 0 e Timer 1) e o canal de comunicação serial.Endereços de desvio das interrupções 7 6 5 4 3 2 1 0 EA . Os endereços de desvio das interrupções são fixos e dados pela tabela 1. deve escolher outro local para a pilha.6. EX1. o registrador SP aponta sempre para o topo da pilha.6. ET1 e ES do registrador IE (Interrupt Enable). ES ET1 EX1 ET0 EX0 Fig. e por isso não se pode especificar um registrador diferente de A.1. por default. Para que uma interrupção esteja habilitada. • retorno de sub-rotinas e interrupções: os dois bytes que formam o endereço de retorno são copiados para o PC. ET0. onde inicia também o banco de registradores 1. O bit EA (Enable All) permite habilitar (1) ou desabilitar (0) todas as interrupções de uma só vez. de modo que a pilha começa. do timer 1 e do canal serial.7 Endereçamento implícito de registradores Algumas instruções trabalham sempre com um certo registradores. Interrupção Interrupção externa 0 Timer 0 Interrupção externa 1 Timer 1 Canal serial Endereço 0003H 000BH 0013H 001BH 0023H Tab. as entradas das interrupções externas e o canal serial ocupam pinos da porta P3. 1. • chamadas de sub-rotinas e interrupções: os dois bytes que formam o endereço de retorno são empilhados. Exemplo: a instrução DA A atua sempre sobre o acumulador.. O valor de SP após um reset é 07H. Conforme descrito na seção 1. se o programa precisar trabalhar com mais de um banco de registradores. O funcionamento da pilha também é diferente. 1. O 8051 permite habilitar ou desabilitar cada interrupção individualmente através dos bits EX0. . Desta forma.8 Funcionamento da pilha É importante notar que SP é um registrador de 8 bits. Além disso. que aparece na figura 1. Esses bits controlam as interrupções externa 0. SP endereça somente a RAM interna. de acordo com as seguintes regras: • instrução PUSH: SP é incrementado e o byte é escrito na posição apontada por SP.9 As interrupções O 8051 tem cinco fontes de interrupção: duas entradas externas (INT0 e INT1). tanto o bit correspondente quanto EA precisam estar setados.

a interrupção correspondente tem garantia de ser detectada se o pino permanecer em 0 por pelo menos 12 períodos de clock.. .x e INT. São controlados por software e também por sinais externos aplicados ao microcontrolador.14. PX1. 1.O registrador IP Além disso. o bit correspondente é setado. os bits de 0 a 3 do registrador TCON (figura 1.10 Os temporizadores / contadores O 8051 é dotado de dois temporizadores/contadores internos programáveis.18 .1 Habilitação da contagem Diz-se que um timer está habilitado quando estão satisfeitas todas as condições para que sua contagem progrida com o passar do tempo. de acordo com o registrador IP (Interrupt Priority). 1. TR0 e TR1 (bits 4 e 6) permitem habilitar ou desabilitar (parar) a contagem. Os bits IT0 e IT1 (bits 0 e 2) determinam o modo de reconhecimento das interrupções..16) permitem programar o modo de reconhecimento das interrupções externas INT0 e INT1. o que gera um pedido de interrupção (que será atendido se a interrupção correspondente estiver habilitada).O registradorTCON 7 6 5 4 3 2 1 0 Gate1 C/T1 M1. Os bits PX0. INT1. Os bits IE0 e IE1 (bits 1 e 3) são flags que sinalizam internamente os pedidos de interrupção. PT0.18.1 M0. PT1 e PS permitem setar a prioridade das interrupções associadas aos elementos INT0. ‘x’ como um nome genérico para 0 ou 1). respectivamente. bem como dos sinais externos aplicados aos pinos T.x (entenda-se. Timer 1 e canal serial. a interrupção correspondente acontece quando ocorre uma transição de 1 para 0.. se por nível ou por transição.x. PS PT1 PX1 PT0 PX0 Fig.0 M0. 7 6 5 4 3 2 1 0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 Fig.O registrador TMOD Os bits TF0 e TF1 (5 e 7) de TCON são flags associados aos Timers 0 e 1. deste ponto em diante chamados simplesmente de timers.x e GATE. respectivamente. Os registradores associados à programação dos timers. 1.0 Fig. aparecem nas figuras 1.9/30 . O registrador TMOD (figura 1.16 e 1.10. 1. Microcontrolador 8051 .18. Os bits de 0 a 3 deste registrador dizem respeito às interrupções e foram discutidos na seção 1.16b) define o modo de funcionamento dos timers. TCON e TMOD. . na geração de pedidos de interrupção periódicos. deste ponto em diante. discutido logo adiante.A cada interrupção está associado um de dois níveis de prioridade (alto ou baixo). Quando um destes bits está em 0. que aparece na figura 1... 7 6 5 4 3 2 1 0 .14 . ou ainda na contagem e na medição da largura de pulsos externos. 1. Timer 0.1 Gate0 C/T0 M1.16 . A habilitação dos timers depende dos valores atribuídos aos bits C/T. Os timers são geralmente utilizados para a geração de eventos após decorrido um determinado intervalo de tempo (timeouts).. Estes níveis são tais que um tratador de interrupção só pode ser interrompido por um pedido de interrupção de nível superior. respectivamente para Timer 0 e Timer 1. São colocados automaticamente em 1 quando há uma transição de 1 para 0 no pino correspondente e em 0 quando essa interrupção é atendida. Cada vez que ocorre um overflow (passagem de FFH para 0) na contagem de um timer. quando em 1.

x = 0) e com o bit GATE. Essa figura mostra ainda o mecanismo de habilitação da contagem. Desta forma. Para tanto.x = 0 e M0.10. conecta-se o sinal a medir ao pino T. da seguinte forma: ◊ INT.As condições de habilitação de um timer são as seguintes: • o bit TR. Desta forma. configura-se o timer como contador (bit C/T.x = 1): neste modo.x = 1. • caso contrário (bit GATE. mas sim a cada transição descendente de um sinal externo. Os dois mecanismos acima podem ainda ser combinados para contar pulsos de um sinal externo somente durante um intervalo de tempo determinado por outro sinal externo. que gera o pedido de interrupção associado. Note a representação do bit C/T.x permite medir a largura de pulsos externos.2 Aplicações A possibilidade de se habilitar um timer externamente através do pino INT. 1. formado por THx e pelos 5 bits menos significativos de TLx. É possível também contar pulsos externos.x = 0. obtendo-se uma contagem proporcional à duração do pulso.x = 0 e M0. descrito no início desta seção. Desta forma. o que significa que o contador avança a cada ciclo de instrução do microcontrolador.x. mais antiga. Modo 1 (M1.10/30 . colocado no pino T. cuja freqüência de contagem é igual a 1/32 da freqüência de clock.x = 1. a contagem avançará de acordo com os pulsos recebidos no pino T. Este modo existe por razões de compatibilidade com a família MCS48.20 representa o funcionamento dos timers nos modos 0 e 1. conecta-se o sinal cuja largura se deseja medir ao pino INT.x = 1) O funcionamento deste modo é semelhante ao do modo 0.x. Para tanto. • contador (bit C/T.x = 0) Neste modo.x deve estar em 1. A largura do pulso pode então ser calculada a partir do período do sinal de clock.x.x estiver em 0. os registradores TLx e THx são vistos como um contador de 13 bits.x. O modo de operação é definido pelos valores dos bits M0. a contagem avançará a cada pulso do sinal externo.x = 1) com o bit GATE.10. utilizado na habilitação).x (não confundir com o pino INT. A única diferença é que o par de registradores TLxTHx é visto como um contador de 16 bits. Para tanto. A figura 1. o timer estará habilitado.x e M1. ◊ INT.3 Modos de operação Cada timer pode operar em um de quatro modos de operação diferentes. Os 3 bits mais significativos de TLx são indeterminados e devem ser ignorados. a contagem avançará enquanto o sinal externo estiver em nível alto. Microcontrolador 8051 . Modo 0 (M1.x do registrador TMOD. em forma de uma chave que seleciona a fonte de pulsos de clock para o timer e também a saída “overflow”.x = 1) e com o bit GATE.x = 0: contador desabilitado.x = 1). 1. com o timer correspondente configurado como temporizador (C/T. a contagem avançará de acordo com a configuração do timer: • temporizador (bit C/T. • se o bit GATE. Satisfeitas estas condições. a contagem não avança de acordo com o oscilador interno. com o contador configurado como contador (C/T. O registrador THx pode ser visto como um contador de 8 bits.x = 1: contador habilitado.x estiver em 1. a habilitação pode ser controlada pelo usuário através do pino externo INT. mas somente enquanto o nível no pino INT.x = 0): a contagem é incrementada a cada 12 ciclos do oscilador interno.x.x.

1. não se pode desabilitar sua contagem através de TR1. O overflow faz também com que o flag TFx seja setado e portanto gera um pedido de interrupção.x = 1 e M0. OSC /12 C/T=0 Tx PIN C/T=1 TRx CONTROL TLx (8 bits) overflow TFx INTERRUPT GATE THx INTx PIN (8 bits) Fig.24.x = 0) Neste modo. conforme a figura 1. Contudo. o registrador TLx funciona como um contador recarregável de 8 bits. O par de registradores TL1TH1 continua funcionando como um contador de 16 bits. que será atendido de acordo com as regras de habilitação das interrupções.x = 1) TL0 e TH0 funcionam como dois contadores independentes de 8 bits. deve-se colocar TL1TH1 também no modo 3. Então. 1.Funcionamento dos timers no modo 2 Modo 3 (M1. e TF1 não reage quando ocorre overflow da contagem em TL1TH1. se o Timer 0 estiver no modo 3 e o Timer 1 for colocado no modo 3. Microcontrolador 8051 .x = 1 e M0.OSC /12 C/T=0 Tx PIN C/T=1 TRx CONTROL TLx (5 bits) (8 bits) THx (8 bits) TFx INTERRUPT overflow GATE INTx PIN Fig. O registrador THx contém o valor que é recarregado automaticamente em TLx sempre que a contagem deste sofre um overflow (passagem de FFH para 00). Para desabilitar a contagem de TL1TH1 quando TL0TH0 estiver no modo 3.22 .11/30 .Funcionamento dos timers nos modos 0 e 1 Modo 2 (M1. Note que TR1 e TF1 são desviados do Timer 1 e utilizados para controlar TH0. O valor de THx não sofre qualquer alteração e TLx retoma a contagem a partir do valor carregado.22. o par TL1TH1 pára de contar e preserva seu valor até que outro modo de funcionamento seja escolhido para o Timer 1. conforme a figura 1.20 .

FD Bits 8 10 Taxa de TX Fclock/12 Variável Fclock/32 ou /64 Variável Tab. 1. apresentado na figura 1. mas não simultânea) é possível. a leitura desse registrador retorna o último byte recebido. 1.. escrever em SBUF implica no envio do byte escrito através da interface serial. o que significa que.Timer 0 no modo 3 e alterações no timer 1 1.28. apenas a comunicação half-duplex (HD. HD Assíncrona. de acordo com a tabela 1. .. e pelo bit SMOD do registrador PCON. O controle do canal serial é feito pelo registrador SCON. 1. FD Assíncrona. O sinal de clock necessário para o Microcontrolador 8051 . GF1 GF0 PD IDL Fig. As palavras são transmitidas e recebidas através do pino RxD. .28 .26 . transmissão nos dois sentidos.Modos de funcionamento do canal serial Modo 0 (SM0 = 0 e SM1 = 0) Este modo implementa a comunicação síncrona de palavras de 8 bits.. Os bits SM0 e SM1 do registrador SCON selecionam o modo de funcionamento. escrita ou leitura.INT1 PIN GATE 0 se modo 3 para timer 1 C/T=1 CONTROL TH1 TL1 T1 PIN C/T=0 TR1 CONTROL TH0 OSC /12 C/T=0 T0 PIN C/T=1 TR0 GATE CONTROL TL0 (8 bits) overflow TF0 INTERRUPT (8 bits) overflow TF1 INTERRUPT INT0 PIN Fig. 1.8 .24 .12/30 ... um deles utilizado na transmissão e outro na recepção. contudo. referencia ambos pelo nome SBUF. 7 6 5 4 3 2 1 0 SM0 SM1 SM2 REN TB8 RB8 TI RI Fig. A distinção entre eles é feita de acordo com a natureza da operação.O registrador PCON 7 6 5 4 3 2 1 0 SMOD . analogamente.8.26.O registrador PCON SM0 0 0 1 1 SM1 0 1 0 1 Modo 0 1 2 3 Tipo Síncrona. Desta forma. O conjunto de instruções.11 O canal serial A interface serial no 8051 conta com dois registradores de dados. neste modo. que aparece na figura 1.. FD Assíncrona.

Normalmente são necessários um editor de programas.2. e um stop bit (nível lógico 1). Modo 3 (SM0 = 1 e SM1 = 1) Igual ao modo 2 exceto pela taxa de transmissão. que são trechos de programas fontes aos quais é atribuído um nome. A taxa de transmissão é dada pela equação Tx = f clock 2 SMOD × .sincronismo é enviado pelo pino TxD. é este bit que se lê em RB8. permite habilitar a comunicação entre vários 8051. oito bits de dados. Modo 1 (SM0 = 0 e SM1 = 1) A palavra transmitida é composta por 10 bits: um start bit (nível lógico 0). 32 12(256 − TH1) (1. ou durante a recepção de um stop bit nos outros modos.13/30 . dependendo do modo de operação selecionado: • no modo 0. Microcontrolador 8051 . e no início da transmissão do stop bit nos outros modos. Na recepção. TI é o bit de requisição de interrupção da transmissão. O bit SM2 do registrador SCON tem diferentes interpretações. dada também pela equação 1. além de simuladores ou emuladores. o primeiro start bit em RxD implica recepção de um dado em SBUF. inibe (SM2 = 1) ou habilita (0) a geração de um pedido de interrupção da porta serial quando da recepção de um stop bit inválido. É setado pelo hardware após a transmissão do oitavo bit de dados quando no modo 0. Este nome pode então ser usado em qualquer parte do programa como se fosse uma instrução. A taxa de transmissão pode ser escolhida entre 1/64 (SMOD = 0) ou 1/32 (SMOD = 1) da freqüência de clock do sistema.2) onde SMOD é o bit 7 do registrador PCON (figura 1.28b) e TH1 é o registrador mais significativo da contagem do timer 1. REN (Reception ENable) habilita a recepção. não tem qualquer efeito. Nos demais modos. A maioria dos sistemas de desenvolvimento para microprocessadores e microcontroladores se baseiam no PC. É setado pelo hardware no momento da recepção do oitavo bit de dados no modo 0. Quando está em 1. O bit RI é o bit de requisição de interrupção na recepção. • no modo 1. A taxa de transmissão é fixa e igual a 1/12 da freqüência do clock do sistema. Muitos cross-assemblers permitem a inclusão de macros. transmissão simultânea nos dois sentidos). • nos modos 2 e 3.12 Sistema de desenvolvimento Avocet Um sistema de desenvolvimento é um sistema que permite fazer a edição. Assim. um cross-assembler e/ou um compilador e um linker. os dados são enviados através do pino TxD e recebidos através do pino RxD. esses modos permitem comunicação full-duplex (FD. depuração e teste de programas para um determinado tipo de processador. TI e RI devem ser reinicializados pelas rotinas de tratamento das respectivas interrupções de modo a habilitar novas interrupções. devendo permanecer em 0. 1. O bit adicional enviado é o bit TB8 de SCON. Modo 2 (SM0 = 1 e SM1 = 0) Cada palavra de dados é composta de 11 bits.

12.HEX) com nome diferente do arquivo-fonte.Conjunto de ferramentas de desenvolvimento 1. 1. no caso do exemplo acima: AVLINK51 <nome>=<novo nome> Nesta etapa.ASM.C AVC Y. no caso do exemplo acima: AVMAC51 <nome> Nesta etapa.ASM AVMAC51 Programa Fonte em Assembly SIMULADOR X.hex e <novo nome>. 1.OBJ AVLINK XYZ. são gerados os arquivos <novo nome>.2 Montagem A sintaxe para chamar o assembler é.2 Roteiro de elaboração de um programa Esta seção apresenta os passos a serem seguidos para a elaboração de um programa para microcontroladores da família 8051.2.30.prn contendo. respectivamente. Normalmente utiliza-se a sintaxe AVLINK51 <nome>=<nome>. Praticamente todos os fornecedores de software para este tipo de desenvolvimento apresentam o mesmo elenco de programas utilitários. O sistema oferece. através da sintaxe <nome>=<novo nome>.12. Microcontrolador 8051 . O nome do arquivo deve ter no máximo oito letras e extensão .12. que permita gravar arquivos em formato ASCII. criar o programa-fonte. 1.14/30 . respectivamente. mas esta facilidade é raramente útil.LIB GRAVADOR DE EPROM HARDWARE Fig.1.12.1 Sistema de desenvolvimento Avocet Dentre as diversas ferramentas de software para o desenvolvimento de programas para a família 8051. os códigos hexadecimais em arquivo-texto e o mapa de linkagem.30 .2. são gerados os arquivos <nome>. ilustrado na figura 1. 1.1 Edição do programa-fonte Utilizando um editor de texto simples. utilizando as ferramentas da Avocet.3 Linkagem A sintaxe para chamar o linker é.OBJ AVLIB Y.12. os códigos hexadecimais correspondentes às instruções e a listagem para consulta dos resultados. uma das mais conhecidas é o conjunto da Avocet. X.HEX CARREGADOR XY.obj e <nome>.2. a oportunidade de criar um programa final (.map contendo.

2. estão disponíveis os comandos da tabela 1.5 Gravação em EPROM Uma vez depurado e funcionando. E (Exit).4 Simulação Um simulador é um programa que roda em um determinado computador e simula a operação de uma outra CPU. O simulador da Avocet é chamado através do comando AVSIM51 1. tecle L (Load) para carregar um programa.12. escolha a opção C (8031). onde são exibidos os registradores do 8031.10. digite o nome do programa a ser carregado. • após o primeiro toque da tecla ESC. digite ESC.2. o cursor estará no campo de registradores. Esta tecla desloca o cursor alternadamente entre a linha de comandos (na parte inferior da tela) e a parte superior da tela. 1. tecle ESC. Q (Quit). e finalize com Enter. • a partir deste ponto. Microcontrolador 8051 .12.12.6 Utilização do simulador AVSIM51 • • • • • • Chame o programa: AVSIM51. Digite o endereço correspondente ao início do programa. o programa está pronto para ser colocado na EPROM do sistema que utiliza o microcontrolador.15/30 . com a extensão .2. mais especificamente sobre o campo PC (Program Counter). • para sair do programa de simulação.1.HEX. digite P (Program) para escolher um programa.

Em seguida. porta 2 Serial BUF/COM Contador de ciclos Ctrl Pg Up Ctrl A / B Ctrl D Ctrl I Ctrl P Ctrl R Ctrl S Ctrl T Alt 0-7 Alt A.hex e simule-o no AVSIM51 para verificar suas previsões. 1.@A+DPTR SJMP $ DB "1234567890ABCDE".0 END Microcontrolador 8051 . 1.R7 Janelas de dados Porta 0.Representação de constantes no AVSIM51 1.16/30 MENS . Sistema de numeração Decimal Hexadecimal Binário Notação 255 $FF ou 0FFH %111 ou 111B Tab.@R1 MOV DPTR. juntamente com a tabela de instruções.Hex.#MENS MOVC A.Controle de execução e exibição F1 F10 F9 F2 F3 F4 F5 Alt F5 F6 Alt F6 F8 RUN Single Step (passo a passo) UNDO .13 Exercícios 1. MOV R1.Comandos do simulador AVSIM51 A representação de constantes na tela do simulador se dá segundo a convenção da tabela 1. Bin. crie um arquivo-fonte com o programa. / linha de comando Cursor . B Alt P. que constam dos anexos.12.Q Alt SC Alt Y Ctrl CXFO Flags C/AC/FO/OV Tab.12 .10 . ASCII Scroll lock Registradores A / B Data Pointer Interrupções PC Banco de Registradores SP Timers / counters R0 .volta um comando Move Breakpoint UP Set breakpoint Move Breakpoint DOWN Velocidade de simulação Alternar apresentação de símbolos / valores hexadecimais Atualizar todas as janelas / somente janelas com trace ligado Liga / desliga trace das janelas Liga / desliga skip Esc F7 Movimentação do cursor Regs. gere o arquivo .#4 INC @R1 MOV A. São necessárias as diretivas ORG e END.#3 MOV R3. Estude as instruções que aparecem no programa abaixo e procure determinar o valor do acumulador ao final da execução.

GRAVA DADO . ORG 2000H. Para o programa acima. um novo caracter do arquivo é lido. CONTADOR DOS IMPARES . incluindo espaços em branco e caracteres de fim de linha (0DH. Opcionalmente.@R0 MOV P2. em caso contrário. Cada vez que o programa acessa a porta. DADOS NO BANCO2 RS1 RS0 = 10 .#0 INICIO: CLR RS1 MOV R0. pode-se fazer com que a leitura do arquivo recomece do início sempre que o programa chegar ao fim do arquivo. CONTADOR DOS PARES .A MOV R1. 0AH).A MOV R1.#22H INC A SETB RS0 MOV R0.A ANL A.#00H INC A SETB RS0 MOV R0. MOV A. DADOS NO BANCO0 RS1=RS0=00 .A MOV R2.#33H MOV R3.#22H MOV R3.#01 JNZ IMPAR PAR: INC R2 MOV A. O valor lido é o valor hexadecimal do caracter. INICIO DO ARMAZENAMENTO .#11H INC A CLR RS0 SETB RS1 MOV R0. crie com um editor de texto um arquivo chamado P1. DADOS NO BANCO3 RS1 RS0 = 11 3. DADOS NO BANCO1 RS1 RS0 = 01 .P1 MOV @R0. todos os dados são armazenados seqüencialmente a partir da posição de memória 20H ORG 2000H MOV R0. o que garante uma fonte ininterrupta de dados para simulação.17/30 .2.A MOV R2. que é associado a essa porta.#0H INICIO:MOV A.A MOV R1.A MOV R2. MOSTRA DADO Este programa utiliza a porta P1 como porta de entrada. dentro do simulador. Os dados pares são colocados na porta P2 e os dados ímpares na porta P3.A MOV R2.#0H MOV R2.#11H MOV R3.#33H INC A JMP INICIO END CLR RS0 . incrementa R1.@R0 INC R0 MOV P3.A MOV R1. incrementa R2. contendo a linha: Microcontrolador 8051 .A INC R0 JMP INICIO IMPAR:INC R1 MOV A.A JMP INICIO END . Se o valor lido for par. VER SE PAR OU IMPAR .#20H MOV R1. O programa abaixo lê a porta P1.#00H MOV R3. Use o simulador para ver a troca dos bancos de registradores no programa abaixo. Isto se faz através de um arquivo.DAT.

2. ◊ perguntado sobre o modo de IO TRIGGER. comece a simulação. responda somente com Enter (não cria arquivo de saída).2. conforme mostra a figura 2.0123456789 e um “ENTER” no final. através do qual é possível transferir programas desenvolvidos no PC para o kit. 2. perguntado se deseja criar um arquivo de saída. perguntado se a leitura deve recomeçar do início. Para associar o arquivo de entrada à porta P1.O display de cristal líquido do kit WF Microcontrolador 8051 .DAT.#dado. P1.2 .DAT é lido. digite P1. um novo caracter do arquivo P1. opção Open. ( Use a instrução CJNE Rn. Os dados escritos nas portas P2 e P3 podem ser observados no simulador. responda Yes.2 .18/30 . Pode comunicar-se com um PC através do canal serial. pode criar um arquivo de saída e examinar os dados colocados lá depois que encerrar a simulação.IN.0 tem uma CPU 8031. selecione Opcode access. v.1 Apresentação O sistema mínimo 8031 v. 2. dividida em duas áreas de oito colunas.endereco ). listados na tabela 2. Componente EPROM 2732 (8 kB) RAM 6264 (8 kB) LCD Endereços 0000H .Componentes periféricos do kit WF O display de cristal líquido (LCD) possui uma linha. ÁREA 1 0 1 2 3 4 5 6 7 0 1 2 ÁREA 2 3 4 5 6 7 Fig. como se estivesse presente na porta nessa hora.4002H Tab. Este conta ainda com outros componentes. Monte o programa e carregue-o no AVSIM51. ◊ perguntado sobre o modo de transferência de IO. siga os passos abaixo: ◊ ◊ ◊ ◊ use o comando IO. Altere o programa para que ele fique em um loop ( JMP $) quando tiver encontrado 3 dados pares ou 3 impares.3FFFH 4000H . digite o nome do arquivo de entrada. Opcionalmente. cada vez que o programa faz um acesso de leitura à porta P1. Observe que. 2 O kit de desenvolvimento WF 2.1FFFH 2000H . Em seguida.2 juntamente com os endereços que ocupam.

são usados para acessar a memória externa. o timer 1 é utilizado para determinar a taxa de transmissão do canal serial e portanto também só pode ser usado em outras aplicações se não houver necessidade de comunicação através do canal serial.4.2 Restrições As portas P0 e P2. depois de carregados no kit.Sub-rotinas de serviço do kit WF 2. Além disso. (coluna em A) Imprime mensagem no display (inicio=DPTR. Microcontrolador 8051 .0 e P3.4 .7. 2. não façam mais uso da comunicação com o PC. É preciso tomar muito cuidado com instruções que manipulem os registradores SCON.6 e P3.3 Sub-rotinas de serviço Na EPROM existem diversas sub-rotinas que dão suporte à execução de tarefas tais como a entrada e saída de dados via terminal do PC e a apresentação de mensagens no LCD. Nome Endereço Descrição tempo APAGA APAGAT LEBYTE NUMTER NUMLCD CARLCD AREA1 AREA2 MENLCD APACUR ACECUR HOMCUR OUTLCD CARTER MENTER LENUM LEMENS TECPRES CODTECL 0089H 0196H 00D0H 0164H 013EH 0071H 00A4H 00ADH 00B6H 009BH 01BDH 0092H 0059H 01AAH 0118H 00DDH 00F3H 01C6H 01DAH Apaga display Apaga terminal de vídeo Lê numero digitado no teclado (byte fica em a ) Imprime numero no terminal.19/30 .6. Se isto acontecer. (valor em A) Tab. 2.(numero em A) Lê mensagem digitada no terminal. TMOD e TCON para evitar que as configurações do timer 1 e do canal serial não sejam alteradas involuntariamente. Os bits P3. (coluna em A) Posiciona cursor do display na área 2. PCON.4 Alguns endereços importantes Além dos endereços das sub-rotinas apresentadas acima.1 e o bit 7 do registrador PCON são utilizados na transmissão de dados pelo canal serial e portanto só podem ser utilizados por programas que. (valor de a) Imprime numero no display (valor de a) Imprime caracter no display (valor de a) Posiciona cursor do display na área 1. (DPTR=endereço) Faz CY = 1 se alguma tecla foi pressionada Lê o código da tecla pressionada. bem como os pinos P3. A chamada dessas subrotinas é feita mediante a instrução LCALL <nome da subrotina>. Estas sub-rotinas estão listadas na tabela 2. a comunicação com o PC pode apresentar problemas. 0 =fim) Apaga cursor do LCD Acende cursor do LCD Home cursor do LCD Comando para LCD Imprime caracter no terminal de vídeo (dado de A) Imprime mensagem n terminal de vídeo. inicio=DPTR Lê numero digitado no terminal. são importantes os endereços listados na tabela 2.2.

O redirecionamento das interrupções.4. tratador da interrupção externa 0 . INICIO: . EDIT. Microcontrolador 8051 . é conseguido através das linhas finais do arquivo ENDERECO. que coloca instruções RET em todos os endereços listados na tabela 2.6 . no início do programa. T0 redirecionada . reproduzidas abaixo. • um montador. T1 redirecionada Note que estas linhas não têm efeito sobre programas transferidos para o kit.. no simulador.Endereços da RAM e desvios das interrupções Tanto os endereços da tabela 2. instruções do programa Um outro problema que aparece no desenvolvimento de programas para o kit WF é que o simulador AVSIM51 não possui as sub-rotinas de serviço e portanto não pode simulá-las. Convém incluir este arquivo no início de todos os programas desenvolvidos para o kit WF com a seguinte diretiva %INCLUDE ENDERECO.. AVMAC51. este arquivo só tem efeito no simulador.2) Redirecionamento da interrupção do timer 0 Redirecionamento da interrupção externa 1 (P3. Mais uma vez.ASM. INT 1 . A utilidade deste redirecionamento está em permitir a execução de programas no simulador.ASM.. 2.. T0 . T1 . é preciso tomar cuidado para que o programa não se perca quando saltar para uma dessas sub-rotinas. ORG 200BH . pois este tem EPROM nos endereços modificados. Por isso.6 encontram-se definidos como sinônimos no arquivo ENDERECO. programas que utilizem tratadores de interrupção devem seguir a estrutura dada abaixo: ORG RAM SJMP INICIO ORG 2003H . se um programa escrito para chamar sub-rotinas da tabela 2.Descrição Início da RAM Redirecionamento da interrupção externa 0 (P3. o arquivo RET. A solução adotada aqui consiste em incluir. 2. INT 1 redirecionada . END .4 for executado no simulador. ORG 0003H LJMP RAM+0003H ORG 000BH LJMP RAM+000BH ORG 0013H LJMP RAM+0013H ORG 001BH LJMP RAM+001BH ORG RAM .3) Redirecionamento da interrupção do timer 1 Endereço 2000H 2003H 200BH 2013H 201BH Tab.. INT 0 .20/30 . No KIT isto está gravado na EPROM. INT 0 redirecionada . pois o kit tem EPROM nesses endereços. Então.4 quanto os da tabela 2. Desta forma.ASM..5 Desenvolvimento de programas Para fazer o desenvolvimento de programas para o 8031 são necessários: • um editor.ASM colocada no início do arquivo-fonte. as chamadas das sub-rotinas são ignoradas durante a simulação e não atrapalham. tratador da interrupção do timer 0 .

#MSGBOM .#0. para que se faça a transferência do programa. Uma vez alcançado este estado. onde n identifica a porta serial utilizada pelo PC na comunicação. Para agilizar a compilação.RECARGA MOV R0. Para efetuar a transferência do programa para o kit. %INCLUDE ENDERECO.#0 LCALL AREA1 CJNE R1. endereços das rotinas na EPROM .2 Utilização da interrupção do timer 0 O programa abaixo utiliza o timer 0 para controlar a escrita das palavras “BOM” e “DIA” no LCD. 15 Int perfazem 1 segundo . avmac51 %1 @pause avlink51 %1=%1 hexbin %1.ASM TIMER0H EQU 10H TIMER0L EQU 01H ORG RAM LJMP INICIO . AVLINK51.21/30 .DIA BOM: MOV DPTR.6 Exercícios 2. seleciona a mensagem Microcontrolador 8051 .8. • um conversor de arquivo HEX (texto) para BIN (binário). pode-se criar um arquivo batch com o conteúdo listado abaixo. LINK8031. cursor na coluna 0 .#15. da área 1 do LCD .Seleção da porta serial para comunicação com o PC O LINK8031 pedirá então ao usuário que pressione o botão de RESET do kit.INTERRUPCAO DO TIMER 0 ORG 200BH INC R0 CJNE R0. pode-se digitar av <nome do arquivo fonte> para criar o programa.• um linkador. Em seguida. Quando estiver sendo utilizado o conector padrão RS-232C. o LINK8031 pede que o usuário pressione uma tecla do PC para iniciar a execução do programa no kit. o PC passa a funcionar como terminal de entrada e saída para o programa carregado no kit. valores para o timer 0 .#00 MOV A. conecte-o ao PC pela interface serial e digite: LINK8031 EXEMPLO n.10.bat. de acordo com a tabela 2. Para sair do modo terminal. que alternam a cada segundo. HEXBIN. pressionam-se as 2 teclas SHIFT simultaneamente. n 1 2 3 4 Porta selecionada 03F0H (COM 1) 02F0H (COM 2) 03E0H (COM 3) 02E0H (COM 4) Tab. • um programa para transferir o arquivo do PC para o kit.8 .hex %1. a porta escolhida deve ser a primeira disponível. 2.bin I Supondo ser o nome dado a este arquivo av. 2.

#MENS1 CALL MENTER LCALL APAGA MOV R1.ASM CR EQU 0DH LF EQU 0AH ORG RAM LJMP INICIO ORG 2003H RETI ORG 200BH RETI INICIO: MOV DPTR. O programa termina quando tiverem sido digitados 4 números do mesmo tipo (pares ou ímpares).0 DB "DIA!!!!!". valor inicial do timer 0 .PAR IMPAR: MOV A. ENTRADA DO TECLADO . ENDERECOS DAS ROTINAS NA EPROM . DESVIA SE PAR . timer 0 no modo de contagem 1 . VER SE É PAR OU IMPAR . Logo. Como o número de contagens deve ser inteiro.LACO MOV DPTR. Como o limite de contagem do TIMER e' 65536. liga timer 0 Comentários sobre a obtenção dos valores de TH0 e TL0 A freqüência do cristal = 11.424 ns.#1.#TIMER0L RETI INICIO: LCALL APAGA MOV R0.#TIMER0H MOV TL0.LCALL MENLCD MOV R1. alterna a mensagem . %INCLUDE ENDERECO.#4 MOV R4.0 END .61439 = 4097 = 1001H. 15 ESTOUROS = 1 segundo . CONTADOR . inicializamos TH0=10H e TL0=01H. .#1 SJMP RECARGA DIA: MOV DPTR.#1 MOV TH0. INTERRUPCAO DO TIMER 0 .059MHZ==> Período = 90. .22/30 .#MSGDIA LCALL MENLCD MOV R1.#4 LACO: LCALL LEBYTE CALL APAGA PUSH ACC ANL A. NÃO USADO . .062 contagens de 65536. habilita interrupção do timer 0 . CONTADOR DE NÚMEROS PARES .#0 RECARGA: MOV TH0. seriam necessárias 14.#0 MOV TMOD. RECUPERA VALOR LIDO . usamos 15 contagens.#0 CALL AREA1 POP ACC CALL NUMLCD DJNZ R1. é preciso contar 921584 ciclos (1s / (12 * 90. Os números ímpares aparecem na área 1 do LCD e os pares na área 2. . Logo.#0 MOV R1.#1 CJNE A. O timer é incrementado a cada ciclo de instrução (12 períodos de clock). . . SALVAR VALOR LIDO . Queremos uma pausa de 1 segundo. ENDERECO DA RAM . ATINGIU N IMPARES Microcontrolador 8051 . alterna a mensagem . Cada contagem deve ser então de 921584 / 15 = 61439. . Para tanto. . . . INICIO DO PROGRAMA . o timer 0 deve partir de 65536 . SEM INTERRUPÇÃO . 2. INTERRUPCAO INT0 . LIMPAR DISPLAY . R1 seleciona a msg a ser apresentada .6.424 * 10exp-9)).#MENIMP . DEFINIR AREA1 . R0 CONTA OVERFLOWS DO TIMER 0 . CONTADOR DE NÚMEROS IMPARES . DB "!!!!!BOM".2 Leitura de números do teclado O programa abaixo lê números até 256 do teclado do PC. habilita todas as interrupções . . MOSTRAR VALOR IMPAR .#TIMER0L SETB ET0 SETB EA SETB TR0 SJMP $ MSGBOM MSGDIA .#TIMER0H MOV TL0.

7. 8. 15.23/30 .CR. Se o bit P1.7 com freqüência variável e proporcional aos 4 bits menos significativos de P1.Gerar uma onda quadrada na saída P1. O programa principal deve ler o teclado do PC e mostrar o valor hexadecimal da tecla no terminal e no LCD. a partir de uma posição de memória solicitada ao operador pelo teclado.PAR: FIM: MENS1 MENPAR MENIMP SJMP FIM MOV A.Incrementar o conteúdo da posição de memória 20H quando a porta P1. Fazer um programa que escreva os números de 1 a 5 nos endereços a partir de 50H e 2200H 5. POSICIONAR AREA2 CALL AREA2 POP ACC .0 END 2. Fazer um contador hexadecimal que coloque este valor na porta P1.#0 . ATINGIU N PARES CALL APAGA CALL MENLCD .0 DB '4IMPARES'. 4.7. Copiar os dados da região de memória 2100 até 210F para 2300H e seguintes. após 1 segundo apagar e escrever na área 2 e assim sucessivamente. 17.Gerar uma forma de onda retangular na saída P1.CR. Defina uma tecla para avançar para a linha seguinte e outra para retroceder. 14. 13. Fazer um programa que gere uma onda quadrada na porta P1. MOSTRA MENSAGEM DE FINAL ATINGIDO CALL MENTER SJMP $ .6 este valor deve ser decrementado. 2. 7. 12.7 usando o temporizador T0. A onda retangular deve ter um nível alto durante 25 microssegundos e um nível baixo durante 40 microssegundos.Fazer um programa que gere uma onda quadrada na saída P1. em P1. Alterar o contador acima para fazer uma contagem decimal e mostrar os valores de forma legível no display de cristal líquido e no terminal de vídeo (incluir um delay) para permitir a leitura.7 usando o temporizador T0.7 foi colocada em nível baixo. com a maior freqüência possível.0 DB '4 PARES '.#MENPAR .6 do 8031. binário e decima no terminal de vídeo. Microcontrolador 8051 . mostrar o conteúdo desta posição de memória no vídeo e no display. Fazer um programa para apagar as duas áreas do display e escrever a letra A na terceira coluna da área 1 e o numero 2 na 4 coluna da área 2.7 estiver em zero.6.CR.Contar o numero de vezes que a saída P1. 16.Fazer um programa para ler a porta P1 e mostrar o resultado em hexadecimal. Mostrar o conteúdo de 16 posições de memória.Escrever uma palavra qualquer na área 1 do LCD. 9. PERMANECE PRESO NESTE LACO DB ' ENTRE COM UM NUMERO < 255 '. 11. IMPRIMIR PARES NA AREA2 DJNZ R4. Fazer um programa que gere uma onda retangular na porta P1.Usar o timer para gerar uma onda quadrada P1.3 Outras tarefas utilizando o kit WF 1. Mostrar este valor em decimal na área 1 e no vídeo e em hexadecimal na área 2 e no vídeo. 6.LF DB ' O PROGRAMA IRA DETECTAR SE SAO PARES OU IMPARES '. RECUPERAR VALOR CALL NUMLCD .LF. 3. Gerar uma forma de onda quadrada.LF DB ' O PROGRAMA TERMINA COM A ENTRADA DE 4 DO MESMO TIPO'. 10. no terminal de vídeo.LACO MOV DPTR.

Referências bibliográficas Conceitos básicos de Sistemas Digitais [Mors88] Morse.Idem. Editora Érica Ltda. (1990) da Silva Jr.18. Vidal Pereira: Aplicações Práticas do Microcontrolador 8051.7. em nível baixo. Stephen P. ISBN 085-7194-721-x Microcontroladores 8051 / 80535 [Inte89] [Siem90] [Silv94] [Nico00] Microcontrolador 8051 . 1989. projeto.SP . sistemas e programação.Brasil (1994).G. 8-bit Embedded Controller Handbook.SP Brasil (2000). Editora Campus.24/30 .. 19. Editora Érica Ltda. Quais são os limites e erros nestas medições. Santa Clara. 20.Fazer um programa que possa medir a freqüência de um sinal colocado na saída P1. Rio de Janeiro (1988) INTEL CORPORATION..Medir o intervalo em que a onda retangular gerada no exercício 7 permanece em nível alto.. Siemens A. Tatuapê . Microcomputer Components SAB 80C515 / 80C535. ISBN 085-7194-194-7 Nicolosi Denys: Microcontrolador 8051 detalhado. Tatuapê .: Microprocessadores 8086/8088 Arquitetura.

Interpretação registrador R0 a R7 do banco selecionado por RS1 e RS0 endereçamento indireto do byte endereçado por Ri. ADD ADD ADD ADD ADDC ADDC ADDC ADDC SUBB Operando A. dado8 é uma constante de 8 bits endereçamento imediato.#dado8 A.6.2 Principais diretivas Diretiva ORG EQU DB <valor> DB <valor>.Conjunto de instruções do 8051 3. auxiliary carry e overflow. montagem Criar sinônimos Criar variáveis Criar vetores Criar strings ASCII Incluir arquivos-fonte Indica final de programa Exemplo ORG 2000H CR EQU 0DH.2 Instruções aritméticas Mnem.Rn A. 22H.. de acordo com a seguinte notação: • • • • 0: o flag é resetado nesta operação. DB <string> %INCLUDE END Significado Origin Equate Define byte Define byte Define byte Include End Função Definir ende.3 As instruções As tabelas a seguir apresentam o conjunto de instruções do microcontrolador 8051. As colunas “B” e “C” indicam. -: o flag não é afetado. As colunas “CY”.ASM END 3. LF EQU 0AH CONTAGEM DB 00H TABELA DB 15H. “AC” e “OV” de cada tabela indica como cada instrução afeta. 4.Rn Descrição Soma registrador ao acumulador Soma byte ao acumulador Soma byte no endereço Ri a A Soma dados imediatos a A Soma o registrador e o carry a A Soma byte e o carry a A Soma byte no endereço Ri e carry a A Soma dados imediatos e o carry a A Subtrai Rn e borrow de A: A = A-CY-Rn B 1 2 1 2 1 2 1 2 1 C 1 1 1 1 1 1 1 1 1 CY * * * * * * * * * AC * * * * * * * * * OV * * * * * * * * * Microcontrolador 8051 .. respectivamente.@Ri A. o número de bytes e o número de ciclos de clock de cada instrução. direto é um endereço da RAM interna endereçamento direto de um bit da memória RAM interna ou SFR endereço de 16 bits (LJMP e LCALL) endereço de 11 bits (SJMP e SCALL) endereçamento relativo (SJMP e todos os JMPs condicionais) 3. dado16 é uma constante de 16 bits endereçamento direto.direto A. dependendo do resultado da operação.Anexo . os flags de carry. 35H MSG DB “Mensagem 1” %INCLUDE RET. i ≤ 1 endereçamento imediato.#dado8 A. 1: o flag é setado nesta operação *: o flag é afetado e seu valor pode ser 0 ou 1.Rn A. rel.25/30 .@Ri A. respectivamente.1 Abreviaturas utilizadas na tabela de instruções Abreviatura Rn @Ri #dado8 #dado16 Direto Bit End16 End11 End.direto A.

bit C.@Ri A./bit C.A dir.bit bit.bit C.@Ri A.3./bit C.#dado8 direto.Rn A.A dir.2 Instruções lógicas Mnem.direto A. resultado em BA Divide A/B.SUBB SUBB SUBB INC INC INC INC DEC DEC DEC DEC INC MUL DIV DA A.#dado8 direto.A dir.direto A.#dado8 direto.#dado8 A Rn Direto @Ri A Rn Direto @Ri DPTR AB AB A Subtrai byte e borrow do acumulador Subtrai byte no end. Operando MOV A.#dado A A A A A A A Descrição AND entre registrador e acumulador AND entre byte e acumulador AND entre o conteúdo do endereço Ri e A AND entre dado imediato e o acumulador AND entre acumulador e byte AND entre dado imediato e byte OR entre registrador e acumulador OR entre byte e acumulador OR entre o conteúdo do endereço Ri e A OR entre dado imediato e o acumulador OR entre acumulador e byte OR entre byte e dado imediato XOR entre o acumulador e Registrador XOR entre acumulador e byte XOR entre A e o conteúdo do endereço Ri XOR p/ dado imediato e o acumulador XOR entre acumulador e byte XOR entre byte e dado imediato Zera o acumulador Complementa o acumulador Rotaciona o acumulador para a esquerda Rotaciona A para a esquerda pelo carry Rotaciona A à direita Rotaciona A à direita pelo carry Permuta os bits (3-0) e (7-4) de A B 1 2 1 2 2 3 1 2 1 2 2 3 1 2 1 2 2 3 1 1 1 1 1 1 1 C 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 CY * * AC OV - 3.4 Instruções de movimentação de dados Mnem.26/30 .3.direto A.3.Microcontrolador 8051 .C Descrição Reseta CY Reseta o bit endereçado Seta o CY Seta o bit endereçado Complementa CY Complementa o bit endereçado AND entre o bit endereçado e CY AND entre CY e complemento do bit OR entre CY e o bit endereçado OR entre CY e complemento do bit Copia bit endereçado para CY Copia CY para bit endereçado B 1 2 1 2 1 2 2 2 2 2 2 2 C 1 1 1 1 1 1 2 2 2 2 1 2 CY 0 1 * * * * * * AC OV - 3. CLR CLR SETB SETB CPL CPL ANL ANL ORL ORL MOV MOV Operando C bit C bit C bit C.Rn A.#dado A. ANL ANL ANL ANL ANL ANL ORL ORL ORL ORL ORL ORL XRL XRL XRL XRL XRL XRL CLR CPL RL RLC RR RRC SWAP Operando A.3 Instruções de manipulação de bits Mnem.Rn Descrição Move registrador para acumulador B C CY AC OV 1 1 ..Rn A.direto A.#dado8 A. Ri e borrow de A Subtrai dados imediatos e borrow de A Incrementa acumulador Incrementa registrador Incrementa byte Incrementa byte no endereço Ri Decrementa acumulador Decrementa registrador Decrementa byte Decrementa byte no endereço Ri Incrementa datapointer Multiplica A e B. quociente em A e resto em B Ajuste do acumulador após adição BCD 2 1 2 1 1 2 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 4 4 1 * * * 0 0 * * * * * * * * * * 0 - 3.@Ri A.@Ri A.

Microcontrolador 8051 . desvio se Rn ≠ 0 Decrementa byte e desvia se ≠ 0 Instrução sem efeito B 2 3 1 1 2 3 2 1 2 2 2 2 3 3 3 3 3 3 3 2 3 1 C 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 CY * * * * AC OV - end11 (2k) end16 (64k) end.A Direto Direto A.direto Rn. ACALL LCALL RET RETI AJMP LJMP SJMP JMP JZ JNZ JC JNC JB JNB JBC CJNE CJNE CJNE CJNE DJNZ DJNZ NOP Operando end11(2k) end16 (64k) Descrição Chamada de sub-rotina Chamada de sub-rotina Retorno de sub-rotina Retorno de interrupção Desvio incondicional Desvio incondicional Desvio incondicional Desvio indireto relativo a DPTR Desvio se A = 0 Desvio se A ≠ 0 Desvio se CY = 1 Desvio se CY =0 Desvio se bit = 1 Desvio se bit = 0 Desvio se bit =1.A Rn.Rn direto.end.direto direto.direto A. rel.end. rel.direto @Ri. end rel.direto A. Rn. @A+DPTR end.MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOVC MOVC MOVX MOVX MOVX MOVX PUSH POP XCH XCH XCH XCHD A.A @DPTR.end.end.#dado8. Rn.@A+PC A. de 8 bits) Move A p/ RAM externa (end.3. de 16 bits) Move byte para a pilha (stack) Retira byte da pilha (stack) Permuta A com Rn Permuta A com byte Permuta A com o conteúdo do endereço Ri Permuta nibble inferior de A c/ byte 2 1 2 1 2 2 2 2 3 2 3 1 2 2 3 1 1 1 1 1 1 2 2 1 2 1 1 1 1 1 1 2 1 1 2 2 2 2 1 2 1 2 2 2 2 2 2 2 2 2 1 1 1 1 - - - 3. de 8 bits) p/ A Move RAM externa (end.A @Ri. rel.end. de 16 bits) p/ A Move A p/ RAM externa (end. bit.@Ri Move byte para acumulador Move conteúdo do endereço Ri para A Move dados imediatos para acumulador Move acumulador para registrador Move byte para registrador Move dados imediatos para registrador Move acumulador para byte Move registrador para byte Move da byte1 para a byte2 Move conteúdo do endereço Ri p/ byte Move dados imediatos para byte Move A para o endereço em Ri Move byte para o endereço em Ri Move dado imediato p/ endereço em Ri Carrega DPTR com constante de 16 bits Move byte endereçado por DPTR+A para A Move byte endereçado por PC+A para A Move RAM externa (end.5 Instruções de controle de fluxo Mnem. end rel. rel. A.#dado8 Rn.Rn A.#dado8 direto.@A+DPTR A.@Ri A.#dado8 DPTR.A direto. rel. rel.@DPTR @Ri. rel.#dado8.#dado8. A.end. end rel.27/30 .direto.@Ri A.end.end.@Ri dieto.#dad16 A. rel. @Ri. rel.rel direto. bit.@Ri A.#dado8 @Ri.end. zera bit Desvio se A ≠ byte Desvio se A ≠ dado imediato Desvio se Rn ≠ dado imediato Desvio se byte endereçado ≠ dado Decrementa Rn. rel. bit.

...............................6...................7.................................3 Endereçamento de bits individuais ......2 A FAMÍLIA 8051 ........................................ 2 DESENVOLVIMENTO DE PROGRAMAS PARA O 8051ERRO! INDICADOR NÃO DEFINIDO..............1 Principais características............................ 4 1.................................1 Endereçamento imediato...................... 4 1................................................ 7 1...........14 2..............................1 SISTEMA DE DESENVOLVIMENTO AVOCET .....2....................................................10 1..3 UTILIZAÇÃO DO SIMULADOR AVSIM51............................... 7 1.............9 AS INTERRUPÇÕES ....6............14 2...........................................................14 2........................ 1 1.......10....................................................................................................................7 MODOS DE ENDEREÇAMENTO....................... 3 1...........................................................14 2........2.............................2....................4 Endereçamento indireto ..................10........... 7 1...................1 Edição do programa-fonte ............................. 8 1.......................2 Montagem ........................7..........15 2. 1 1. ERRO! INDICADOR NÃO DEFINIDO................. 2...6 Endereçamento dos registradores R0 a R7 ........... 9 1.....................6 ORGANIZAÇÃO DA MEMÓRIA DE DADOS ..........................3 Linkagem.............6..........................10.... 7 1........1 Habilitação da contagem.....................15 2......................7..................4 EXERCÍCIOS .....2..28/30 ...........5 Endereçamento indexado .................................... 8 1...............................2 ROTEIRO DE TRABALHO ..................7 Endereçamento implícito de registradores........................................2.. 4 1.....10 OS TEMPORIZADORES / CONTADORES ....................................... 5 1...........4 Simulação ..............................2 Endereçamento direto.........7..........................................................2..........................................4 Os registradores de funções especiais..................................... 1 1........ 8 1.............................................................5 Gravação em EPROM............. 9 1...................... 7 1........7....................5 ORGANIZAÇÃO DA MEMÓRIA DE PROGRAMA ........................................O MICROCONTROLADOR INTEL 8051 .........................................................................................................16 Microcontrolador 8051 ..... 2 1.......................7.................2 Aplicações .............................................................12 PARTE II .....................3 Modos de operação .....3 ANÁLISE EXTERNA .................................3 Mais detalhes sobre a RAM interna ..............8 FUNCIONAMENTO DA PILHA .................................. 6 1................... 7 1.............................15 2.............................. 5 1.....................2 Memória de dados externa..........................................................14 2............1 COMENTÁRIOS SOBRE MICROCONTROLADORES ........................................................7.............. 3 1........ 7 1.............4 MODELO DE PROGRAMAÇÃO SIMPLIFICADO ..................LABORATÓRIO..............10 1.6..........1 Memória de dados interna .....................................................................................................11 O CANAL SERIAL ..............

................ 1.............. 18 Lista de tabelas TAB........TIMER 0 NO MODO 3 E ALTERAÇÕES NO TIMER 1 .......O REGISTRADOR IP .....................2 SUB-ROTINAS DE SERVIÇO ..................3.................. 1..............10 ..... 11 FIG...... 2 FIG................ 1..........................................1 Utilização da interrupção do timer 0......1 ABREVIATURAS UTILIZADAS NA TABELA DE INSTRUÇÕES ........ 26 4....... 6 Microcontrolador 8051 .. 3.....ASPECTO EXTERNO DO 8051 .11 ...................................................................ORGANIZAÇÃO DA PARTE BAIXA DA RAM INTERNA ... 1.......... 1.............1 .................. 23 ANEXO 4 ... 9 FIG...........O DISPLAY DE CRISTAL LÍQUIDO DO KIT WF..............................................1 Restrições .................. 25 4...........................3 O KIT DE DESENVOLVIMENTO WF............. 21 3................. 12 FIG.. 3 TAB..CONJUNTO DE INSTRUÇÕES DO 8051...2 .........O REGISTRADORTCON .........................................3 Instruções de manipulação de bits ...5................ 1.............................ORGANIZAÇÃO DA MEMÓRIA DE DADOS INTERNA DO 8051.................................. 11 FIG. 19 3..................5 ..........................1 .. 12 FIG. 3 FIG......3 ALGUNS ENDEREÇOS IMPORTANTES.......1 APRESENTAÇÃO ............1 Instruções aritméticas..................O REGISTRADOR TMOD.. 1................... 27 REFERÊNCIAS BIBLIOGRÁFICAS...... 4 FIG...................................2 .....O REGISTRADOR SCON.... 9 FIG..............13 ... 26 4..........1 .....................................5.......CONJUNTO DE FERRAMENTAS DE DESENVOLVIMENTO ......... 25 4..... 1..MODELO DE PROGRAMAÇÃO SIMPLIFICADO PARA O 8051.2 PRINCIPAIS DIRETIVAS ........... 2..................6 ................5............. 24 Lista de figuras FIG.............................FUNCIONAMENTO DOS TIMERS NOS MODOS 0 E 1 ... 1...........................................................12 ....................................3 ................................O REGISTRADOR SCON.............................O REGISTRADOR IE..........29/30 ............................ 5 FIG..................... 1... 21 3......... 20 3........................... 19 3.............. 1....... 18 3............2 Leitura de números do teclado .........8 ................3 AS INSTRUÇÕES ..... 8 FIG..4 DESENVOLVIMENTO DE PROGRAMAS.....5 Instruções de controle de fluxo ....................................................................5 EXERCÍCIOS ............... 12 FIG.......................... 1......... 1......2 Instruções lógicas...................................... 9 FIG........................................CARACTERÍSTICAS ESPECIAIS DA FAMÍLIA 8051 .......................................................................................FUNCIONAMENTO DOS TIMERS NO MODO 2 . 1.................................14 ...1 .............. 25 4........... 25 4.SELEÇÃO DOS BANCOS DE REGISTRADORES DO 8051 . 1..3..................... 6 FIG..9 ................................................7 .... 18 3..............................4 ..... 25 4................. 22 3.............................3...................................... 1. 19 3............1.......... 26 4................. 14 FIG........ALGUNS INTEGRANTES DA FAMÍLIA MCS51 .....3...............4 Instruções de movimentação de dados.................3..........3 Outras tarefas utilizando o kit WF .....................

.............ENDEREÇOS DA RAM E DESVIOS DAS INTERRUPÇÕES .....SUB-ROTINAS DE SERVIÇO DO KIT WF ......TAB..........3 ......4 .......1 .... 8 TAB.2 ......12 TAB............16 TAB... 1....ENDEREÇOS DE DESVIO DAS INTERRUPÇÕES ....... 2......... 3.REPRESENTAÇÃO DE CONSTANTES NO AVSIM51 ..... 3.........1 .................MODOS DE FUNCIONAMENTO DO CANAL SERIAL .18 TAB..30/30 . 3... 1.SELEÇÃO DA PORTA SERIAL PARA COMUNICAÇÃO COM O PC21 Microcontrolador 8051 ......COMANDOS DO SIMULADOR AVSIM51.4 ........3 .....19 TAB...2 .COMPONENTES PERIFÉRICOS DO KIT WF... 2.......................20 TAB............ 3......16 TAB....

Sign up to vote on this title
UsefulNot useful