EXERCÍCIOS DE PROGRAMAÇÃO
|
|
- Luiz Gustavo Dias Clementino
- 7 Há anos
- Visualizações:
Transcrição
1 EXERCÍCIOS DE PROGRAMAÇÃO A seguir são apresentados exercícios de programação que podem ser testados nas placas de laboratório de processadores que utilizam o MSC1211. São propostos vários exercícios. Em alguns, a solução (em assembly e C ) está impressa junto com esta documentação. Nos demais, você poderá encontrar os respectivos programas, no site desta disciplina. Junto aos circuitos você também vai encontrar a proposta de novos exercícios. Exemplo I Semáforo Este exercício utiliza a porta P1 para controlar as lâmpadas de um conjunto de três semáforos. O semáforo S3 é do pedestre e só utiliza as lâmpadas vermelha e verde. Veja a descrição do funcionamento dos semáforos que encontra-se impressa junto ao esquemático do circuito. Por simplicidade o circuito foi simplificado ao máximo. As lâmpadas do semáforo são consideradas ideiais, e portanto não consomem corrente da porta lógia. Portanto não há necessidade de resistores para limitação de corrente. Além disto, os semáforos possuem os circuitos necessários para acionar uma lâmpada conectada a rede elétrica, através de um sinal lógico do tipo TTL. Na prática, o projeto deveria contemplar tanto os resistores de limitação de corrente quanto os circuitos de disparo das lâmpadas. Para quem tiver curiosidade, procure a documentação do circuito MOC3020. Ele é um circuito de disparo para tiristores que pode ser utilizado nesta tarefa. Solução em Assembly Obs.: Este programa foi elaborado sem a adição das bibliotecas disponíveis e portanto, a listagem do programa ficou consideravelmente maior.
2 **** SEMAF_I.ASM ********************************************************* ** ** ********************************************************* by [JCLima ] *** $MOD51 *** Exemplo de Declaração de Pinos de I/ O ******************************* ** ** ************************************************************************** VM3 EQU P1.0 VM3 equ 90h AM3 EQU P1.1 AM3 equ 91h VD3 EQU P1.2 VD3 equ 92h *** Exemplo de Declarações de Constantes e Variáveis ********************* ** ** ************************************************************************** contador EQU 7FH unsigned char contador estado1 EQU 85h S1 Verde estado2 EQU 45h S1 Amarelo estado3 EQU 32h S2 Verde estado4 EQU 29h S2 Amarelo e S3 Vermelho On estado5 EQU 28h S2 Amarelo e S3 Vermelho Off *** Vetor de Reset ******************************************************* ** ** ****************************************************** Endereco: 0000H *** ORG 0000H LJMP START *** Vetor da INT0 ******************************************************** ** ** ****************************************************** Endereco: 0003H *** ORG 0003H *** Vetor do Timer 0 ***************************************************** ** ** ****************************************************** Endereco: 000BH *** ORG 000BH *** Vetor da INT1 ******************************************************** ** ** ****************************************************** Endereco: 0013H *** ORG 0013H *** Vetor do Timer 1 ***************************************************** ** ** ****************************************************** Endereco: 001BH *** ORG 001BH *** Vetor da Porta Serial ************************************************ ** ** ****************************************************** Endereco: 0023H *** ORG 0023H
3 *** PROGRAMA PRINCIPAL *************************************************** ** ** ************************************************************************** START: MOV SP,#80h Move a pilha para a RAM indireta!!! *** LOOP Programa Principal... REPETE: MOV P1,#estado1 MOV A,#22 delay 22s LCALL DELAYx1000ms MOV P1,#estado2 MOV A,#3 delay 3s LCALL DELAYx1000ms MOV P1,#estado3 MOV A,#15 delay 15s LCALL DELAYx1000ms MOV contador,#3 LOOP_REPETE: MOV P1,#estado4 LCALL DELAY500ms delay 0.5s MOV P1,#estado5 LCALL DELAY500ms delay 0.5s DJNZ contador,loop_repete LJMP REPETE Obs.: No MSC1211 um ciclo de Máquina = 4 pulsos de clock... Obs.: No 8051 um ciclo de Máquina = 12 pulsos de clock... *** DELAY 1ms ************************************************************ ** ** ******************************** [ MHz = 2757 CICLOS] *** DELAY1ms: PUSH 07H MOV R7,#83 < para um MSC1211 (4 pulsos/ciclo!!!) _LOOP1ms: NOP NOP NOP NOP NOP NOP NOP NOP NOP DJNZ POP RET R7,_LOOP1ms 07H *** DELAY 500ms ********************************************************** ** Baseada na rotina de 1ms! ** ********************************************* [ MHz ] *** DELAY500ms: PUSH 07H MOV R7,#100 _LOOP500ms: LCALL DELAY1ms Aguarda 1ms!!! LCALL DELAY1ms Aguarda 1ms!!! LCALL DELAY1ms Aguarda 1ms!!! LCALL DELAY1ms Aguarda 1ms!!! LCALL DELAY1ms Aguarda 1ms!!! DJNZ R7,_LOOP500ms Repete 100x POP 07H
4 RET *** DELAYx1000ms(A) ****************************************************** ** Baseada na rotina de 1ms! ** ********************************************* [ MHz ] *** DELAYx1000ms: PUSH 07H PUSH 06H MOV _LOOPxx1000ms: MOV R7,A R6,#200 _LOOPx1000ms: LCALL DELAY1ms Aguarda 1ms!!! LCALL DELAY1ms Aguarda 1ms!!! LCALL DELAY1ms Aguarda 1ms!!! LCALL DELAY1ms Aguarda 1ms!!! LCALL DELAY1ms Aguarda 1ms!!! DJNZ R6,_LOOPX1000ms Repete 200x = 1segundo DJNZ POP POP RET R7,_LOOPxx1000ms Repete A vezes 06H 07H END Solução em Linguagem C (utilizando o SDCC - compilado no modelo small) #include <8052.h> #include <stdio.h> **************************************************************** ** Pinos do MICROCONTROLADOR ** **************************************************************** sfr at 0x90 semaforo S1,S2,S3 --> P1 **************************************************************** ** V A R I Á V E I S E C O N S T A N T E S ** **************************************************************** const unsigned char estado[5] = 0x85, 0x45, 0x32, 0x29, 0x28 **************************************************************** ** P R O T O T Y P E S ** **************************************************************** void delay1ms(void) _naked void delay(unsigned int tempo) **************************************************************** ** M A I N ** **************************************************************** void main(void) unsigned char i while(1) semaforo = estado[0] delay(22000) semaforo = estado[1] delay(3000) semaforo = estado[2] aguarda 22s aguarda 3s
5 delay(15000) aguarda 15s for(i=0 i<3i++) Vermelho piscante por 3s semaforo = estado[3] delay(500) semaforo = estado[4] delay(500) **************************************************************** ** D E L A Y D E 1 m ** **************************************************************** mov r7,#212 <-- para um MSC1211 (4 pulsos/ciclo!!!) mov r7,#70 <-- para um AT89C52 (12 pulsos/ciclo!!!) void delay1ms(void) _naked _asm push ar7 mov r7,#70 DELAY_1ms: djnz r7,delay_1ms pop ar7 ret _endasm **************************************************************** ** D E L A Y P A R A M E T R I Z Á V E ** **************************************************************** void delay(unsigned int tempo) while (tempo > 0) tempo-- delay1ms() Exercício I Modifique o código acima, de modo que o sinal de vermelho piscante do semáforo S3 fique neste estado por 5 segundos, mas o estado de atenção do semáforo S2 permaneça em 3 segundos. Exercício II Escreva o código para fazer o acionamento de um novo conjunto de semáforos que estão representados no circuito dado a seguir. Veja a descrição do funcionamento das lâmpadas que se encontra impresso junto ao circuito elétrico.
6 Exemplo II Circuito de Display de 7 segmentos Neste exemplo utiliza-se a porta P1 para controlar um display de 7 segmentos, implementando um contador de 0 à 9 que é atualizado de segundo em segundo. No circuito, há um transistor PNP para fazer o acionamento do anodo do display. Em um circuito com apenas um display este transistor é totalmente dispensável. Ele está neste circuito apenas como exemplo de um circuito de drive de potência, para situações em que o usuário queira, por exemplo, alterar o brilho do display (através de um sinal de pwm) ou queira fazer a multiplexação de diversos dispositivos para a formação de um display de vários dígitos. Os resistores foram acrescentados para limitar a corrente de base do transistor e a corrente de cada segmento do display. Note que o circuito foi simplificado ao máximo, não estando representado no esquema elétrico o cristal oscilador e o circuito de reset. Em uma implementação real, tanto o cristal oscilador quanto o circuito de reset deveriam estar presentes.
7 Solução em Assembly **** UMDIGITO.ASM ******************************************************** ** ** ********************************************************* by [JCLima ] *** $MOD51 *** Declaração de Pinos de I/O ******************************************* ** ** ************************************************************************** display EQU P1 anodo EQU P3.2 *** Vetor de Reset ******************************************************* ** ** ****************************************************** Endereco: 0000H *** ORG 0000H LJMP START *** Vetor da INT0 ******************************************************** ** ** ****************************************************** Endereco: 0003H *** ORG 0003H *** Vetor do Timer 0 ***************************************************** ** ** ****************************************************** Endereco: 000BH ***
8 ORG 000BH *** Vetor da INT1 ******************************************************** ** ** ****************************************************** Endereco: 0013H *** ORG 0013H *** Vetor do Timer 1 ***************************************************** ** ** ****************************************************** Endereco: 001BH *** ORG 001BH *** Vetor da Porta Serial ************************************************ ** ** ****************************************************** Endereco: 0023H *** ORG 0023H *** PROGRAMA PRINCIPAL *************************************************** ** ** ************************************************************************** START: MOV DPTR,#TABELA DPTR aponta para a tabela de 7seg MOV R7,#0 R7 é o contador de 0 à 9... CLR anodo Liga o anodo para sempre... *** LOOP Programa Principal... REPETE: MOV A,R7 A = contador MOVC A,@A+DPTR Converte para 7 segmentos MOV P1,A Escreve no display... LCALL DELAY1000ms INC R7 Incrementa o contador CJNE R7,#10,REPETE Testa se contador = 10 MOV R7,#0 LJMP REPETE *** ARQUIVOS DE INCLUSAO ************************************************* ** ** ************************************************************************** Exemplos de declaração de Arquivos de Inclusão!!! OBS.: Descomente as linhas de comando, caso queira utilizar as bibliotecas listadas abaixo. $INCLUDE(DELAY_PR.INC) <--- Só esta biblioteca foi incluída!!! $INCLUDE(LCD_PROT.INC) $INCLUDE(I2C_PROT.INC) *** TABELAS, CONSTANTES, STRINGS ***************************************** ** ** ************************************************************************** TABELA: DB 0C0h, 0F9h, 0A4h, 0B0h, 99h, 92h, 82h, 0D8h, 80h, 90h END Solução em Linguagem C #include <8052.h> #include <stdio.h>
9 **************************************************************** ** Pinos do MICROCONTROLADOR ** **************************************************************** sfr at 0x90 display Display na porta P1 (A - P1.0, B - P1.1...) sbit at 0xb2 anodo Controle do anodo (P3.2) **************************************************************** ** V A R I Á V E I S E C O N S T A N T E S ** **************************************************************** const unsigned char Tabela[10] = 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xd8, 0x80, 0x90 **************************************************************** ** P R O T O T Y P E S ** **************************************************************** void delay1ms(void) _naked void delay(unsigned int tempo) **************************************************************** ** M A I N ** **************************************************************** void main(void) unsigned char i = 0 anodo = 0 Liga o anodo... while(1) display = Tabela[i] i++ if(i == 10) i = 0 delay(1000) **************************************************************** ** D E L A Y D E 1 m ** **************************************************************** void delay1ms(void) _naked _asm push ar7 mov r7,#70 DELAY_1ms: djnz pop ret _endasm r7,delay_1ms ar7
10 **************************************************************** ** D E L A Y P A R A M E T R I Z Á V E ** **************************************************************** void delay(unsigned int tempo) while (tempo > 0) tempo-- delay1ms() Exercício III Modifique os programas em C e assembly do exemplo descrito acima (exemplo II), de modo a que o mesmo possa realizar a contagem em hexadecimal. Exemplo III Circuito de Display de 7 Segmentos Neste exemplo mapeia-se o mesmo display de 7 segmentos na memória RAM externa. A aplicação é a mesma, ou seja, implementar um contador de 0 à 9 que é atualizado de segundo em segundo. A diferença entre o exemplo II e este, está na forma de acessar o display. No exemplo II, o display estava conectado diretamente a porta P1 e bastava apenas um comando de MOV para acioná-lo. Para este exemplo, é necessário fazer uso da instrução para acessar o display, pois agora o mesmo está mapeado na RAM. Para simplificar, foram retirados os resistores de limitação da corrente de cada segmento. Em um circuito real isto não pode ser feito, sob pena de danificar o display e o latch conectado ao mesmo!
11 Obs.: Para que se possa acessar o display é necessário saber em que posição da memória o mesmo foi colocado. O endereço é obtido pela análise do circuito elétrico. Solução em Assembly **** UM_MEM.ASM ********************************************************** ** ** ********************************************************* by [JCLima ] *** $MOD51 *** Definições *********************************************************** ** ** ************************************************************************** display EQU 0EE00h Endereço do display na RAM externa *** Vetor de Reset ******************************************************* ** ** ****************************************************** Endereco: 0000H *** ORG 0000H LJMP START *** Vetor da INT0 ******************************************************** ** ** ****************************************************** Endereco: 0003H *** ORG 0003H *** Vetor do Timer 0 ***************************************************** ** ** ****************************************************** Endereco: 000BH *** ORG 000BH *** Vetor da INT1 ******************************************************** ** ** ****************************************************** Endereco: 0013H *** ORG 0013H *** Vetor do Timer 1 ***************************************************** ** ** ****************************************************** Endereco: 001BH *** ORG 001BH *** Vetor da Porta Serial ************************************************ ** ** ****************************************************** Endereco: 0023H *** ORG 0023H *** PROGRAMA PRINCIPAL *************************************************** ** ** ************************************************************************** START: MOV R7,#0 R7 é o contador de 0 à 9...
12 *** LOOP Programa Principal... REPETE: MOV DPTR,#TABELA DPTR aponta para a tabela de 7seg MOV A,R7 A = contador... MOVC A,@A+DPTR Converte para 7 segmentos... MOV DPTR,#display DPTR aponta para a RAM externa... Escreve na RAM externa... LCALL DELAY1000ms Delay de 1 segundo... INC R7 contador = contador + 1 CJNE R7,#10,REPETE contador = 10? MOV R7,#0 LJMP REPETE *** ARQUIVOS DE INCLUSAO ************************************************* ** ** ************************************************************************** OBS.: Descomente as linhas de comando, caso queira utilizar as bibliotecas listadas abaixo. $INCLUDE(DELAY_PR.INC) Só esta biblioteca foi incluída!!! $INCLUDE(LCD_PROT.INC) $INCLUDE(I2C_PROT.INC) *** TABELAS, CONSTANTES, STRINGS ***************************************** ** ** ************************************************************************** TABELA: DB 0C0h, 0F9h, 0A4h, 0B0h, 99h, 92h, 82h, 0D8h, 80h, 90h END Solução em Linguagem C #include <8052.h> #include <stdio.h> **************************************************************** ** Pinos do MICROCONTROLADOR ** **************************************************************** xdata at 0xee00 unsigned char display Endereço da RAM ext. **************************************************************** ** V A R I Á V E I S E C O N S T A N T E S ** **************************************************************** const unsigned char Tabela[10] = 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xd8, 0x80, 0x90 **************************************************************** ** P R O T O T Y P E S ** **************************************************************** void delay1ms(void) _naked void delay(unsigned int tempo) **************************************************************** ** M A I N ** **************************************************************** void main(void)
13 unsigned char i = 0 while(1) display = Tabela[i] if(++i == 10) i = 0 delay(1000) **************************************************************** ** D E L A Y D E 1 m ** **************************************************************** void delay1ms(void) _naked _asm push ar7 mov r7,#70 DELAY_1ms: djnz pop ret _endasm r7,delay_1ms ar7 **************************************************************** ** D E L A Y P A R A M E T R I Z Á V E ** **************************************************************** void delay(unsigned int tempo) while (tempo > 0) tempo-- delay1ms() Exercício IV Modifique os programas em C e assembly do exemplo descrito acima (exemplo III), de modo a que o mesmo possa realizar uma contagem em octal. Exemplo IV Circuito de Display de 7 Segmentos Multiplexado Neste exemplo, dois displays de 7 segmentos estão conectados a porta P1. Para que seja feita a seleção de qual dígito será acionado, foram utilizadas duas linhas de controle: P3.3 para acionar o dígito da dezena e P3.2 para acionar o dígito da unidade. De modo que o usuário não perceba que os dígitos estão piscando, sugere-se que cada dígito seja acionado pelo menos 50 vezes por segundo (varredura de 100Hz). O display é do tipo anodo comum. Os segmentos
14 são acionados com nível lógico 0 e os anodos são acionados com nível lógico 1. O circuito foi simplificado ao máximo, tanto com relação ao microcontrolador quanto com relação ao circuito de multiplexação do display. Desta forma não aparecem as chaves (transistores) responsáveis pelo chaveamento dos displays. Admita que estes circuitos estão embutidos nos próprios displays. Em um circuito real não é possível conectar o display ao microcontrolador da forma como está representado no diagrama elétrico. Seria necessário acrescentar os resistores para limitação de corrente e os transistores para o chaveamento dos displays. Para o circuito proposto deseja-se implementar um contador de 0 à 99 que será atualizado a cada segundo. A contagem será feita empregando apenas um contador, ou seja, o programa deve tratar de separar a unidade da dezena, utilizando as operações de divisão inteira e resto da divisão. Solução em Assembly **** DOIS_DGT.ASM ******************************************************** ** ** ** Ultima Modificacao em: 05/10/2008 ** ** ** ********************************************************* by [JCLima ] *** $MOD51 *** Exemplos de Declaração de Pinos de I/O ******************************* ** ** ************************************************************************** display EQU P1
15 anodo_u EQU P3.2 anodo_d EQU P3.3 *** Vetor de Reset ******************************************************* ** ** ****************************************************** Endereco: 0000H *** ORG 0000H LJMP START *** Vetor da INT0 ******************************************************** ** ** ****************************************************** Endereco: 0003H *** ORG 0003H *** Vetor do Timer 0 ***************************************************** ** ** ****************************************************** Endereco: 000BH *** ORG 000BH *** Vetor da INT1 ******************************************************** ** ** ****************************************************** Endereco: 0013H *** ORG 0013H *** Vetor do Timer 1 ***************************************************** ** ** ****************************************************** Endereco: 001BH *** ORG 001BH *** Vetor da Porta Serial ************************************************ ** ** ****************************************************** Endereco: 0023H *** ORG 0023H *** PROGRAMA PRINCIPAL *************************************************** ** ** ************************************************************************** START: MOV DPTR,#TABELA DPTR aponta para a tabela de 7seg MOV R7,#0 R7 é o contador de 0 à CLR anodo_d Desliga o anodo da dezena... CLR anodo_u Desliga o anodo da unidade... *** LOOP Programa Principal... REPETE: MOV R6,#50 Contador da varredura LOOP_VAR: MOV A,R7 Carrega Contador... MOV B,#10 DIV AB Separa A = Dezena, B = Unidade MOVC A,@A+DPTR Liga dígito da dezena por 10ms MOV P1,A SETB ANODO_D LCALL DELAY10ms CLR ANODO_D MOV A,B Liga dígito da unidade por 10ms
16 MOVC MOV P1,A SETB ANODO_U LCALL DELAY10ms CLR ANODO_U DJNZ R6,LOOP_VAR Repete por 50x 50x(10ms+10ms) = 1s --> Delay da varredura INC R7 Incrementa contador... CJNE R7,#100,REPETE Contador = 100? MOV R7,#0 LJMP REPETE *** ARQUIVOS DE INCLUSAO ************************************************* ** ** ************************************************************************** $INCLUDE(DELAY_PR.INC) *** TABELAS, CONSTANTES, STRINGS ***************************************** ** ** ************************************************************************** TABELA: DB 0C0h, 0F9h, 0A4h, 0B0h, 99h, 92h, 82h, 0D8h, 80h, 90h END Solução em Linguagem C #include <8052.h> #include <stdio.h> #include <delay.h> **************************************************************** ** Pinos do MICROCONTROLADOR ** **************************************************************** sfr at 0x90 display Display na porta P1 (A - P1.0, B - P1.1...) sbit at 0xb2 anodou Controle da dezena (P3.2) sbit at 0xb3 anodod Controle da unidade (P3.3) **************************************************************** ** V A R I Á V E I S E C O N S T A N T E S ** **************************************************************** const unsigned char Tabela[10] = 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xd8, 0x80, 0x90 **************************************************************** ** P R O T O T Y P E S ** **************************************************************** void delay1ms(void) _naked void delay(unsigned int tempo) **************************************************************** ** M A I N ** **************************************************************** Obs:. As rotinas de delay foram incluídas em uma biblioteca denominada de delay.lib void main(void)
17 unsigned char i, contador = 0 anodod = 0 Desliga Dezena e... anodou = 0 desliga unidade while(1) for(i=0 i<50 i++) display = Tabela[contador/10] anodod = 1 delay(10) anodod = 0 Separa a dezena... e liga display dezena display = Tabela[contador%10] anodou = 1 delay(10) anodou = 0 if(++contador == 100) contador = 0 Seapara a Unidade e liga display unidade Exercício V Modifique os programas em C e assembly do exemplo anterior (exemplo IV) de modo que o mesmo implemente um contador de 0 à 59, o qual será atualizado a cada segundo, mas com numeração em octal e em hexadecimal. A contagem será feita empregando apenas um contador, ou seja, o programa deve tratar de separar a unidade da dezena, utilizando as operações de divisão inteira e resto da divisão. Exemplo V Neste exemplo, quatro displays de 7 segmentos estão conectados a porta P1. Para que seja feita a seleção de qual dígito será acionado, foram utilizadas quatro linhas de controle: P3.2 à P3.5, para o acionamento do dígito da unidade (P3.5) até o dígito do milhar (P3.2). De modo que o usuário não perceba que os dígitos estão piscando, sugere-se que cada dígito seja acionado pelo menos 50 vezes por segundo (varredura de 200Hz). O display é do tipo anodo comum. Os segmentos são acionados com nível lógico 0 e os anodos são acionados com nível lógico 1. O circuito foi simplificado ao máximo, tanto com relação ao microcontrolador quanto com relação ao circuito de multiplexação do display. Desta forma não aparecem as chaves (transistores) responsáveis pelo chaveamento dos displays. Admita que estes circuitos estão embutidos nos próprios displays. Em um circuito real não é possível conectar o display ao microcontrolador da forma como está representado no diagrama elétrico. Seria necessário acrescentar os resistores para limitação de corrente e os transistores para o chaveamento dos displays. Para o circuito proposto deseja-se implementar um contador de 0 à 9999 que será atualizado a cada décimo de segundo. A contagem será feita empregando vários contadores, cada um responsável pelo valor do dígito correspondente, ou seja, serão utilizados quatro contadores.
18 Solução em Assembly **** DOIS_DGT.ASM ******************************************************** ** ** ** Ultima Modificacao em: 05/10/2008 ** ** ** ********************************************************* by [JCLima ] *** $MOD51 *** Declarações de Variáveis ********************************************* ** ** ************************************************************************** MILHAR EQU 7FH CENTENA EQU 7EH DEZENA EQU 7DH UNIDADE EQU 7CH *** Declaração de Pinos de I/O ******************************************* ** ** ************************************************************************** display EQU P1 anodo_m EQU P3.2 anodo_c EQU P3.3 anodo_d EQU P3.4 anodo_u EQU P3.5 *** Vetor de Reset *******************************************************
19 ** ** ****************************************************** Endereco: 0000H *** ORG 0000H LJMP START *** Vetor da INT0 ******************************************************** ** ** ****************************************************** Endereco: 0003H *** ORG 0003H *** Vetor do Timer 0 ***************************************************** ** ** ****************************************************** Endereco: 000BH *** ORG 000BH *** Vetor da INT1 ******************************************************** ** ** ****************************************************** Endereco: 0013H *** ORG 0013H *** Vetor do Timer 1 ***************************************************** ** ** ****************************************************** Endereco: 001BH *** ORG 001BH *** Vetor da Porta Serial ************************************************ ** ** ****************************************************** Endereco: 0023H *** ORG 0023H *** PROGRAMA PRINCIPAL *************************************************** ** ** ************************************************************************** START: MOV DPTR,#TABELA DPTR aponta para a tabela de 7seg MOV MOV MOV MOV MILHAR,#0 CENTENA,#0 DEZENA,#0 UNIDADE,#0 CLR ANODO_M Desliga o anodo do milhar... CLR ANODO_C Desliga o anodo da centena... CLR ANODO_D Desliga o anodo da dezena... CLR ANODO_U Desliga o anodo da unidade... *** LOOP Programa Principal... REPETE: MOV R6,#5 Contador da varredura LOOP_VAR: MOV A,MILHAR Carrega Contador do milhar... MOVC A,@A+DPTR Liga dígito do milhar por 5ms MOV P1,A SETB ANODO_M LCALL DELAY5ms CLR ANODO_M MOV A,CENTENA Carrega Contador da centena...
20 MOVC Liga dígito da centena por 5ms MOV P1,A SETB ANODO_C LCALL DELAY5ms CLR ANODO_C MOV A,DEZENA Carrega Contador da dezena... MOVC Liga dígito da dezena por 5ms MOV P1,A SETB ANODO_D LCALL DELAY5ms CLR ANODO_D MOV A,UNIDADE Carrega Contador da unidade... MOVC Liga dígito da unidade por 5ms MOV P1,A SETB ANODO_U LCALL DELAY5ms CLR ANODO_U DJNZ R6,LOOP_VAR Repete por 5x 50x(5ms+5ms+5ms+5ms)=100ms-->Delay da varredura MOV A,#10 INC UNIDADE Incrementa unidade... CJNE A,UNIDADE,REPETE unidade = 10? MOV UNIDADE,#0 INC DEZENA Incrementa dezena... CJNE A,DEZENA,REPETE dezena = 10? MOV DEZENA,#0 INC CENTENA Incrementa centena... CJNE A,CENTENA,REPETE centena = 10? MOV CENTENA,#0 INC MILHAR Incrementa milhar... CJNE A,MILHAR,REPETE milhar = 10? MOV MILHAR,#0 LJMP REPETE *** ARQUIVOS DE INCLUSAO ************************************************* ** ** ************************************************************************** $INCLUDE(DELAY_PR.INC) *** TABELAS, CONSTANTES, STRINGS ***************************************** ** ** ************************************************************************** TABELA: DB 0C0h, 0F9h, 0A4h, 0B0h, 99h, 92h, 82h, 0D8h, 80h, 90h END Solução em Linguagem C #include <8052.h> #include <stdio.h> #include <delay.h> **************************************************************** ** Pinos do MICROCONTROLADOR ** **************************************************************** sfr at 0x90 display Display na porta P1 (A - P1.0, B - P1.1...)
21 sbit at 0xb2 dig1 sbit at 0xb3 dig2 sbit at 0xb4 dig3 sbit at 0xb5 dig4 Controle do digito 1 (P3.2) Controle do digito 1 (P3.3) Controle do digito 1 (P3.4) Controle do digito 1 (P3.5) **************************************************************** ** V A R I Á V E I S E C O N S T A N T E S ** **************************************************************** const unsigned char Tabela[10] = 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xd8, 0x80, 0x90 **************************************************************** ** P R O T O T Y P E S ** **************************************************************** void delay1ms(void) _naked void delay(unsigned int tempo) **************************************************************** ** M A I N ** **************************************************************** Obs:. As rotinas de delay foram incluídas em uma biblioteca denominada de delay.lib void main(void) unsigned char i, unidade, dezena, centena, milhar dig1 = 0 dig2 = 0 dig3 = 0 dig4 = 0 unidade = 0 dezena = 0 centena = 0 milhar = 0 while(1) for(i=0 i<50 i++) display = Tabela[milhar] dig1 = 1 delay(5) dig1 = 0 display = Tabela[centena] dig2 = 1 delay(5) dig2 = 0 display = Tabela[dezena] dig3 = 1 delay(5) dig3 = 0 display = Tabela[unidade] dig4 = 1 delay(5) dig4 = 0 if(++unidade == 10)
22 unidade = 0 if(++dezena == 10) dezena = 0 if(++centena == 10) centena = 0 if(++milhar == 10) milhar = 0 Outra Solução em Linguagem C Outra forma de implementar o programa seria utilizando um único contador (inteiro de 16bits) e separando através de divisões inteiras os dígitos do milhar até a unidade. Esta abordagem é fácil de ser feita em C mas não é tão simples de se implementar em assembly pois divisões de números de 16 bits não são nativas do processador e portanto o programador deve implementar os algoritmos de divisão com base na divisão de 8 bits. #include <8052.h> #include <stdio.h> #include <delay.h> **************************************************************** ** Pinos do MICROCONTROLADOR ** **************************************************************** sfr at 0x90 display Display na porta P1 (A - P1.0, B - P1.1...) sbit at 0xb2 dig1 Controle do digito 1 (P3.2) sbit at 0xb3 dig2 Controle do digito 1 (P3.3) sbit at 0xb4 dig3 Controle do digito 1 (P3.4) sbit at 0xb5 dig4 Controle do digito 1 (P3.5) **************************************************************** ** V A R I Á V E I S E C O N S T A N T E S ** **************************************************************** const unsigned char Tabela[10] = 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xd8, 0x80, 0x90 **************************************************************** ** P R O T O T Y P E S ** **************************************************************** void delay1ms(void) _naked void delay(unsigned int tempo) **************************************************************** ** M A I N ** **************************************************************** Obs:. As rotinas de delay foram incluídas em uma biblioteca denominada de delay.lib void main(void) unsigned char i, unidade, dezena, milhar unsigned int centena, contador dig1 = 0
23 dig2 = 0 dig3 = 0 dig4 = 0 contador = 0 unidade = 0 dezena = 0 centena = 0 milhar = 0 while(1) for(i=0 i<5 i++) display = Tabela[milhar] dig1 = 1 delay(5) dig1 = 0 display = Tabela[centena] dig2 = 1 delay(5) dig2 = 0 display = Tabela[dezena] dig3 = 1 delay(5) dig3 = 0 display = Tabela[unidade] dig4 = 1 delay(5) dig4 = 0 if(++contador == 10000) contador = 0 milhar = contador/1000 centena = contador%1000 dezena = centena%100 centena = centena/100 unidade = dezena%10 dezena = dezena/10 Exercício VI Modifique os programas em C e assembly do exemplo anterior (exemplo V) de modo que o mesmo implemente um cronômetro centesimal de à 59.99, o qual será atualizado a cada centésimo de segundo. Exercício VII No exemplo de hardware apresentado a seguir, são utilizados seis displays de 7 segmentos, os quais estão conectados a porta P1, e duas chaves do tipo Push Button nas portas P3.0 e P3.1. Para que seja feita a seleção de qual dígito será acionado, foram utilizadas seis linhas de controle: P3.2 à P3.7. De modo que o usuário não perceba que os dígitos estão piscando, sugere-se que cada dígito seja acionado pelo menos 50 vezes por segundo (varredura de 300Hz). O display é do tipo anodo comum. Os segmentos são acionados com nível lógico 0 e os anodos são acionados com nível lógico 1. O circuito foi simplificado ao máximo, tanto com relação ao microcontrolador quanto com relação ao circuito de multiplexação do display. Desta forma não aparecem as chaves (transistores) responsáveis pelo chaveamento dos displays. Admita que estes circuitos estão embutidos nos próprios displays. Em um circuito real não é possível conectar o display ao microcontrolador da forma como está representado no
24 diagrama elétrico. Seria necessário acrescentar os resistores para limitação de corrente e os transistores para o chaveamento dos displays. Para o circuito proposto escreva um programa para implementar um relógio com indicação de hora, minuto e segundo. O ajuste da hora inicial deverá ser feito por meio das duas chaves disponibilizadas no circuito. Suponha que o ajuste da hora só pode ser feito ao iniciar o programa, ou seja, após o reset. Depois de ajustada a hora, o relógio só poderá ter sua hora novamente ajustada ao se dar um reset no microcontrolador. Exercício VIII No circuito apresentado a seguir, quatro displays de 7 segmentos multiplexados estão conectados a memória RAM externa, através de dois latchs. Um dos latchs (U4), controla o valor dos dígitos, enquanto que o outro latch (U5) controla qual dígito será acionado naquele momento. De modo a que o usuário não perceba que os dígitos estão piscando, sugere-se que cada dígito seja acionado pelo menos 50 vezes por segundo (varredura de 200Hz). O display é do tipo anodo comum. Os segmentos são acionados com nível lógico 0 e os anodos são acionados com nível lógico 1. O circuito foi simplificado ao máximo, tanto com relação ao microcontrolador quanto com relação ao circuito de multiplexação do display. Desta forma não aparecem as chaves (transistores) responsáveis pelo chaveamento dos displays. Admita que estes circuitos estão embutidos nos próprios displays. Em um circuito real não é possível conectar o display ao microcontrolador da forma como está representado no diagrama elétrico. Seria necessário acrescentar os resistores para limitação de corrente e os transistores para o chaveamento dos displays. Para o circuito proposto implemente, um contador de 0 à 9999 que indique o valor da contagem em décimos de segundo. Implemente também com este circuito, um cronômetro
25 centesimal, de à 59.99, com indicação em centésimos de segundo. Neste exemplo, faça uso do ponto decimal para separa os segundos dos centésimos de segundo. Exercício IX No circuito apresentado a seguir, quatro displays de 7 segmentos multiplexados estão conectados a memória RAM externa, através de dois latchs. Um dos latchs (U4), controla o valor dos dígitos, enquanto que o outro latch (U5) controla qual dígito será acionado naquele momento. Ao circuito foi foi acrescentado um conversor A/D do tipo ADC0831 (protocolo serial) e um potenciômetro, de modo a variar o sinal na entrada do A/D de 0 à 1Volts. Para o circuito proposto, implemente um termômetro digital com a utilização do conversor A/D e do potenciômetro, o qual vai simular um sensor de temperatura, que varia de 0 a 100ºC gerando um sinal de 10mV/ ºC (LM35). A indicação no display será feita da seguinte forma
26 Exercício X No circuito apresentado a seguir, um display LCD 20x4 está conectado diretamente as portas P1 (dados do LCD) e P3 (controle do LCD sinais RS e E do LCD). Ao circuito foi foi acrescentado um conversor A/D do tipo ADC0831 (protocolo serial) e um potenciômetro, de modo a variar o sinal na entrada do A/D de 0 à 1Volts. O conversor A/D é controlado pela porta P3. Para o circuito proposto, implemente um termômetro digital com a utilização do conversor A/D e do potenciômetro, o qual vai simular um sensor de temperatura, que varia de 0 a 100ºC gerando um sinal de 10mV/ ºC (LM35).
27 Exercício XI No circuito apresentado a seguir, um display LCD 20x4 está conectado a memória RAM externa, através de dois latchs. Um dos latchs (U4), controla o valor do barramento de dados, enquanto que o outro latch (U5) controla os sinais de controle RS e E. Ao circuito foi foi acrescentado um conversor A/D do tipo ADC0831 (protocolo serial) e um potenciômetro, de modo a variar o sinal na entrada do A/D de 0 à 1Volts. O Conversor A/D é controlado por meio da porta P1. Para o circuito proposto, implemente um termômetro digital com a utilização do conversor A/D e do potenciômetro, o qual vai simular um sensor de temperatura, que varia de 0 a 100ºC gerando um sinal de 10mV/ ºC (LM35).
28
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:
Leia maisLaborató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:
Leia maisLaborató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:
Leia maisLaborató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 4: Motor de Passo e Display LCD Alunos: Matrícula:
Leia maisProf. Adilson Gonzaga
Prof. Adilson Gonzaga Temporização da CPU Todos os Microcontroladores da família MCS-51 têm um oscilador interno. Para uso deste oscilador deve-se conectar um cristal entre os pinos Xtal1 e Xtal2 da CPU.
Leia maisFamí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
Leia maisLaborató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: Teclado e Rotação de LEDs Alunos: Matrícula:
Leia maisTemporização Interrupções. Prof: Evandro L. L. Rodrigues. Rotinas de Atraso
Temporização Interrupções Prof: Evandro L. L. Rodrigues Rotinas de Atraso Temporização da CPU Todos os Microcontroladores da família MCS-51 têm um oscilador interno. Para uso deste oscilador deve-se conectar
Leia mais29/03/2017. Temporização da CPU SEL-433 APLICAÇÕES DE MICROPROCESSADORES I. Ciclos de Máquina. Ciclos de Máquina
SEL-433 APLICAÇÕES DE MICROPROCESSADORES I Temporização da CPU Todos os Microcontroladores da família MCS-5 têm um oscilador interno. Para uso deste oscilador deve-se conectar um cristal entre os pinos
Leia maisMICROPROCESSADORES 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
Leia maisMICROPROCESSADORES 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
Leia maismov R1,10H ; Carrega o dado do endereço 10H em R1 mov R1,#10H ; Carrega 10H em R1
--------------------------------------------------------------- Programa: primeiro.asm Move dado da acumulador para o registro B e vice-versa. Autor: Vargas Data:16:52 16/02/01 ---------------------------------------------------------------
Leia maisProf. 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.
Leia maisInterrupção. Prof. Adilson Gonzaga
Interrupção Prof. Adilson Gonzaga Estrutura de Programação Assembly Programa Principal Chamada de Sub-rotina1 Programa Principal Chamada de Sub-rotina2 Sub-rotina1 Subrotina2 Programa Principal Chamada
Leia maisPortas de entrada e saída; Interrupções; Interrupções externas; Temporizadores Contadores; Interface Serial
Periféricos Integrados do 8051 Portas de entrada e saída; Interrupções; Interrupções externas; Temporizadores Contadores; Interface Serial Periféricos Integrados do 8051 Portas de entrada e saída O 8051
Leia maisMICROPROCESSADORES 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
Leia maisMICROPROCESSADORES E MICROCONTROLADORES PROVA 2 UMA SOLUÇÃO POSSÍVEL. Obs.: Todas as questões têm valor 2,0. Boa prova e Feliz Natal e Ano Novo!!!!
MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 Aluno: Matrícula: UMA SOLUÇÃO POSSÍVEL Obs.: Todas as questões têm valor 2,0. Boa prova e Feliz Natal e Ano Novo!!!! 1. Escreva um pequeno, em assembly do
Leia maisMICROPROCESSADORES 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
Leia maisMICROPROCESSADORES 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
Leia maisTemporização da CPU SEL-433 APLICAÇÕES DE MICROPROCESSADORES I. Ciclos de Máquina. Ciclos de Máquina. Temporização Interrupções Rotinas de Atraso
SEL-433 APLICAÇÕES DE MICROPROCESSADORES I Temporização da CPU Todos os Microcontroladores da família MCS-51 têm um oscilador interno. Para uso deste oscilador deve-se conectar um cristal entre os pinos
Leia maisPONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ ENGENHARIA DE COMPUTAÇÃO. Vinicius Zanetti Tiago Dambros Rodrigo Yoshida Takeda
PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ ENGENHARIA DE COMPUTAÇÃO Vinicius Zanetti Tiago Dambros Rodrigo Yoshida Takeda Projeto apresentado às disciplinas do Curso de Engenharia de Computação do Centro
Leia maisContador crescente e decrescente...
Contador crescente e decrescente... Hardware Quatro LEDS (P1.7 a P1.4) Um interruptor (P1.0) LEDS e interruptor activos a zero f x = 12MHz P1 VCC Problema Visualizar nos LEDs uma contagem cíclica entre
Leia maisLaborató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:
Leia maisProgramação de Microprocessadores. Programação de Microprocessadores SEL-433 APLICAÇÕES DE MICROPROCESSADORES I
SEL-433 APLICAÇÕES DE MICROPROCESSADORES I Programação de Microprocessadores Microprocessadores são Máquinas de Estado Seqüenciais Síncronas que operam mediante a execução de uma seqüência de códigos binários
Leia maisAs 5 partes fundamentais. Linguagem de Programação Pinagem Características Elétricas Ambiente de Desenvolvimento Integrado - IDE
SEL-433 APLICAÇÕES DE MICROPROCESSADORES I Como conhecer/estudar um Microprocessador/Microcontrolador As 5 partes fundamentais Programação de Microprocessadores Prof: Evandro L. L. Rodrigues Arquitetura
Leia mais7. PROGRAMANDO O MICROCONTROLADOR. Microcontroladores - Prof: Demantova
7. PROGRAMANDO O MICROCONTROLADOR 1 7. PROGRAMANDO O MICROCONTROLADOR: Hardware parte física do circuito eletrônico CPU onde está localizado o microcontrolador. Dentro do microcontrolador existe um conjunto
Leia maisAula 10 Microcontrolador Intel 8051 Parte 2
SEL 0415 Aula 10 Microcontrolador Intel 8051 Parte 2 SEL 0415 INTROD À ORGANIZAÇÃO DE COMPUTADORES Prof Dr Marcelo A C Vieira SEL 415 Mapeamento das memórias internas Memória de dados interna (RAM) n 8051
Leia maisSEL PROGRAMAÇÃO EM C
SEL0337 1 8051 PROGRAMAÇÃO EM C LINGUAGEM C Linguagem que pode ser utilizada atualmente na programação de quase todos os microcontroladores; Há microcontroladores com instruções otimizadas para programação
Leia maisMICROPROCESSADORES 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
Leia maisEXERCÍCIOS RESOLVIDOS
EXERCÍCIOS RESOLVIDOS Modos de endereçamento direto ; inclui no programa assembly o arquivo (REG51.inc) ORG 0000H ; o programa inicia na linha 0000H da EPROM MOV A,#01010101B ; carrego no ACC por binário
Leia maisEscola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás. Experimento 7: Sensores e Transdutores
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 7: Sensores e Transdutores Alunos: Matrícula: Prof.
Leia maisEXERCÍCIOS 2 Prof. Adilson Gonzaga
LISTA DE EXERCÍCIOS 2 Prof. Adilson Gonzaga 1) Um robô como mostrado na figura é acionado por dois motores de corrente contínua, um para cada roda, conforme o esquema, e possui um sensor localizado na
Leia mais8051 PROGRAMAÇÃO EM C
1 8051 PROGRAMAÇÃO EM C C E ASSEMBLY for-loop em C int z; for (z=255; z>0; z--) P1=z; loop em Assembly MOV R1,#255 ABC: MOV P1,R1 DJNZ R1,ABC 2 TIPOS DE DADOS (DATA TYPES) E ATRASOS (TIME DELAY) EM C DO
Leia maisLaboratório de Microprocessadores e Microcontroladores. Experimento 7:
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 7: Conversor Analógico/Digital e Conversor Digital/Analógico
Leia maisLaboratório de Microprocessadores e Microcontroladores. Experimento 6:
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 6: Conversor Analógico/Digital e Conversor Digital/Analógico
Leia maisOprojeto apresenta três níveis de dificuldade: fácil, médio e difícil. No modo fácil tem-se uma
Jogo de Memória (Memorex v. 3.0) José Wilson Lima Nerys Universidade Federal de Goiás jwlnerys@gmail.com Abstract No presente projeto uma sequência de Leds é criada pelo microcontrolador, e deve ser repetida
Leia maisLaboratório de Microprocessadores e Microcontroladores. Experimento 6: Conversor Analógico/Digital e Conversor Digital/Analógico
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 6: Conversor Analógico/Digital e Conversor Digital/Analógico
Leia maisLaboratório de Microprocessadores e Microcontroladores. Experimento 6: Conversor Analógico/Digital e Conversor Digital/Analógico
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 6: Conversor Analógico/Digital e Conversor Digital/Analógico
Leia maisSuporta os microcontroladores: R. Leonardo da Vinci, Campinas/SP CEP F.: (19) Kit de Desenvolvimento ACEPIC 28
Suporta os microcontroladores: PIC16F870, PIC16F872, PIC16F873A, PIC16F876A, PIC16F886, PIC18F2420, PIC18F2520, PIC18F2525, PIC18F2620, PIC18F2455, PIC 18F2550 e outros com 28 pinos O Kit de desenvolvimento
Leia maisMicroprocessadores e Microcontroladores. Prova Substitutiva Uma Solução
Prova Substitutiva Uma Solução Aluno: Matrícula: Uso de Interrupções e do Temporizador 1. Faça um programa (usando o assembly do 8051) para acionamento de um motor de corrente contínua, com as seguintes
Leia maisSEL-614 MICROPROCESSADORES E APLICAÇÕES. Adilson Gonzaga
SEL-614 MICROPROCESSADORES E APLICAÇÕES Prof: Adilson Gonzaga HISTÓRICO Microprocessador Circuito integrado ( chip ) capaz de executar instruções. 1971 Intel Corporation lançou no mercado o microprocessador
Leia maisUNIVERSIDADE PAULISTA (UNIP) Curso de Engenharia Mecatrônica Disciplina: Microprocessadores e Microcontroladores (MM) LISTA III
UNIVERSIDADE PAULISTA (UNIP) Curso de Engenharia Mecatrônica Disciplina: Microprocessadores e Microcontroladores (MM) LISTA III Orientações: Esta lista de Exercícios deve ser entregue juntamente com a
Leia maisLista 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
Leia maisLaboratório de Microprocessadores e Microcontroladores. Experimento 7:
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 7: Sensores e Transdutores Alunos: Matrícula: Prof.
Leia maisPLATAFORMA PARA ESTUDO EM PROGRAMAÇÃO DE MICROCONTROLADORES FAMÍLIA 8051
PLATAFORMA PARA ESTUDO EM PROGRAMAÇÃO DE MICROCONTROLADORES FAMÍLIA 8051 MODELO: EE0216 DESCRIÇÃO Plataforma de treinamento em microcontroladores família 8051 base em aço carbono e pés de borracha, pintura
Leia maisLINGUAGEM C PARA O 8051
LINGUAGEM C PARA O 8051 Disciplina de Microcontroladores Prof. Rubão VARIÁVEIS E TIPOS DE DADOS SIMPLES Char 8 bits Short e int 16 bits Long 32 bits Float 32 bits Unsigned int 16 bits Unsigned long 32
Leia maisO Pino P2.7 não está sendo usado e cada Display mostrará valores de 0 a 9.
Lista de Exercícios 2 Conceitos envolvidos: a) Interface serial RS232 b) Interface com Teclado Matricial c) Interface com Displays de 7 segmentos d) Interface com LCD e) Interface com Conversores A/D e
Leia maisMICROPROCESSADORES E MICROCONTROLADORES PROVA 2 (Tema: Microcontrolador 8051)
MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 (Tema: Microcontrolador 8051) 1. Tema: programação geral do microcontrolador 8051. Valor: 2,0 A Figura a seguir mostra um sistema no qual um motor de passo
Leia maisLaborató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:
Leia maisLINGUAGEM C PARA O 8051
LINGUAGEM C PARA O 8051 Disciplina de Microcontroladores Prof. Ronnier e Rubão VARIÁVEIS E TIPOS DE DADOS SIMPLES Char 8 bits Short e int 16 bits Long 32 bits Float 32 bits Unsigned int 16 bits Unsigned
Leia maisEstudar os passos que devem ser feitos (ponto de partida até o objetivo)
Erros básicos Falta de conhecimento sobre o microcontrolador e assembly Falta de planejamento na hora de desenvolver o programa Estudar os passos que devem ser feitos (ponto de partida até o objetivo)
Leia maisLaboratório de Microprocessadores e Microcontroladores. Experimento 7:
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 7: Sensores e Transdutores Alunos: Matrícula: Prof.
Leia maisMICROPROCESSADORES E MICROCONTROLADORES PROVA 2 (Tema: Microcontrolador 8051)
MICROPROCEADORE E MICROCOTROLADORE PROVA 2 (Tema: Microcontrolador 8051) 1. Tema: programação geral do microcontrolador 8051. Valor: 2,5 A Figura a seguir mostra um carro com quatro sensores de obstáculos
Leia maisGuia da Placa de desenvolvimento PD Mega16 N1
Guia da Placa de desenvolvimento PD Mega16 N1 Este tutorial consiste mostrar detalhes de hardware da placa de desenvolvimento PD Mega16 N1, necessário para iniciar a programação e testes. Boa aprendizagem...
Leia maisSistemas Microprocessados. sato<at>utfpr<dot>edu<dot>br
Sistemas Microprocessados satoutfpredubr http://pessoal.utfpr.edu.br/sato/ Assembly do 805 satoutfpredubr Sobre o material Essas transparências foram baseadas em materiais elaborados
Leia maisAplicações de Microprocessadores I. Prof. Adilson Gonzaga
Aplicações de Microprocessadores I Prof. Adilson Gonzaga Exercício -1 Fazer um programa em Assembly do 8051 que informe a temperatura de um forno. O programa deve enviar inicialmente um String em ASCII
Leia maisMICROCONTROLADOR 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
Leia maisLista de Exercícios 1
Conceitos envolvidos: a) Contadores e Temporizadores b) Interface serial RS2322 c) Interrupções Lista de Exercícios 1 1. Fazer um contador hexadecimal que coloque o valor de contagem na porta P1 em intervalos
Leia maisPRÁTICAS. Microcontroladores: (LT36D) Prof: DaLuz. Práticas - 2º sem Microcontroladores LT36D - 26/04/ :56 1/16
PRÁTICAS Microcontroladores: (LT36D) Prof: DaLuz 1/16 Laboratório 01: - Laboratórios Instrução / diretiva (ORG e END), exemplos: ORG 0000h posiciona o código na linha 0000h da EPROM ORG 0100h posiciona
Leia maisEx.: Rotinas de tempo
Ex.: Rotinas de tempo ORG 0000h PADRAO EQU 11111110b PORTA EQU P1 VBASE EQU 0800h mov r0,# PADRAO inicio: mov PORTA,r0 ;***********TEMPO DE 1S ************ mov dptr,#vbase ; Tt= 2T espera1: mov r1,#0f2h
Leia mais208 = D0 h TMOD. MOV TMOD,#20h ;TMOD = Timer 1 no ;Modo 2, controle por software SCON. ;Canal Serial
Exercício 1 Fazer um programa em Assembly do 8051 que informe a temperatura de um forno. O programa deve enviar inicialmente um String em ASCII armazenado na área de memória de programa a partir do endereço
Leia maisLaborató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.
Leia maisNotas de Aula Prof. André R. Hirakawa Prof. Paulo S. Cugnasca Prof. Carlos E. Cugnasca
Notas de Aula Prof. André R. Hirakawa Prof. Paulo S. Cugnasca Prof. Carlos E. Cugnasca SISTEMAS COMPACTOS: MEMÓRIAS ROM/RAM INTERNAS E/S INTERNOS: 1 CANAL SERIAL (CONSOME P3.0 E P3.1) 2 TIMERS/CONTADORES
Leia maisMicrocontrolador 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,
Leia maisLista de Exercícios 1
Conceitos envolvidos: a) Memória de Dados (interna e externa) b) Memória de Programa (interna e externa) c) Operações aritméticas e lógicas d) Portas e) Endereçamento a Bit f) Contadores e Temporizadores
Leia maisLaborató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.
Leia maisMicrocontrolador 8051
Microcontrolador 8051 Inicialmente fabricado pela INTEL, atualmente fabricado por várias empresas; Possui uma grande variedade de dispositivos, com diversas características, porém compatíveis em software;
Leia maisTemporizadores 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
Leia maisMicrocontroladores. Conjunto de Instruções do Prof. Guilherme Peron Prof. Heitor Lopes Prof. Ronnier Rohrich Prof. Rubão
Microcontroladores do 805 Prof. Guilherme Peron Prof. Heitor Lopes Prof. Ronnier Rohrich Prof. Rubão Introdução Os microcontroladores: Têm instruções limitadas Precisam tratar os dados da forma correta
Leia maisEXPERIÊNCIA 17 USO DO TEMPORIZADOR INTERNO
EXPERIÊNCIA 17 USO DO TEMPORIZADOR INTERNO Parte I Fundamentos Teóricos O que diferencia um microcontrolador (como o 8051) de um microprocessador é o fato de que o primeiro pode apresentar, integrados
Leia maisRevisão da Linguagem C Prof. Evandro L. L. Rodrigues
SEL0433 Aplicação de Microprocessadores I Revisão da Linguagem C Prof. Evandro L. L. Rodrigues Estrutura de um programa C Diretivas de pré processamento Declaração de variáveis globais Declaração de protótipos
Leia maisLaborató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.
Leia maisOrganizaçã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
Leia maisCONJUNTO DE INSTRUÇÕES
CONJUNTO DE INSTRUÇÕES Rn - Registrador R0 R7 do banco de registradores selecionado. direto - 8-bits de endereço da posição da RAM de dados Podem ser referentes tanto à RAM interna (0 7F) como ao espaço
Leia maisLaborató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 4: Motor de Passo e Motor de Corrente Contínua Alunos:
Leia maisTópicos: 1 - Modos de endereçamento do Pilha e instruções de Pilha. 3 - Instruções que usam pilha: - instrução CALL - instrução RET
Tópicos: 1 - Modos de endereçamento do 8051 2 - Pilha e instruções de Pilha 3 - Instruções que usam pilha: - instrução CALL - instrução RET 4 - Interrupção 1 - Modos de Endereçamento do 8051 Os modos de
Leia maisUsando Display Gráfico com C18 e C30
Usando Display Gráfico com C18 e C30 Elaborado por: Revisado por: Tiago Coelho Magalhães Marcelo M. M. do Couto José Domingos Adriano Todos os documentos aqui referidos neste material encontram-se na pasta
Leia mais9/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
Leia maisProf. Adilson Gonzaga
Microprocessadores são Máquinas de Estado Seqüenciais Síncronas que operam mediante a execução de uma seqüência de códigos binários armazenados em memória. Prof. Adilson Gonzaga 1 As ordens ou comandos
Leia maisAula 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
Leia maisApêndice A Placa Experimental do 8051
Apêndice A Placa Experimental do 8051 L.M.S. e P.S.C. / 2001 (revisão) E.T.M./2005 (revisão) Para viabilizar uma rápida familiarização e uso do 8051, foi desenvolvida no PCS/EPUSP, uma Placa Experimental,
Leia maisNOTAS DE AULA 06 MICROCONTROLADOR 8051
NOTAS DE AULA 06 MICROCONTROLADOR 8051 SUMÁRIO DO VOLUME NOTAS DE AULA 06 1 INTRODUÇÃO AOS MICROCONTROLADORES 2 PROGRAMANDO EM LINGUAGEM ASSEMBLY - 8051 3 INSTRUÇÕES: JUMPS, LOOPS E CALL 4 DESCRIÇÃO DOS
Leia maisMicroprocessadores e Microcontroladores Parte 3. Expansão de Memória Mapeamento de Memória
Microprocessadores e Microcontroladores Parte 3 Expansão de Memória José Wilson Lima Nerys www.eee.ufg.br/ jwilson 2013 Um microcontrolador padrão da família 8051 possui normalmente uma memória de programa
Leia maisSistemas Operacionais de Tempo Real Displays de 7 segmentos
1 / 31 Sistemas Operacionais de Tempo Real Displays de 7 segmentos por Henrique Frank W. Puhlmann Introdução Este artigo faz parte da série de artigos que apresenta Bibliotecas de funções e rotinas padronizadas
Leia maisKIT DIDÁTICO PIC-2377
KIT DIDÁTICO PIC-77... Módulo PIC-77 Recursos internos da MCU Encapsulamento DIP40. 5 instruções (RISC). pinos de I/O configuráveis. 56 bytes de EEPROM para dados de 8 bits. 8k de memória flash para o
Leia maisArduino. Introdução aos Componentes Básicos. Leonardo Mauro P. Moraes. Universidade Federal de Mato Grosso do Sul - UFMS.
Arduino Introdução aos Básicos Leonardo Mauro P. Moraes Universidade Federal de Mato Grosso do Sul - UFMS Ponta Porã - MS 2016 1 Introdução 2 Arduino 3 4 Encerramento Introdução Arduino 1 Introdução Arduino
Leia maisMICROPROCESSADORES E MICROCONTROLADORES Parte 2 Microcontrolador 8051
MICROPROCESSADORES E MICROCONTROLADORES Parte 2 Microcontrolador 8051 José Wilson Lima Nerys Página: www.emc.ufg/~jwilson Emails: jwlnerys@gmail.com e jose_wilson_nerys@ufg.br Prof. José Wilson 1 Lima
Leia maisAssembly Sintaxe do Assembly. Instruções que afectam Flags. Aplicações de Microprocessadores 2006/2007
Assembly 8051 Aplicações de Microprocessadores 2006/2007 Sintaxe do Assembly [Label] Op-code [Operando] [Comentário] tabela: movc a,@a+dptr ; vai à tabela buscar o seu correspondente ASCII 2 2 Instruções
Leia maisPequenos Projetos com Arduino
Governo do Estado de Pernambuco Secretaria de Educação Secretaria Executiva de Educação Profissional Escola Técnica Estadual Professor Agamemnon Magalhães ETEPAM Pequenos Projetos com Arduino Jener Toscano
Leia maisMICROPROCESSADORES E MICROCONTROLADORES Parte 2 Microcontrolador 8051
MICROPROCESSADORES E MICROCONTROLADORES Parte Microcontrolador 805 José Wilson Lima Nerys Página: www.emc.ufg/~jwilson Emails: jwlnerys@gmail.com e jose_wilson_nerys@ufg.br Prof. José Wilson Lima Nerys
Leia maisUTFPR 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
Leia maisGOVERNO DO ESTADO DE SÃO PAULO
Centro Estadual de Educação Tecnológica Paula Souza GOVERNO DO ESTADO DE SÃO PAULO Etec JORGE STREET TRABALHO DE CONCLUSÃO DO CURSO TÉCNICO EM AUTOMAÇÃO INDUSTRIAL Esteira Seletora Caique de Siqueira Flavio
Leia maisMICROPROCESSADORES E MICROCONTROLADORES Parte 3 Microcontrolador 8051
MICROPROCESSADORES E MICROCONTROLADORES Parte 3 Microcontrolador 8051 José Wilson Lima Nerys Página: www.emc.ufg/~jwilson Emails: jwlnerys@gmail.com e jose_wilson_nerys@ufg.br 1 Prof. José Wilson Lima
Leia maisManual do usuário - Kit DLS v4.0. Kit DLS v4.0 Display LCD serial Manual do usuário. Copyright VW Soluções
Kit DLS v4.0 Display LCD serial Manual do usuário 1 Apresentação Sem dúvida, o display Lcd é um dos recursos mais interessantes quando utilizamos microcontroladores. Isto porque podemos desenvolver IHM
Leia maisMicrocontroladores PIC16 - XM 116 -
T e c n o l o g i a Microcontroladores PIC16 - XM 116 - Os melhores e mais modernos MÓDULOS DIDÁTICOS para um ensino tecnológico de qualidade. Microcontroladores PIC16 - XM 116 - INTRODUÇÃO O mundo da
Leia maisMicrocontroladores 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
Leia maisMicrocontrolador Assembly UTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
Assembly 8051 Num sistema microprocessado, geralmente, não existe um sistema operacional; O programa desenvolvido pelo programador deve cuidar tanto da lógica do programa, bem como da configuração e acesso
Leia maisInterface com Teclas, Leds e Teclados Matriciais. Prof. Adilson Gonzaga
Interface com Teclas, Leds e Teclados Matriciais Prof. Adilson Gonzaga Técnicas de Interface com Microcontroladores (8051) Estrutura das Portas do 8051: Todas as quatro Portas (P0,P1,P2,P3) da família
Leia maisFunções dos Microcontroladores Microcontroladores e Microprocessadores Especialização em Automação Industrial
Funções dos Microcontroladores Microcontroladores e Microprocessadores Especialização em Automação Industrial 1 LCD - PIC Configure um projeto normalmente e na aba LCD (External) marque as opções Use LCD
Leia mais