Você está na página 1de 9

Instituto Superior de Engenharia Electrnica e Computadores

Microcontrolador 8051
Sistemas Digitais
(Exerccios de apoio s aulas de laboratrio)

Miguel Leito jml@dee.isep.ipp.pt http://dee.isep.ipp.pt/~jml

Lino Figueiredo lino@dee.isep.ipp.pt

Paula Viana pviana@dee.isep.ipp.pt http://dee.isep.ipp.pt/~pviana

Outubro 1996

Sistemas Digitais

Microcontrolador 8051

1.
a) Construa uma rotina que copia uma string colocada na RAM externa, com incio na posio 8200H e terminada com o byte 0, para a posio 8300H. b) Determine o nmero de bytes da string. Coloque o resultado na posio 40H da RAM interna.

2.
Elabore uma rotina que faa a soma de dois nmeros com 24 bits (3 bytes) cada um. O primeiro est contido nas posies (R0+2), (R0+1), (R0) da RAM externa. O segundo nmero est nas posies (R1+2), (R1+1), (R1). O resultado deve ser colocado na posio do primeiro nmero.

3.
Utilizando a rotina feita em 2, elabore um programa que determine a soma de 6 nmeros de 3 bytes cada um. Os nmeros a somar esto colocados a partir da posio 8200H. O resultado deve ser colocado em 8300H.

4.
Considere que dispe de uma tabela de nmeros entre 1 e 255 (um nmero por byte) que comea na posio 8200H e termina com o byte 0 (zero). a) Faa uma rotina que conte o nmero de ocorrncias do valor contido no registo R7 na tabela e retorne o resultado no registo R6. b) Utilize a rotina efectuada em a) para gerar uma tabela de ocorrncias para todos os valores possveis. Esta tabela dever ter 255 elementos, sendo o primeiro elemento o nmero de ocorrncias do valor 1 na tabela original. O segundo elemento ser o nmero de ocorrncias do valor 2 na tabela original, etc..
Exemplo: 8200H: 5 3 2 2 5 2 7 1 0 OcorrTab: 1 3 1 0 2 0 1 0 0

Sistemas Digitais

Microcontrolador 8051

5.
a) Utilize um timer interno do 80535 para criar uma rotina de espera de 0.05 segundos. b) Utilizando a rotina feita em a), crie uma pausa de 5 segundos.

6.
A figura representa um depsito medidor de gasolina.

A bomba B1 destina-se a trazer a gasolina de I para o depsito. A bomba B2 retira gasolina do depsito e transporta-a para II. N1 e N2 so sensores de nvel de gasolina no depsito. Entre o nvel N1 e o nvel N2, o depsito tem a capacidade de 10 litros. Pretende-se que quando o operador pressiona o boto P, sejam fornecidos exactamente 50 litros de gasolina ao receptor colocado em II. Faa um programa para 8051 que controle as bombas B1 e B2 de maneira a obtermos o funcionamento desejado.

7.
Construa uma rotina que ordene por ordem crescente os elementos de uma tabela de bytes terminada com o byte 0 (zero). Sugesto: Utilize a rotina desenvolvida em 4. para gerar uma tabela de ocorrncias.

Sistemas Digitais

Microcontrolador 8051

8.
A figura abaixo representa uma mquina automtica de furar.

A parte elctrica da mquina constituda por dois motores (MA, MB), um boto de presso (m) e trs sensores de fim de curso (a, b, c). O veio do motor MB est directamente acoplado broca. MA um motor com dois sentidos de rotao, e destina-se a movimentar verticalmente a broca. O movimento ascendente da coluna obtido activando MAa. Quando se liga MAd a coluna desce. Funcionamento: - A pea a furar colocada no posto de carga. - Logo que operador accione o boto de presso m, o pisto V activado deslocando a pea at que o fim de curso c seja accionado. - O motor de deslocamento de coluna MA entra em funcionamento 3 segundos depois da activao do pisto V. - A coluna desce at tocar em b, altura em que MA desligado - Aps uma pausa de 3 segundos, MA ligado em sentido contrrio subindo a coluna at accionar a. - Neste momento V desligado e a pea retirada do posto de carga. A mquina fica pronta para novo ciclo de funcionamento. Implemente um programa que controle MB, MAd, MAa e V.

Sistemas Digitais

Microcontrolador 8051

9.
Dispem-se na posio 8200H da memria uma string de dgitos em BCD empacotado (2 dgitos por byte). Pretende-se desempacotar os dgitos, criando uma nova tabela na posio 8300H com um dgito por byte. Os dgitos desempacotados devem ser colocados nos quatro bit menos significativos de cada byte. A primeira posio de cada string indica o nmero de bytes de comprimento. Exemplo:
8200H 03H 43H 29H 97H 8300H 06H 04H 03H 02H 09H 09H 07H

10.
Faa uma rotina que realize a funo inversa da rotina feita em 9.

11.
a) Construa uma rotina que retorne no registo R6 o nmero de bits do registo R4 que esto a um (set bits). b) Para uma tabela de bytes com incio em 8201H e comprimento em 8200H, utilize a rotina realizada em a) para gerar uma nova tabela na posio 8300H em que cada elemento indica o nmero de bits a um (set bits) do elemento respectivo da tabela original. Exemplo:
8200H 06H 43H 00H 97H A0H 7FH 29H 8300H 06H 03H 00H 05H 02H 07H 03H

12.
Construa uma subrotina em assembly 8051 que determine o produto de dois nmeros de 16 bits cada um. Utilize a funo mult do 8051.

Sistemas Digitais

Microcontrolador 8051

13.
a) Construa a rotina GET_BIT que recebe no registo R3 um nmero entre 0 e 7, destinado a seleccionar um de entre os 8 bits de um byte. A rotina dever retornar na flag de Carry o estado do bit R3 do byte apontado por R0. b) Construa a rotina PUT_BIT que recebe no registo R3 um nmero entre 0 e 7, destinado a seleccionar um de entre os 8 bits de um byte. A rotina dever actualizar o bit R3 do byte apontado por R0 com o estado da flag de Carry.

14.
Desconhece-se o contedo de um buffer em memria constitudo por 128 bits (16 bytes * 8 bits), com incio na posio 8200H. a) Escreva em Assembly 8051 a rotina READ_BIT que retorna na flag de Carry o bit seleccionado pelo cdigo do registo A. Os bits 7 a 4 do registo A, identificam a posio (0 a 15) no buffer, do byte a utilizar. Os bits 2 a 0 identificam um dos bits (0 a 7) do byte referido. Sugesto: utilize a rotina GET_BIT realizada em 14. a). 7 6 5 4 ndice de uma posio do buffer (0 a 15) 3 2 1 0 cdigo de um dos bits (0 a 7)

b) Escreva em Assembly 8051 a rotina WRITE_BIT que coloca o bit 3 do registo A numa posio do buffer. A posio a utilizar seleccionada como na alnea anterior. Sugesto: utilize a rotina PUT_BIT realizada em 14. b).

15.
Implemente um controlador de semforos para automveis, aplicvel num cruzamento de 4 ruas. Pretende-se que a autorizao de passagem (luz verde) seja atribuda a uma rua de cada vez. Durante o tempo em que atribuda luz verde a uma rua, todas as outras tero obrigatoriamente luz vermelha. O tempo em que a luz verde est acesa constante para todas as ruas e igual a 20 segundos. A luz amarela deve acender durante 2 segundos.

16.
Um sistema baseado no 8051 utiliza as duas interrupes externas disponveis e ainda a interrupo gerada por 1 dos timers. As condies em que se pretende que o sistema funciona so as seguintes: uma interrupo externa deve ser sempre atendida imediatamente e deve copiar o que est na posio 8200H para a posio 8300H a outra interrupo externa deve escrever o que est em 8300H na porta P1

Sistemas Digitais

Microcontrolador 8051

a interrupo gerada pelo timer deve executar uma rotina que copia o que est na porta P1 para A No caso de estas duas interrupes acontecerem em simultneo, deve ser atendida a interrupo externa. Faa o software de programao das interrupes a ser incluido no programa principal e as rotinas de atendimento das interrupes.

17.
Considere um microcontrolador a monitorizar um sistema em que se utiliza o porto 1 como I/O e os pinos TXD e RXD para comunicar com um PC.

P1.0 TXD Porta de entrada


Sensor de sada Sensor de entrada

P1.3 RXD P1.7

PC

O porto 1 tem os 4 bits mais significativos definidos como entradas sendo os restantes sadas. Os bits P1.7 e P1.6 so utilizados para controlar o n de pessoas existentes num edifcio (P1.7 detecta sada de pessoas e P1.6 detecta entrada de pessoas). Sempre que o nmero de pessoas no interior do edifcio atinge 64, deve ser trancada a porta de entrada atravs de P1.3. A comunicao com o PC do tipo master-slave, em que o PC o master, e a comunicao faz com 1 baudrate de 4800 bits/s, paridade par e 1 stop bit. PC pode dar 2 tipos de instrues ao 8051: Escrita - actualizao das sadas do 8051 1 0 1 0
Valor a sadas colocar nas

Cdigo de escrita Leitura - pede ao 8051 que lhe envie o estado das duas entradas e o valor do contador 0 1 0 1 Cdigo de leitura

Sistemas Digitais

Microcontrolador 8051

Resposta do 8051 a um pedido de leitura:

Estado das duas entradas

Valor do Contador

Sempre que haja erro de paridade na recepo de informao, esta deve ser ignorada. Elabore o software que implementa este protocolo de comunicao.

18.
Um sistema automtico de rega controlado por um microcontrolador 8051 com um clock de 12MHz. O sistema constitudo por 10 pontos de sada de gua organizados em 3 circuitos distintos, como mostra a figura.

A interface ao 8051 efectuada da seguinte forma: P1.0, P1.1 e P1.2 activam respectivamente os circuitos de gua 1, 2 e 3. INT0 est ligado a um relgio externo que controla os horrios de rega gerando um impulso sempre que atingida a hora programada. INT1 permite uma paragem de emergncia P1.7 permite dar ordens de arranque do sistema de rega fora dos horrios programados P1.5 e P1.6 fornecem valores de humidade do solo: P1.6 0 0 1 P1.5 0 1 0 Humidade Muito seco Seco Hmido

Sistemas Digitais

Microcontrolador 8051

Dependendo do valor de humidade do solo, deve ser executada uma das seguintes sequncias de rega: Piso Muito Seco Circuito1 - 2 minutos Circuito2 - 4 minutos Circuito3 - 2 minutos Piso Seco Circuito1 - 2 minutos Circuito2 - 2 minutos Piso Molhado Circuito1 - 1 minutos Circuito2 - 1 minutos Durante a execuo de uma sequncia de rega devem ser ignoradas novas ordens de rega que possam surgir. Implemente o software para o 8051 que faz o controlo do sistema de rega.

19.
Um sistema utiliza um microcontrolador 8051 com um CLK a 12MHz para controlar a entrada e sada de pessoas num edifcio. Para tal existem 2 sensores, S1 ligado porta P1.0 e S2 ligado a P1.1, que indicam respectivamente a entrada e sada de pessoas. Foram utilizados sensores pticos que quando detectam a presena de uma pessoa ficam no nvel lgico 1, mantendo-se neste estado at que a pessoa deixe de ser detectada.

a) Desenvolva o programa, em linguagem do 8051, que controla a entrada/sada de pessoas actualizando um contador que indica o nmero de pessoas dentro do edifcio. b) Sempre que o n de pessoas no edifcio for igual ou superior a 128, deve ser activada uma sirene. Para isso deve ser gerada uma onda quadrada de frequncia de 10KHz (na porta P1.7) que deve ser desactivada quando o n de pessoas for inferior a 128. Faa as alteraes que ache necessrias ao programa da alnea a) de forma a que este faa o controlo completo do sistema. Nota: durante o perodo de gerao da onda quadrada, deve manter-se o controlo das entradas/sadas do edifcio.

Você também pode gostar