LABORATÓRIO DE MICROPROCESSADORES E MICROCONTROLADORES
|
|
|
- Daniela Caetano Benke
- 10 Há anos
- Visualizações:
Transcrição
1 Escola de Engenharia Elétrica e de Computação Universidade Federal de Goiás LABORATÓRIO DE MICROPROCESSADORES E MICROCONTROLADORES Prof. Dr. José Wilson Lima Nerys Goiânia, 1º semestre de 2012
2 Laboratório de Microprocessadores e Microcontroladores 2 SUMÁRIO 1 Atividade 1 Introdução ao Microcontrolador Características Gerais do Os Registradores de Funções Especiais Instruções Básicas Gerais do Instruções de Comparação, Decisão e de Desvio Operações com bit Diretivas de Programação O Simulador PEQui e o Kit Didático Atividade 2 Teclado, Rotação de LEDs e Motor de Passo Introdução ao Teclado Introdução ao Motor de Passo Atividade 3 Interrupções Externas Interrupções Atividade 4 Temporizadores e Motor de Corrente Contínua Temporizadores Motores de Corrente Contínua Driver para Acionamento do Motor de Corrente Contínua (Ponte H): Sensores de Presença Medição de Velocidade Atividade 5 Comunicação Serial Introdução à Comunicação Serial Atividade 6 Display LCD e Display de 7-Segmentos Introdução ao display LCD Introdução ao display de 7-segmentos Atividade 7 Conversores D/A e A/D Conversor Digital-Analógico Conversor Analógico-Digital Atividade 8 Montagem e Programação Tarefas da Atividade Tarefas da Atividade Tarefas da Atividade Tarefas da Atividade Tarefas da Atividade
3 Laboratório de Microprocessadores e Microcontroladores 3 14 Tarefas da Atividade Tarefas da Atividade Tarefas da Atividade
4 Laboratório de Microprocessadores e Microcontroladores 4 EMBASAMENTO TEÓRICO Observações: 1. O Material de laboratório é apresentado em duas partes: embasamento teórico e tarefas 2. A leitura do embasamento teórico é fundamental para a realização das tarefas da segunda parte. 3. Preferencialmente o aluno deve ler o embasamento teórico e responder as questões possíveis das tarefas antes de comparecer às aulas de laboratório. 4. As tarefas, e somente elas, devem ser entregues, respondidas, após cada aula de laboratório. 5. A entrega das tarefas é individual.
5 Laboratório de Microprocessadores e Microcontroladores 5 1 Atividade 1 Introdução ao Microcontrolador Características Gerais do 8051 A pinagem do microcontrolador básico de 40 pinos da família 8051 é mostrada na Fig. 1.1, que mostra também o componente de 20 pinos. O componente básico de 40 pinos contém 2 contadores/temporizadores, 4 portas paralelas de 8 bits, 2 fontes de interrupção externas e 3 internas, uma porta serial com um canal de entrada e outro de saída, memória RAM e memória ROM. O componente de 20 pinos diferencia-se, basicamente, por ter apenas duas portas de entrada/saída (portas P1 e P3). Fig. 1.1 Pinagem dos microcontroladores de 40 pinos e 20 pinos da família A Fig. 1.2 mostra o circuito mínimo necessário para acionamento de um LED através do pino 0 da porta P2. O driver constituído de um transistor e um dois resistores é necessário para o acionamento do LED através do microcontrolador de 40 pinos porque a capacidade de corrente desse componente é muito pequena. De acordo com o datasheet do componente AT89S52, a capacidade de corrente por pino de cada porta é de 10 ma e por porta de 8 pinos é de 15 ma para as portas P1, P2 e P3 e 26 ma para a porta P0. Por outro lado, a capacidade de corrente do componente de 20 pinos é maior. De acordo com o datasheet do componente AT89C2051, a capacidade por pino é de 20 ma e a capacidade total para todos pinos é de 80 ma. Assim, o LED pode ser acionado diretamente, apenas com o resistor de 330 ohms para limitar a corrente. Fig. 1.2 Sistema mínimo para acionamento de um LED
6 Laboratório de Microprocessadores e Microcontroladores 6 A Fig. 1.3 mostra o diagrama de blocos de um microcontrolador básico da família Fig. 1.3 Diagrama de blocos de microcontrolador básico da família 8051 Destaca-se a memória RAM, Fig. 1.4, onde estão presentes os registradores utilizados nas instruções e onde há uma área reservada para os Registradores Especiais, tais como os registradores das portas P0 a P3 e os registradores TMOD e IE, de configuração dos temporizadores e das interrupções, respectivamente. Fig. 1.4 Memórias RAM interna A Fig. 1.5 detalha a parte baixa da memória RAM, onde estão presentes 4 conjuntos de 8 registradores cada um, uma região de memória que pode ser acessada por bit e por byte e uma região de memória que pode ser acessada apenas por byte.
7 Laboratório de Microprocessadores e Microcontroladores 7 Fig. 1.5 Detalhes da Parte baixa da memória RAM interna
8 Laboratório de Microprocessadores e Microcontroladores Os Registradores de Funções Especiais A Tabela 1 mostra os principais Registradores Especiais, que ficam localizados na região de 80h a FF h da memória RAM. Os registradores dessa região, com endereços de final 0 ou 8, são endereçáveis por byte ou por bit. Os demais, apenas por byte. Deve ser enfatizado que os registradores especiais ocupam os endereços de 80h a FFh, que coincide com os 128 bytes superiores da RAM interna dos microcontroladores xxx2. A diferença entre o acesso aos Registradores especiais e a parte superior da RAM interna é o tipo de endereçamento. Os registros especiais são acessados sempre por endereçamento direto, enquanto a parte superior da RAM interna é acessada somente por endereçamento indireto. Tabela 1: Principais Registradores Especiais Registrador Mnemônico Endereço Endereços individuais dos Bits e denominações de alguns bits Latch da Porta 0 P0 80 H Apontador de Pilha SP 81 H Apontador de Dados DPTR 82H 83H LSB do Apontador de Dados DPL 82 H MSB do Apontador de Dados DPH 83 H Controle de Energia PCON 87 H SMOD Controle do Contador/Temporizador TCON 88 H 8F 8E 8D 8C 8B 8A TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 Controle do Modo do Temporizador/ TMOD Contador 89 H G1 LSB do Temporizador/Contador 0 TL0 8A H LSB do Temporizador/Contador 1 TL1 8B H MSB do Temporizador/Contador 0 TH0 8C H MSB do Temporizador/Contador 1 TH1 8D H Latch da Porta 1 P1 90 H C/T1 M11 M01 G0 C/T0 M10 M00 Controle da Porta Serial SCON 98 H 9F 9E 9D 9C 9B 9A SM1 SM2 SM3 REN TB8 RB8 TI RI Porta de Dados Seriais SBUF 99 H Latch da Porta 2 P2 A0 H A7 A6 A5 A4 A3 A2 A1 A0 Habilitador de Interrupção IE A8 H AF AE AD AC AB AA A9 A8 EA ES ET1 EX1 ET0 EX0 Latch da Porta 3 P3 B0 H B7 B6 B5 B4 B3 B2 B1 B0 Controle de Prioridade da Interrup. IP B8 H BF BE BD BC BB BA B9 B8 PS PT1 PX1 PT0 PX0 Registrador de Estado do Programa PSW D0 H D7 D6 D5 D4 D3 D2 D1 D0 CY AC F0 RS1 RS0 OV P Acumulador ACC ou A E0 H E7 E6 E5 E4 E3 E2 E1 E0 Registrador B B F0 H F7 F6 F5 F4 F3 F2 F1 F0 O PSW (Program Status Word) é o registrador especial que contém as Flags e também os bits RS1 e RS0, usados para selecionar o banco de registradores (ver Tabela 2). Este registrador é endereçável por bit. As flags do microcontrolador 8051 são: flag de carry (CY), flag auxiliar de carry (AC), flag de uso geral (F0), flag de overflow (OV) e flag de paridade (P). PSW Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 CY AC F0 RS1 RS0 0V P
9 Laboratório de Microprocessadores e Microcontroladores 9 Tabela 2 Seleção do banco de registradores RS1 RS0 Banco Selecionado A Tabela 3 apresenta os valores iniciais dos registradores especiais após o Reset. Observar que as portas de entrada/saída assumem nível lógico alto e o apontador de pilha assume o valor 07h. Tabela 3 Valores dos registradores especiais após o Reset Registro Valor Registro Valor PC 0000h TCON 00h A 00h TH0 00h B 00h TL0 00h PSW 00h TH1 00h SP 07h TL1 00h DPTR 0000h SCON 00h P0 - P3 FFh SBUF Indeterminado IP xxx00000b PCON(NMOS) 0xxxxxxxb IE 0xx00000b PCON(CMOS) 0xxx0000b TMOD 00h 1.3 Instruções Básicas Gerais do 8051 As instruções do 8051 podem ser digitadas em maiúsculas ou minúsculas. A seguir são mostradas algumas dessas instruções, com exemplos. O símbolo # é necessário para diferenciar dado de registrador. Os dados seguidos de H ou h estão no sistema hexadecimal; os dados seguidos de B ou b estão em binário e os dados sem nenhuma indicação estão no sistema decimal. Os termos DIRETO, dir e dir2 significam referência ao endereço do registrador, ao invés de seu nome. O termo REG corresponde a Registrador, podendo ser de R0 a R7. Instrução MOV A,#DADO MOV A,DIRETO MOV A,REG MOV dir2,dir1 Descrição e exemplos Carrega o acumulador com o valor de dado. MOV A,#25 Carrega acumulador com valor decimal 25 (19 hexadecimal) MOV A,#15H Carrega acumulador com valor hexadecimal 15H MOV A,# b Carrega acumulador com o binário equivalente a 59H Copia no acumulador o conteúdo do registrador cujo endereço é direto. MOV A,15H Copia no acumulador o conteúdo do registrador R5 (15H), do banco 2. Copia no acumulador o conteúdo do registrador reg, sendo reg = R0, R1,..., R7, do banco de registradores que estiver ativo. MOV A,R6 Copia no acumulador o conteúdo do registrador R6. Copia no registrador cujo endereço é dir2 o conteúdo do registrador cujo endereço é dir1. MOV 02H,05H Copia em R2 (02H) o conteúdo do registrador R5 (05).
10 Laboratório de Microprocessadores e Microcontroladores 10 Instrução MOV R0,#20H MOV DPTR,#200H MOVC A,@A+DPTR MOV DPTR,#200H ADD A,REG ADD A,DIRETO ADD A,#DADO ADD A,@Rn SUBB A,#DADO RL A RR A INC REG DEC REG CPL A SWAP A DA A MUL AB Descrição e exemplos Carrega registrador R0 com valor 20h Copia o valor 55h na posição apontada pelo registrador R0, ou seja, endereço 20H, que é a primeira posição acima do banco de registradores. Carrega registrador de 16 bits dptr com valor 200H Carrega acumulador com o conteúdo da posição apontada por a + dptr. Se, por exemplo, A = 04H, então carrega acumulador com o conteúdo da posição 204H. Carrega registrador de 16 bits dptr com valor 200H Envia o conteúdo do acumulador para a posição externa 200H, apontada pelo DPTR Adiciona o conteúdo do registrador reg ao conteúdo do acumulador. ADD A,R1 Se A = 07 H e R1 = 03 H, então, após a instrução, a = 0AH. Adiciona o conteúdo do registrador de endereço direto ao conteúdo do acumulador: A = A + (direto) ADD A,10H Se A = 07 H e 10H = 03 H, então, após a instrução, A = 0AH. Adiciona ao conteúdo do acumulador o valor dado : A = A + dado ADD A,#04h Se a = 07 H, então, após a instrução, A = 0BH. Adiciona ao conteúdo do acumulador o conteúdo da posição apontada por Rn. A = A + ((Rn)). MOV R0,#20h ADD A,@R0 Se A = 07 H e registrador 20H = #03H, então, após a instrução, A = 0AH. Subtrai o conteúdo do acumulador do DADO. A = A DADO. SUBB A,#05H Se A = 07 H, então, após a instrução, A = 02 H. Rotaciona o conteúdo do acumulador para a esquerda (rotate left). Por exemplo, se originalmente A= 21 H ( b), após a instrução, tem-se: A = 42 H ( b). Rotaciona o conteúdo do acumulador para a direita (rotate right). Por exemplo, se originalmente A= 8C H ( b), após a instrução, tem: A = 46 H ( b). Incrementa conteúdo do registrador reg. Por exemplo, se R1 = 05H, então INC R1 resulta em R1 = 06 H. Decrementa conteúdo do registrador reg. Por exemplo, se R2 = 0B H, então DEC R2 resulta em R2 = 0A H. Complementa o conteúdo do acumulador. Por exemplo, se originalmente, A = 55 H, então, após a instrução, A = AA H. Faz a troca dos nibbles do acumulador, ou seja, o nibble mais significativo passa a ocupar os quatro primeiros bits do acumulador e o nibble menos significativo passa a ocupar os quatro últimos bits. Por exemplo, se originalmente, A = 35 H, após a instrução, A = 53 H. Faz o ajuste decimal do acumulador. Adiciona 6 ao dígito que esteja no intervalo de A a F. Por exemplo, se originalmente A = 7A H, após a instrução torna-se A = 80 H. Multiplica o conteúdo de A pelo conteúdo de B. O resultado está em B A. O resultado da multiplicação é um número de 16 bits, por isso precisa de dois registradores para o resultado. MUL AB se A = 25 H e B = 30 H, após a instrução, tem-se: B = 06 H e A = F0 H, pois o resultado da multiplicação é: 6F0 H
11 Laboratório de Microprocessadores e Microcontroladores 11 Instrução DIV AB ANL A,#DADO ORL A,#DADO Descrição e exemplos Divide o conteúdo de A pelo conteúdo de B. A recebe o quociente e B o resto. DIV AB se A = CA H (202) e B = 19 H (25), após a instrução, tem-se: A = 08 H e B = 02, pois a divisão em decimal (202/25) resulta em quociente 8 e resto 2. Faz uma operação AND entre acumulador e DADO. A = A (AND) DADO. ANL A,#0FH se originalmente A = 35 H, após a instrução torna-se: A = 05H. Faz uma operação OR entre o acumulador e DADO. A = A (OR) DADO. ORL A,#20H se originalmente A = 07 H, após a instrução torna-se: A = 27 H. 1.4 Instruções de Comparação, Decisão e de Desvio As instruções desta seção são de desvio incondicional e desvio que depende do estado de flags. Instrução SJMP DESVIO AJMP DESVIO LJMP DESVIO JNZ DESVIO LCALL SUBROT JC DESVIO JNC DESVIO DJNZ REG,DESVIO CJNE A,#DADO,V1 Descrição e exemplos Desvio incondicional curto (Short Jump) relativo. Pula até 127 bytes para a frente e até 128 bytes para trás. Instrução de desvio para distâncias correspondentes a até 2048 bytes. Endereço de 11 bits. Desvio incondicional longo, para qualquer posição da memória de programa. Endereço de 16 bits. Instrução de desvio condicional: Jump IF Not Zero. Pula para desvio se a operação anterior não resultar em zero. Verifica automaticamente a flag de zero. Chamada de subrotina. Desvia para o endereço onde a subrotina está localizada. Ao encontrar a instrução RET, retorna para a instrução que vem logo após a chamada de subrotina. Desvio condicional para a posição indicada por desvio. Desvia se a flag de CARRY estiver setada. Desvio condicional para a posição indicada por desvio. Desvia se a flag de CARRY não estiver setada. Decrementa registrador reg e pula para a posição desvio se o resultado não for zero. É uma combinação das instruções DEC e JNZ do microprocessador MOV R5,#10 V1: DJNZ R5,V1 O registrador R5 é decrementado até tornar-se zero Compara conteúdo do acumulador com dado e pula para a posição V1 se não forem iguais. MOV A,#00H V1: INC A CJNE A,#20H,V1 Compara o conteúdo de A com 20 hexadecimal e, caso não seja igual pula para V1 para incrementar A. Quando for igual, pula para a próxima linha. A diferença entre LJMP e SJMP é que a primeira instrução refere-se a um endereço de 16 bits e é codificada em 3 bytes: o opcode e os dois bytes de endereço. A instrução SJMP é codificada em 2 bytes sendo o segundo byte o valor que deve ser adicionado à posição atual do apontador de programa PC, para determinar o endereço de desvio. O exemplo a seguir mostra um programa e sua codificação, com as instruções SJMP e LJMP. No programa mostrado o código de SJMP V1 é 8009, onde 80H é o opcode da instrução e 09H é o valor que deve ser adicionado ao contador de programa PC para indicar a próxima instrução a ser executada. Após a execução de SJMP V1 o valor de PC é 0037H. Adicionando 09H chega-se a 0040H, endereço da instrução ADD A,#53H. O código da instrução LJMP INICIO é , onde 02H é o opcode da instrução e 0030H é o endereço de desvio, ou seja, a posição de início do programa, para execução da instrução MOV A,#35H.
12 Laboratório de Microprocessadores e Microcontroladores 12 Endereço Codificação Rótulo Mnemônico $MOD ORG 00H LJMP INICIO 0030 ORG 30H INICIO: MOV A,#35H F045 MOV B,#45H SJMP V ORG 40H V1: ADD A,#53H LJMP INICIO END 1.5 Operações com bit As instruções mostradas a seguir são algumas das instruções usadas nas operações com bit, ao invés de byte. O bit pode ser de um registrador especial (daqueles que permitem controle individual por bit) ou da região da memória RAM que vai do endereço 20H até 2FH. Instrução JB BIT,DESVIO JNB BIT,DESVIO SETB BIT CLR BIT Descrição e exemplos Desvia para a posição desvio, caso o bit esteja setado. JB LIGADO,DESLIGA Se o bit ligado = 1, então o programa desvia para a posição deliga. Desvia para desvio, caso o bit NÃO esteja setado. JNB LIGADO,LIGA Se o bit ligado = 0, então o programa desvia para a posição liga. Seta o bit. SETB LIGADO Torna o bit ligado igual a 1. Limpa o bit CLR LIGADO Torna o bit ligado igual a zero 1.6 Diretivas de Programação Durante a programação em assembly, são necessárias algumas informações para o compilador. Essas informações não são compiladas, mas apenas informam sobre variáveis, sobre posicionamento na memória e sobre dados. As principais diretivas são dadas a seguir: org endereço Informa ao compilador o endereço onde deve ser armazenada a próxima instrução. Exemplo: org 30 H mov sp,#2fh Esta instrução será armazenada na posição 30 H da memória ROM. variável equ ender. reg. informa ao compilador que a variável equivale ao registrador cujo endereço é ender. reg. Exemplo: velocidade equ 05H Esta diretiva diz ao compilador que as operações com a variável velocidade equivalem às operações com o registrador R5 do banco 0 (endereço do registrador: 05 H). Por exemplo: mov velocidade,#52h equivale à instrução mov R5,#52H.
13 Laboratório de Microprocessadores e Microcontroladores 13 variável bit ender. bit informa ao compilador que a variável é do tipo bit e será armazenada no endereço dado por ender.bit. Exemplo: sentido bit 00H Esta diretiva diz ao compilador que a variável sentido é do tipo bit e será armazenada no endereço 00H da região acima dos bancos de registradores. O endereço do bit 00H corresponde ao primeiro endereço dessa região, ou seja, posição 20.0H. db byte Esta diretiva diz ao compilador que o byte a seguir é um dado e não uma instrução. Exemplo: db 45H O valor 45H é tratado como um dado, não como uma instrução. 1.7 O Simulador PEQui e o Kit Didático O simulador PEQui é um programa desenvolvido na EEEC que é utilizado para digitar, compilar e simular programas desenvolvidos em Assembly do O programa digitado é gravado automaticamente com extensão.asm. A compilação do programa gera um arquivo com extensão.hex e outro com extensão.lst. O programa.lst fornece a listagem do programa em assembly e o código hexadecimal equivalente, além de possíveis mensagens de erro. O kit didático é acompanhado de um programa que é usado para transferir o arquivo.hex para o kit. O programa transferido inicia automaticamente sua execução. As Fig. 1.6 a 1.10 são do simulador PEQui e do software de transferência do kit. No caderno de tarefas são utilizadas algumas atividades para ilustrar o uso do simulador e do kit didático. Fig. 1.6 Tela de edição e compilação de programas do simulador PEQui
14 Laboratório de Microprocessadores e Microcontroladores 14 Fig. 1.7 Tela onde são simulados dos programas no simulador PEQui Fig. 1.8 Tela onde são simulados dos programas no simulador PEQui
15 Laboratório de Microprocessadores e Microcontroladores 15 2 Atividade 2 Teclado, Rotação de LEDs e Motor de Passo 2.1 Introdução ao Teclado O teclado utilizado no kit possui uma estrutura geométrica de 4x4, porém eletricamente ele é ligado como 8x2, ou seja, 8 linhas e 2 colunas. Utilizando assim um decodificador equivalente. A Fig. 2.1 mostra a configuração de um dos kits utilizados em laboratório. Fig. 2.1 Teclado 4 x 4 e esquema de ligação no formato 8x2 A leitura da tecla digitada é feita através de um decodificador de teclado que gera um código de oito bits. A leitura é realizada por varredura. Para realizá-la envia-se um código de 8 bits equivalente a uma das duas colunas do teclado (códigos 80H e 40H, vistos na Fig. 2.1). Após a ativação da coluna verifica-se cada linha, para identificação do código entre parênteses mostrado na Fig. 2.1, até encontrar qual tecla foi pressionada. Por exemplo, se a coluna ativa é a primeira e o código lido for 10H, então a tecla pressionada foi 4. O kit didático utiliza o princípio do Mapeamento de Memória, o que significa que todos os componentes presentes: teclado, display LCD, display de 7-segmentos, motor de passo, conversor AD, conversor DA etc, são acessados através de um endereço predefinido, dentro da região de memória externa, ou seja, no intervalo de 0000H a FFFFH. O endereço do teclado do kit didático utilizado é FFE3H. Utilizando-se as instruções MOV DPTR,#0FFE3H seguida da instrução transfere-se o conteúdo do acumulador (A) para o teclado. Normalmente esse conteúdo é o código da coluna que se deseja ativar. Por outro lado, a instrução MOV DPTR,#0FFE3H seguida da instrução MOVX A,@DPTR é usada para transferir do teclado para o acumulador o código correspondente à tecla pressionada. 2.2 Introdução ao Motor de Passo O motor de passo consiste de um estator contendo bobinas que são acionadas usando corrente contínua e um rotor de ímã permanente, que gira a cada mudança das bobinas acionadas. Embora nas figuras a seguir as quatro bobinas sejam mostradas como únicas (concentradas), na prática elas são distribuídas ao longo do estator. Assim, pode-se obter um passo bem pequeno entre um pedaço de bobina e outro. O ângulo de passo típico do motor de passo utilizado aqui é 7,5. As figuras abaixo ilustram, de maneira simplificada, o funcionamento de um motor de passo. Observe que, na figura, uma volta completa do motor é alcançada após percorrer todas as bobinas uma vez. Na prática, uma volta
16 Laboratório de Microprocessadores e Microcontroladores 16 completa é conseguida após uma passagem por todas as partes de cada bobina. Se cada passo for de 7,5, uma volta completa é alcançada com 48 passos. Na Fig. 2.2 também são mostrados os transistores usados no acionamento e as bobinas concentradas. É mostrada também uma tabela com os comandos que devem ser enviados para a porta de saída (na verdade, dados enviados ao periférico motor de passo) de forma que o motor de passo gire de meio em meio passo e com passo completo. Passo T0 T1 T2 T3 HEX Fig. 2.2: Esquema que demonstra a ligação padrão de um motor de passo O circuito da Fig. 2.2 é o circuito típico utilizado no acionamento de motor de passo, entretanto, há pastilhas integradas que são também utilizadas para essa função. Um circuito integrado que pode ser usado para esse fim é o CI ULN2804A. A estrutura interna desse componente é mostrada na Fig Trata-se de um conjunto de transistores do tipo darlington, com capacidade de corrente de 500 ma. Cada uma das 4 bobinas do motor é ligada a uma das saída (OUT) e ao terminal comum (COM), que é conectado ao Vcc. Fig. 2.3: Driver para motor de passo - ULN2804A O endereço do Motor de Passo no kit didático utilizado é FFE6H.
17 Laboratório de Microprocessadores e Microcontroladores 17 3 Atividade 3 Interrupções Externas 3.1 Interrupções Interrupção é o processo pelo qual a execução de um programa é interrompida para a execução de um outro processamento que pode ser solicitado por uma das três fontes abaixo: Interrupção por software (instrução) Interrupção pedida por periférico externo Interrupção pedida por periférico interno (temporizador/contador, porta serial ) O microcontrolador 8051 pode ser interrompido de cinco maneiras diferentes: Pela interrupção externa INTO\ - pino 12 (P3.2) Pelo timer/counter (temporizador/contador) interno TIMER0 Pela interrupção externa INT1\ - pino 13 (P3.3) Pelo timer/counter (temporizador/contador) interno TIMER1 Pelo canal de comunicação serial (Pinos 10 e 11 = P3.0 e P3.1) O pedido de interrupção pode ou não ser atendido, de acordo com a condição de certos registradores. No 8051 os registradores que comandam a interrupção são Registrador de Habilitação: IE (Interrupt Enable) = Reg. A8h Registrador de Prioridades: IP (Interrupt Priority) = Reg. B8h Registrador de Controlador: TCON (Timer Control) = Reg. 88h Registrador IE: (Reg. A8h) EA (Enable All) Bit 7 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 EA x x ES ET1 EX1 ET0 EX0 - Quando está zerado (EA = 0), todos as interrupções estão desabilitadas (mascaradas), independentemente de seus bits individuais de controle. Quanto está setada (EA = 1), cada uma das interrupções pode ser habilitada ou desabilitada fazendo seus bits de controle 1 ou 0. EX0 (Enable External Interrupt 0) - Quando está zerado (EX0 = 0) a interrupção externa, cujo pedido vem através do pino INT0\ está desabilitada. Quando está setado (EX0 = 1), a interrupção INT0\ fica habilitada. ET0 (Enable Timer 0) - Quando ET0 = 0, a interrupção pedida pelo temporizador/contador 0 fica desabilitada. Quando ET0 = 1, a interrupção vinda do temporizador/contador 0 fica habilitada. EX1 (Enable External Interrupt 1) - Quando está zerado (EX1 = 0) a interrupção externa, cujo pedido vem através do pino INT1\ está desabilitada. Quando está setado (EX1 = 1), a interrupção INT1\ fica habilitada. ET1 (Enable Timer 1) - Quando ET1 = 0, a interrupção pedida pelo temporizador/contador 1 fica desabilitada. Quando ET1 = 1, a interrupção vinda do temporizador/contador 1 fica habilitada. ES (Enable Serial) - Quando ES = 0, a interrupção pedida pela porta serial fica dasabilitada. Quando ES = 1 essa interrupção fica habilitada. Registrador IP: (Reg. B8h) Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 x x x PS PT1 PX1 PT0 PX0
18 Laboratório de Microprocessadores e Microcontroladores 18 PX0 (Priority of External Interrupt 0) - Quando PX0 = 1 a interrupção externa INT0\ recebe prioridade alta. PT0 (Priority of Timer/Counter Interrupt 0) - Quando PT0 = 1 a interrupção pedida pelo temporizador/contador 0 recebe prioridade alta. PX1 (Priority of External Interrupt 1) - Quando PX1 = 1 a interrupção externa INT1\ recebe prioridade alta. PT1 (Priority of Timer/Counter Interrupt 1) - Quando PT1 = 1 a interrupção pedida pelo temporizador/contador 1 recebe prioridade alta. PS (Priority of Serial Port Interrupt) - Quando PS = 1 a interrupção pedida através da porta serial recebe prioridade alta. Quando PX0, PT0, PX1, PT1 e PS são zero, elas são de prioridade baixa. Caso uma interrupção de prioridade 1 seja solicitada durante a execução de uma de prioridade 0, o processamento é interrompido para o atendimento da interrupção de prioridade maior. No caso de todas as interrupções terem a mesma prioridade (0 ou 1), a ordem de atendimento das interrupções é: Interrupção externa 0 Temporizador/contador 0 Interrupção externa 1 Temporizador/contador 1 Canal serial Maior prioridade Menor prioridade As interrupções externas podem ser ajustadas para serem detectadas por nível 0 ou pela transição do nível 1 para o nível 0. O ajuste é feito através o registrador TCON, dado abaixo. Registrador TCON: (Reg. 88h) IT0 (Interrupt 0 Type) - Quando IT0 = 1 a interrupção externa 0 será reconhecida pela transição de 1 para 0 no pino INTO\. Quando IT0 = 0, a interrupção é reconhecida quando o sinal no pino INTO\ está em nível baixo (0). IE0 (Interrupt 0 Edge Flag) - É setado pelo hardware quando uma interrupção externa através de INT0\ é detectada. É zerada quando da execução da instrução RETI (retorno da subrotina de atendimento). IT1 (Interrupt 1 Type) - Quando IT1 = 1 a interrupção externa 1 será reconhecida pela transição de 1 para 0 no pino INT1\. Quando IT1 = 0, a interrupção é reconhecida quando o sinal no pino INT1\ está em nível baixo (0). IE1 (Interrupt 1 Edge Flag) - É setado pelo hardware quando uma interrupção externa através de INT1\ é detectada. É zerada quando da execução da instrução RETI (retorno da subrotina de atendimento). Endereços de desvio das interrupções Controle do Temporizador Bit 3 Bit 2 Bit 1 Bit 0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 Quando ocorre uma das cinco interrupções do 8051 o processamento é desviado para os endereços mostrados na tabela a seguir. Como há pouco espaço em bytes nesses endereços, deve-se usar uma instrução de desvio para outro endereço onde seja possível escrever toda a rotina de atendimento da interrupção. Interrupção Solicitada Reset INT0\ Timer/counter 0 INT1\ Timer/counter 1 Canal Serial Endereço de desvio 0000h 0003h 000Bh 0013h 001Bh 0023h
19 Laboratório de Microprocessadores e Microcontroladores 19 4 Atividade 4 Temporizadores e Motor de Corrente Contínua 4.1 Temporizadores O 8051 tem dois temporizadores/contadores de 16 bits que podem trabalhar em 4 modos distintos: Modo 0: Contador/Temporizador de 8 bits com divisor de freqüência de até 32 vezes (pode contar até 8192 = 32 x 255) Modo 1: Contador/Temporizador de 16 bits (pode contar até 65535) Modo 2: Modo 3: 2 contadores/temporizadores de 8 bits com recarga automática. 2 contadores/temporizadores independentes de 8 bits (Modo 3 não vale para Contador/Temporizador 1, que fica inativo) Figura 4.1: Diagrama de blocos simplificado do temporizador/contador 0 O diagrama da Fig. 4.1 auxilia na análise do funcionamento do temporizador/contador. O bit C/T\ do registrador TMOD, por exemplo, define se o funcionamento é como contador (C/T\ = 1), ou como temporizador (C/T\ = 0). Como temporizador, o clock é interno, vindo do oscilador. A freqüência é 1/12 da freqüência do cristal oscilador. Como contador, o clock é externo, vindo através de T0 (P3.4). O pino Gate\ define se o sinal de disparo do contador/temporizador vem através de software (bit TR0), ou de um sinal externo, através do pino INT0\ (P3.2). Se Gate\ = 0, o comando SETB TR0 dispara o contador/temporizador e CLR TR0 interrompe. 4.2 Motores de Corrente Contínua O motor de corrente contínua consiste de um enrolamento de campo estacionário e um enrolamento de armadura rotativo. O enrolamento de campo pode ser acionado por corrente contínua, ou ainda consistir de um estator de ímã permanente, não sendo necessário alimentação. A armadura é acionada com corrente contínua através de escovas e um anel comutador. A Fig. 4.2 mostra o circuito básico de um motor CC, onde os enrolamentos de campo e de armadura são alimentados de forma independente. As expressões básicas também são dadas. V a R a I a E I f R f Fig. 4.2: Motor de Corrente Contínua V f E k V R I a a a V a a a E RaI k a
20 Laboratório de Microprocessadores e Microcontroladores 20 Uma forma de variar a velocidade do motor CC é variando a tensão de armadura. Uma forma de variar a tensão de armadura é usar modulação PWM, que consiste na definição de um período de acionamento fixo e, dentro desse período, estabelecer um período ligado e outro desligado. A Fig. 4.3 ilustra esse processo. O motor usado é de 12 V e, portanto, a tensão de alimentação deve variar de zero a 12 V para obter-se variação de velocidade de zero até o valor máximo. Isso é feito chaveando-se um transistor a uma freqüência alta, por exemplo, 5 khz, que corresponde a um período de 0,2 ms ou 200 s. T V max V a T ON V max T V max V a Figura 4.3: Geração do sinal PWM para controle do motor de contrente contínua Pode-se preferir definir o período como 255 s, por exemplo, o que corresponde a uma freqüência de chaveamento de 3,92 khz. A variação de velocidade pode então ser obtida variando-se o período ligado (T ON ) de 0 a 255 s, ao mesmo tempo em que o período desligado (T OFF ) deve variar de 255 s a 0, para manter constante o período total (T). Essa contagem do período ligado e desligado pode ser feita através do temporizador do O microcontrolador 8051 possui dois temporizadores/contadores, que podem operar em 4 modos diferentes: modo de 13 bits (modo 0), modo de 16 bits (modo 1), modo de 8 bits com recarga automática (modo 2) e 2 modos independentes de 8 bits (modo 3). O modo de recarga automática (modo 2) pode ser usado para gerar o sinal PWM para o controle do motor CC. Nesse modo a contagem é feita através de TL (a primeira contagem começa no valor inicial de TL) e o valor de TH é usado para definir o início da próxima contagem. Se o temporizador começa sempre no valor dado em TL e vai até FFh (255), e sendo T ON = T T OFF, e sendo ainda escolhido T = 255, o procedimento usado no programa é: 1. Para o período ligado faz-se TL = T OFF ; dessa forma, o temporizador conta de T OFF até 255, o que corresponde ao período ligado; 2. Para o período desligado faz-se TL = T ON ; dessa forma, o temporizador conta de T ON até 255, o que corresponde ao período desligado. 3. No início do programa desliga-se o motor (CLR P2.0 e CLR P2.1) e faz-se TL = T ON = 09H, o que faz com que o temporizador, na primeira contagem já conte o período desligado, que começa em T ON e vai até Após fazer TL = T ON, encontra-se o complementar de T ON (CPL a), ou seja, T OFF, e carrega-se em TH. Dessa forma, a próxima contagem começará em T OFF, o que significa que o temporizador contará o período ligado. 5. Cada vez que a subrotina de controle é executada define-se o próximo valor de recarga, TH. 6. Para aumentar a velocidade aumenta-se o período ligado T ON. Para diminuir aumenta-se T OFF. TON TOFF 4.3 Driver para Acionamento do Motor de Corrente Contínua (Ponte H): A interface entre o microcontrolador e o motor de corrente contínua (driver) pode permitir o acionamento apenas em um sentido de rotação (Figura 4.3) ou em ambos os sentido (Figura 4.4). Na Figura 4.3 um pulso alto na base do transistor BC548 leva o transistor BD139 à saturação, o que aciona o motor. Um pulso baixo leva esse transistor ao corte, quando então a corrente do motor decresce circulando pelo diodo 1N4001.
21 Laboratório de Microprocessadores e Microcontroladores V 1N4001 P k BC548 BD139 Fig. 4.4: Driver para acionamento do motor CC num único sentido A C A C D B D B Fig.4.5: Driver para acionamento do motor CC em ambos os sentidos A Fig. 4.5 mostra uma configuração denominada de Ponte H, que permite o acionamento em ambos os sentidos. As chaves A, B, C e D são normalmente transistores do tipo MOSFET ou IGBT. Para o acionamento em um dos sentidos as chaves A e B são acionadas; para o acionamento no sentido contrário as chaves C e D são acionadas. A lógica de acionamento dessas chaves não deve permitir o acionamento simultâneo das chaves A e D e das chaves C e B, o que resultaria num curto-circuito da fonte de alimentação. O driver de acionamento em ponte H usado no laboratório (L298N Diagrama na Fig. 4.6) permite o acionamento de um motor com corrente de até 1,5 A através de dois pinos de comando e segue a seguinte lógica da tabela 4.1. Tabela 4.1: Pinos de controle da ponte H In 1 In 2 Efeito 0 0 Motor parado 0 1 Gira no sentido direto 1 0 Gira no sentido reverso 1 1 Motor parado Figura 4.6: Diagrama de blocos parcial do L298N
22 Laboratório de Microprocessadores e Microcontroladores 22 É importante observar que os diodos são fundamentais para o retorno da corrente, quando qualquer uma das chaves é desligada. No momento de desligamento das chaves, há energia armazenada nas indutâncias do motor; sem os diodos as chaves poderiam ser danificadas por sobretensão. 4.4 Sensores de Presença Estão disponíveis no laboratório dois tipos de fotosensores: um com nível lógico normalmente alto e outro com nível lógico normalmente baixo. Os dois modelos são mostrados na Fig O primeiro tipo foi montado com um circuito auxiliar modulador que diminui a influência da luz ambiente sobre o fotosensor. Esse circuito emite uma luz de cerca de 1 khz, que ao ser refletida satura o fototransistor. É utilizado o decodificador de freqüência NE567. O segundo modelo não usa circuito modulador. (a) Figura 4.7: Sensor de presença com circuito auxiliar modulador e sem circuito modulador (b) A diferença básica entre os sensores usados, além do circuito de modulação, está no encapsulamento. Em um deles (Fig. 4.7a) o encapsulamento faz com que o fototransistor fique normalmente cortado (sem presença de luz); ele entra em saturação quando a luz do LED é refletida em um obstáculo. Assim, o sinal de saída V o passa de nível lógico alto para baixo, na presença de um obstáculo. (a) (b) Figura 4.8: (a) fototransistor normalmente cortado e (b) fototransistor normalmente saturado No outro tipo de encapsulamento (Figura 4.7b) a luz do LED incide diretamente sobre o fototransistor, fazendo com que ele fique normalmente saturado, ou seja, o sinal de saída V o fica inicialmente em nível lógico baixo; na presença de um obstáculo entre os dois componentes o fototransistor é levado ao corte e o sinal de saída vai para o nível lógico alto. 4.5 Medição de Velocidade Pode-se fazer uso do fotosensor da Fig. 4.8(b) para medir a velocidade de um motor de forma digital, associando-se ao fotosensor uma roda com 60 furos (Fig. 4.9). O sinal resultante do fotosensor, com a rotação da roda de 60 furos, é uma onda quadrada (Fig. 4.10). Esse sinal pode ser conectado a um dos dois pinos de interrupção. A interrupção deve ser configurada para atuar por transição (na passagem
23 Laboratório de Microprocessadores e Microcontroladores 23 de nível lógico 1 para 0). A cada interrupção o registrador com o número atualizado de pulsos é incrementado em 1.. Figura 4.9: conjunto roda de 60 furos e fotosensor Figura 4.10: Sinal de saída do sensor de velocidade A medição de velocidade é feita estabelecendo-se um tempo de amostragem, ou seja, um tempo fixo em que o registro de pulsos é lido. Mostra-se a seguir que o fato de ter 60 furos na roda faz com que o número de pulsos registrados por segundo (frequência) seja correspondente à velocidade em rotações por minuto (rpm). 1 rotação/segundo 60 furos/segundo 1 rotação/segundo 60 rotações/minuto 60 rpm 60 furos/s X rpm X furos/s ω (rpm) f (Hz) Um tempo de amostragem menor que 1 segundo pode ser adotado, e é aconselhável em muitas aplicações. Sendo assim, deve-se fazer a devida transformação de número de furos lidos no tempo de amostragem para rotações por minuto.
24 Laboratório de Microprocessadores e Microcontroladores 24 5 Atividade 5 Comunicação Serial 5.1 Introdução à Comunicação Serial O canal serial do 8051 pode operar em 4 modos diferentes, definidos através do registrador especial SCON (mostrado na Tabela 1), cujos bits podem ser manipulados individualmente. O modo 0 é uma comunicação síncrona. Os demais modos são do tipo assíncrono. Tabela 1: Registrador de Controle da Comunicação Serial (SCON) = SM0 SM1 SM2 REN TB8 RB8 TI RI SM0 SM1 Modo Descrição Baud Rate Registrador de Deslocamento f osc./ UART de 8 bits variável UART de 9 bits f osc./64 ou f osc./ UART de 9 bits variável Símbolo Nome e Significado SM2 Habilita a característica de comunicação de multiprocessadores no modo 2 e 3. Nesses modos, se SM2=1, RI não será ativado se o nono bit de dado recebido for igual a 0. No modo 1, se SM2=1, RI não será ativado se um stop bit válido não for recebido. No modo 0, deverá ser 0. REN Bit habitador da recepção serial. Setado/limpado por software para habilitar ou desabilitar a recepção serial. TB8 É o nono bit de dado que será transmitido no modo 2 e 3. Setado ou limpado por software. RB8 No modo 2 e 3, é o nono bit de dado que foi recebido. No modo 1, se SM2=0, RB8 é o stop bit que foi recebido. No modo 0, RB8 não é usado. TI É o flag de interrupção de transmissão. Setado por hardware no final do tempo do 8 bit no modo 0 ou no início do stop bit em outros modos, em qualquer transmissão serial. Deverá ser limpado por software. RI É o flag de interrupção de recepção. Setado por hardware no final do tempo do 8 bit no modo 0 ou na metade do tempo do stop bit em outros modos, em qualquer recepção serial. Deverá ser limpado por software. Modo 0: Baud rate fixa e igual à freqüência de clock dividida por 12. A recepção tem início com REN = 1 e RI = 0. Ao final da recepção o bit RI é setado por hardware e o conteúdo recebido é transferido para um registrador denominado por SBUF. RI deve ser ressetado pelo usuário antes da próxima recepção. Baud Rate fosc 12 ( bits/ s) A transmissão é iniciada automaticamente quando o conteúdo do acumulador é transferido para o SBUF. Quanto ao registrador SBUF da transmissão, embora tenha o mesmo nome do registrador da recepção, trata-se de outro registrador, específico para a transmissão. Ao final da transmissão o bit TI é setado por hardware. TI deve ser ressetado pelo usuário antes da próxima transmissão. O pino TxD (pino P3.0) transporta o sinal de sincronismo, tanto na recepção quanto na transmissão. O pino RxD (pino P3.1) transporta os dados, tanto na transmissão quanto na recepção. Modo 1: Comunicação assíncrona com taxa de transmissão a ser definida pelo usuário. São transmitidos 8 bits de dados, além de um bit de início e um bit de fim. A recepção tem início quando há uma transição
25 Laboratório de Microprocessadores e Microcontroladores 25 do nível lógico 1 para 0 no pino RxD (pino P3.0) e o bit RI está zerado. Ao final da recepção o RI é setado por hardware. SMOD 2 f osc Baud Rate ( bits/ s) (256 TH1) A transmissão é iniciada quando há uma transferência de dados para SBUF. Ao final da transmissão o bit TI é setado. O Bit TI deve ser ressetado pelo usuário antes da próxima transmissão. O temporizador 1 deve ser configurado para operar no modo de recarga automática (modo 2). O valor da recarga (TH1), juntamente com o bit SMOD, é que define a frequência de comunicação (transmissão e recepção). A tabela a seguir fornece alguns dos valores mais comuns de taxa de transmissão. Tabela 2: Taxas de transmissão mais comuns Timer 1 Baud Rate (bits/seg) Freq. Osc. (MHz) SMOD C/Tbarra Modo Valor Recar. Modo 0 Máx: 1MHz 12 X X X X Modo 2 Máx: 375K 12 1 X X X Modo 1, 3: 62,5K FFh 19,2K 11, FDh 9,6K 11, FDh 4,8K 11, FAh 2,4K 11, F4h 1.2K 11, E8h 137,5 11, Dh h FEEBh Modo 2: Modo assíncrono onde 11 bits são transmitidos (bit de início + 9 bits de dados + bit de fim). A taxa de transmissão/recepção pode ser 1/32 ou 1/64 da freqüência de clock. A recepção tem início quando há uma transição do nível lógico 1 para 0 no pino RxD (pino P3.0) e o bit RI está zerado. Ao final da recepção o bit RI é setado por hardware. O nono bit de dados é guardado em RB8. Esse bit pode ser o bit de paridade. A transmissão é iniciada quando há uma transferência de dados para SBUF. Ao final da transmissão o bit TI é setado. O nono bit a ser transmitido é guardado em TB8. Esse bit pode ser o bit de paridade. Expressão que define a taxa de transmissão no modo 2. Baud f osc Rate 2 SMOD ( bits/ s) 64 Modo 3: Se o bit SMOD for zero, a taxa é 1/64, caso seja igual a 1, a taxa é 1/32. É semelhante ao modo 1. A diferença está no bit a mais de dados no modo 3. Tanto no modo 1 quanto no modo 3 a taxa de transmissão é definida pelo usuário, seguindo a equação a seguir: Baud 2 Rate 32 SMOD f osc ( bits/ s) 12 (256 TH1)
26 Laboratório de Microprocessadores e Microcontroladores 26 O bit menos significativo (LSB) é o primeiro bit a ser enviado, ou recebido em todos os modos da comunicação serial. A Fig. 5.1 representa a onda vista na tela de um osciloscópio digital e mostra um exemplo de sinal presente no pino TxD durante uma transmissão serial no modo 1, com baud rate de 9600 bps. Observa-se, além dos 8 bits de dados, um bit de start (nível lógico zero) e um bit de parada (nível lógico alto). Observa-se ainda que o intervalo de cada bit equivale aproximadamente a 104 μs. O tempo medido no osciloscópio para os 8 bits da transmissão foi de 830 μs. Fig. 5.1: Onda na tela de um osciloscópio digital para transmissão serial com baud rate de 9600 bps A conexão serial entre o microcontrolador 8051 e um computador exige um componente para adaptação dos níveis de tensão. Enquanto no microcontrolador tensão zero representa nível lógico 0 e tensão de 5 V representa o nível lógico 1, no computador o nível lógico 0 é representado por uma tensão de + 12 V e o nível lógico 1 é representado por uma tensão de 12 V. Essa adaptação entre os níveis de tensão é conseguida com o componente MAX232. A conexão pode ser feita usando um cabo invertido, como o mostrado na Fig. 8.2, ou através de um cabo direto. Fig. 5.2: Conexão entre um PC e um microcontrolador através de um cabo invertido e um driver RS232.
27 Laboratório de Microprocessadores e Microcontroladores 27 6 Atividade 6 Display LCD e Display de 7-Segmentos 6.1 Introdução ao display LCD Na explicação desta seção é usado um display LCD de 2 linhas x 16 colunas, cujo esquemático é mostrado na Fig Essa informação é enviada na forma de comando para o LCD, numa rotina de inicialização necessária a cada vez que o LCD vai ser usado. Outras informações necessárias são: se o cursor vai ficar piscando, se a mensagem vai rolar para a esquerda ou para a direita, ou não vai rolar, se serão usados 4 ou 8 bits para os dados etc. A Tabela 6.1 mostra os sinais de controle para escrita e leitura do LCD e os endereços correspondentes para o kit didático. A Tabela 6.2 mostra as instruções mais comuns utilizadas no uso do LCD. E RW RS Operação Fig. 6.1: Display LCD de 2 linhas por 16 colunas Tabela 6.1: Habilitação do display LCD Endereços no Kit XM851 Endereços no Kit XM852 0 Display desabilitado Escrita de Instrução no LCD FFE2H FFC2H Escrita de Dados no LCD FFEAH FFD2H Leitura de Instrução do LCD FFF2H FFE2H Leitura de Dados do LCD FFFAH FFF2H Tabela 6.2: instruções mais comuns utilizadas para o display LCD DESCRIÇÃO MODO RS R/W Código (Hexa) Display Liga (sem cursor) 0 0 0C Desliga 0 0 0A/08 Limpa Display com Home cursor Controle do Cursor Liga 0 0 0E Desliga 0 0 0C Desloca para Esquerda Desloca para Direita Cursor Home Cursor Piscante 0 0 0D Cursor com Alternância 0 0 0F Sentido de deslocamento do cursor ao Para a esquerda entrar com caractere Para a direita Deslocamento da mensagem ao entrar Para a esquerda com caractere Deslocamento da mensagem sem entrada de caractere Endereço da primeira posição Primeira linha Segunda linha 0 0 C0 Para a direita Para a esquerda Para a direita 0 0 1C A Tabela 6.3 mostra o endereço em decimal de cada posição do LCD de 16 colunas x 2 linhas. Tabela 6.3: Endereços em decimal do display LCD Colunas Linha Linha
28 Laboratório de Microprocessadores e Microcontroladores Introdução ao display de 7-segmentos O display de 7-segmentos apresentado nesta seção é do tipo catodo comum, cujos terminais são mostrados na Fig Fig. 6.2: Display de 7-segmentos do tipo catodo comum O display mostrado pode ser acionado diretamente pelo microcontrolador conectando os terminais a, b, c, d, e, f, g e DP a uma porta de saída ou através de um driver decodificador. Para o acionamento direto é necessário criar uma tabela de conversão que associe o número que se deseja com os trechos a serem ativados no display. A Tabela 6.4 mostra um exemplo de tabela que pode ser criada. Assim, desejando-se, por exemplo, mostrar o número 5 no display, o código 6DH deve ser enviado para a porta escolhida. Tabela 6.4: código hexadecimal para cada dígito a ser mostrado no display Número desejado no display Px.7 Px.6 Px.5 Px.4 Px.3 Px.2 Px.1 Px.0 Hexadecimal DP g f e d c b a resultante B F D D F F A outra opção de acionamento utiliza o driver decodificador CD4511, cuja entrada é BCD (4 bits) e cuja saída alimenta cada um dos terminais mostrados (a, b, c, d, e, f, g). Quando se deseja também mostrar o ponto decimal, um bit extra deve alimentar o terminal DP (ponto decimal). A Fig. 6.3 ilustra o uso de 4 displays, conectados à porta P1 e usando apenas um decodificador. A saída do decodificador alimenta simultaneamente os 4 displays, mas apenas um é selecionado de cada vez, com o uso de transistores conectados como mostrado na Fig Assim, além dos 4 bits de dados enviados para os displays, é necessário enviar mais 4 bits de comando para a seleção de cada display. A Fig. 6.3 mostra os pinos escolhidos para o envio de dados e de comando.
29 Laboratório de Microprocessadores e Microcontroladores 29 g comum f a b g comum f a b g comum f a b g comum f a b a a a a f g b f g b f g b f g b e c e c e c e c d DP d DP d DP d DP e d c DP comum e d c DP comum e d c DP comum e d c DP comum Comandos Dados Display 4 Display 3 Display 2 Display 1 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 Fig. 6.3: Conjunto de displays de 7-segmentos e suas conexões No kit didático é usado mapeamento de memória e não usa decodificador. Assim, é necessário identificar o endereço de acesso aos displays de 7-segmentos e usar a Tabela de decodificação 6.4.
30 Laboratório de Microprocessadores e Microcontroladores 30 7 Atividade 7 Conversores D/A e A/D Uma vez que os dados de um microprocessador estão na forma digital e os dados do mundo exterior estão na forma analógica (contínua), é necessário fazer a conversão entre esses dados. Assim, tem-se o Conversor Analógico-Digital (ADC), que faz a conversão de sinal analógico para sinal digital e o Conversor Digital-Analógico (DAC), que faz a conversão de sinal digital para sinal analógico. Fig. 7.1: Entrada e saída de dados analógicos do Microprocessador 7.1 Conversor Digital-Analógico Um circuito somador com Amplificador Operacional pode ser usado para construir um conversor digital-analógico, bastando para isso escolher valores ponderados dos resistores, como na Fig A figura mostra um conversor DA de 4 bits. Fig. 7.2: Circuito Básico de um Conversor Analógico-Digital As chaves da Fig. 7.2 podem ser substituídas por transistores que trabalharão na região de corte quando D = 0 ou na região de saturação quando D = 1. Correntes nas resistências quando as chaves D 3, D 2, D 1 e D 0 estão ligadas: I 3 V R REF I 2 V 2R REF I 1 V 4R REF I 0 V 8R REF A corrente total na resistência de saída R saída é I = I 3 + I 2 + I 1 + I 0, ou seja, VREF I ( 1* D3 0.5* D2 0.25* D * D0 ), R Os valores de D podem ser 0 para chave desligada e 1 para chave ligada. Assim, forma-se a tabela abaixo, supondo V REF /R = 1:
31 Laboratório de Microprocessadores e Microcontroladores 31 Tabela 7.1: Valores para o conversor de 4 bits D 3 D 2 D 1 D 0 Corrente de Fração do saída (ma) Máximo / / / / / / / / / / / / / / /15 Uma vez que o conversor tem apenas 4 bits, existem 16 (2 4 ) possíveis valores de saída, sendo 0 (zero) o menor valor e o valor máximo correspondente ao decimal 15, ou binário 1111 (hexadecimal F). A tensão de saída é dada por V saída = R saída *I. Os resistores ponderados são necessários para que a saída corresponda à fração indicada na última coluna da tabela. Fig. 7.3: Forma da corrente de saída para uma variação de corrente de 0 a 15 Características de um Conversor DA: (a) Cada degrau corresponde a 1 LSB (bit menos significativo) (b) Número de degraus de um conversor: 2 n -1, onde n é o número de bits. Para n = 4 15 degraus. 1. Resolução: É a relação entre o menor incremento possível, 1 LSB e a saída máxima. 1 1 Resolução =, n é número de bits. No caso de n = 4 Resolução = n Resolução Percentual = Resolução x 100% No caso de 4 bits Resolução Percentual = 6.67%
32 Laboratório de Microprocessadores e Microcontroladores 32 Tabela 7.2: Resolução do DA versus Número de bits Número de bits Resolução Resolução Percentual (%) 4 1/ / / / Precisão Absoluta: Refere-se a quão próxima cada corrente de saída está de seu valor ideal. A precisão depende da tolerância dos resistores, do descasamento dos transistores e da tensão de referência. 3. Precisão Relativa: Refere-se a quão próximo cada nível de saída está de sua fração ideal de saída total. A precisão relativa depende principalmente da tolerância dos resistores ponderados. Se eles forem exatamente iguais a R, 2R, 4R e 8R no caso do conversor de 4 bits, todos os degraus serão iguais a 1 incremento LSB. Se os resistores não estiverem corretos os degraus poderão ser maiores ou menores que 1 incremento LSB. 4. Monotonicidade: Um conversor DA monotônico é aquele que produz um aumento na corrente de saída para cada entrada digital sucessiva, ou seja, cada aumento no sinal de entrada produz um aumento no sinal de saída. Se os resistores ponderados não estiverem corretos, pode-se ter um conversor não monotônico. O erro máximo da saída do conversor deve ser de 1/2 LSB para garantir que o conversor seja monotônico. 5. Tempo de Resolução (ou de Posicionamento): Tempo que a saída do conversor lva para se estabilizar dentro de 1/2 LSB de seu valor final. Esse tempo depende, dentre outros fatores, das capacitâncias espúrias e do tempo de retardo de saturação dos transistores. Para que o conversor seja monotônico a tolerância dos resistores ponderados deve ser inferior à resolução percentual. Assim, a tolerância dos resistores deve ser no máximo de 6.67% para o conversor de 4 bits e de 0.4% para o conversor de 8 bits. Portanto, quanto maior o número de bits do conversor, maior a dificuldade de construção usando o modelo de resistores ponderados, além da dificuldade com os diferentes valores. A solução encontrada foi o modelo da Escada R-2R, mostrado na Fig Nesse circuito a corrente permanece constante em cada ramo. O que muda é a posição do ponto de terra, onde o terra da corrente de saída é um terra virtual do amplificador operacional. Dessa forma, a corrente de saída varia de acordo com o fechamento das chaves D. Fig. 7.4: Conversor Digital-Analógico em escada A Fig. 7.5 mostra a conexão de um conversor Digital-Analógico (DAC0808) com um sistema mínimo formado pelo microprocessador 8085, memória ROM 8355 e memória RAM 8156.
33 Laboratório de Microprocessadores e Microcontroladores 33 Fig. 7.5: Conexão do conversor DAC 0808 com um sistema mínimo 7.2 Conversor Analógico-Digital A Fig. 7.6 mostra um circuito que converte um sinal analógico em digital. O processo de conversão usa um conversor digital-analógico e um contador. No início da conversão um sinal de controle zera a saída do contador. Como o valor digital inicial é zero, a saída do conversor DA é também zero, o que resulta um sinal alto na saída do amplificador operacional que compara o sinal analógico de entrada V ent com o sinal analógico V saída de saída do conversor DA. Esse sinal alto dá início ao processo de conversão. Fig. 7.6: Circuito básico de um Conversor Analógico-Digital A conversão se encerra quando o sinal de saída do comparador estiver em nível baixo, ou seja, quando o sinal V saída for maior que o sinal que se deseja converter, V ent. O resultado da conversão é obtido nas linhas de transferência de dados do contador para o conversor DA. Observe que o sinal na saída do comparador pode ser usado para indicar o fim da conversão. Durante a conversão esse sinal permanece em nível alto. A desvantagem principal de um conversor do tipo mostrado na Fig. 7.6 é que o tempo de conversão pode durar até 255 períodos de clock para um conversor de 8 bits e até períodos de clock para um conversor de 16 bits. Uma solução para reduzir o tempo de conversão é o conversor mostrado na Fig. 7.7, do tipo aproximação sucessiva.
34 Laboratório de Microprocessadores e Microcontroladores 34 Fig. 7.7: Conversor AD por aproximação sucessiva O processo de conversão desse tipo de conversor é diferente do anterior. Nesse conversor o número máximo de períodos de clock utilizados na conversão corresponde ao número de bits do conversor, ou seja, o conversor de 8 bits leva até 8 ciclos de clock para completar uma conversão e o de 16 bits leva até 16 ciclos de clock. Um pulso alto de início de conversão enviado ao Registrador de Aproximação Sucessiva (RAS) dá início ao processo. O registrador RAS começa setando o bit mais significativo D 7 (MSB) que alimenta o conversor DA. Se a saída do DA for maior que o sinal a ser convertido V ent, o bit MSB é zerado. Caso o bit D 7 não resulte em saída analógica V saída maior que o sinal a ser convertido, o bit D 7 é mantido. A seguir o segundo bit mais significativo, D 6, e os demais bits restantes são testados seguindo o mesmo procedimento, até atingir o valor correto de conversão. Ao final da conversão, um sinal baixo é emitido para o Registrador Buffer, liberando a saída digital e, ao mesmo tempo, conservando esse valor durante a próxima conversão. O conversor analógico/digital ADC0804, mostrado na Fig. 7.8(a), é um conversor de 8 bits e com tempo de conversão de 100 μs. A tensão de entrada, a ser convertida para digital, pode variar de 0 a 5 V e o sinal de clock pode ser obtido usando um circuito RC, como mostrado na Fig. 7.8(b). Se a tensão de referência for 5 V, uma variação do sinal de entrada de 0 a 5V resulta numa saída de 00H a FFH. (a) (b) Fig. 7.8 Conversor AD 0804 e uma aplicação típica Os sinais principais do conversor são descritos na Tabela 7.3. O sinal INTR\ é o sinal de fim de conversão e pode ser usado para gerar uma interrupção no microcontrolador. Desejando-se um funcionamento contínuo do AD, o sinal INTR\ deve ser conectado ao WR\, enquanto o sinal CS\ é mantido baixo. Assim, ao final de cada processo o AD inicia uma nova conversão. A primeira conversão, no entanto, é iniciada através de uma transição de 0 para 1 do sinal WR\.
35 Laboratório de Microprocessadores e Microcontroladores 35 Sinal INTR\ CS\ e WR\ RD\ Tabela 7.3: Sinais de controle principais do conversor AD 0804 Descrição Sinal de fim de conversão. Passa de nível lógico alto para baixo. Pode ser usado pelo microcontrolador para solicitar interrupção para leitura do sinal convertido. Quando CS\ e WR\ são levados ao nível lógico baixo, o conversor AD é ressetado e permanece nesse estado enquanto esses sinais permanecerem em nível baixo. A passagem de 0 para 1 de WR\ faz o AD iniciar uma nova conversão. O sinal RD\ baixo habilita a saída do conversor AD. A saída do conversor pode ser mantida continuamente habilitada mantendo CS\ e RD\ em nível baixo. O conversor digital/analógico DAC0800, mostrado na Fig. 7.9, é um conversor de 8 bits com tempo de acomodação de 100 ns. Nesse circuito há uma variação de 20 V pico a pico. Várias configurações de saída são possíveis, tais como: 0 a +V 0, +V 0 a 0, - V 0 a 0, 0 a V 0 e -V 0 a +V 0. A Fig mostra uma configuração possível. A tabela da Fig mostra alguns valores de entrada com suas respectivas saídas analógicas, para os parâmetros da Fig Fig. 7.9: Conversor DA Fig. 7.10: Configuração adotada no presente experimento e saídas analógicas
36 Laboratório de Microprocessadores e Microcontroladores 36 8 Atividade 8 Montagem e Programação A Atividade 8 consiste de uma montagem em protoboard de um projeto com um microcontrolador da família 8051 e de programas a serem desenvolvidos para o projeto.
37 Laboratório de Microprocessadores e Microcontroladores 37 TAREFAS
38 Laboratório de Microprocessadores e Microcontroladores 38 9 Tarefas da Atividade 1 Aluno: Matrícula: Tarefa 1 Uso do Simulador PEQui Passo 1: Inicialize o simulador PEQui e digite o programa mostrado na área de texto. Pode ser com letras maiúsculas ou minúsculas. Não há necessidade de digitar os comentários após o sinal de ;. Passo 2: Pressione o botão de Salvar e escolha um nome para o programa (automaticamente o programa terá extensão.asm). Em seguida pressione o botão de Compilar. Surgirá a mensagem mostrada a seguir. Passo 3: Escolha Sim para simular o programa. Na tela de simulação, mostrada a seguir, escolha Executar o programa e observe o pino 0 da porta P1, em destaque. Ela estará mudando de 0 para 1 e 1 para 0 em uma frequência constante, que é definida pelo atraso de tempo correspondente a R0 = 50. O resultado é uma onda quadrada no pino P1.0.
39 Laboratório de Microprocessadores e Microcontroladores 39 Pino 0 da Porta P1 Passo 4: Complete a tabela a seguir para calcular o período e a frequência da onda quadrada resultante no pino P1.0, sabendo que a frequência do cristal oscilador é de 11,0592 MHz. R0 = 50. Instrução Tempo de cada Número de ciclos de Qtde de execuções por meio Tempo total ciclo de máquina máquina da instrução período da onda quadrada CPL P1.0 1,085 µs 1 1 1,085 µs MOV R0,#50 1,085 µs 1 DJNZ R0,$ 1,085 µs 2 SJMP INICIO 1,085 µs 2 Tempo que corresponde a meio período da onda quadrada Período da onda quadrada Frequência da onda quadrada Passo 5: Use o procedimento anterior para calcular o período e a frequência da onda quadrada para R0 = 100 e R0 = 200. Preencha a tabela com os valores encontrados para R0 = 50, 100 e 200. Valor de R0 (decimal) Período (µs) Frequência (khz) Tarefa 2 Uso do Simulador Proteus ou Equivalente Passo 1: Escolha Parar para encerrar a simulação no PEQui e Inicialize o programa Proteus. Esse programa deverá ser usado aqui para visualizar a onda quadrada gerada no pino P1.0. Assim, busque na biblioteca do Proteus um microcontrolador da família 8051, por exemplo, o 80C52 e o transfira para a área de trabalho. Acrescente à área de trabalho o osciloscópio digital e conecte o pino P1.0 do microcontrolador ao canal A do osciloscópio.
40 Laboratório de Microprocessadores e Microcontroladores 40 Ícone onde se localiza o osciloscópio Passo 2: Click duas vezes em cima do microcontrolador para abrir a janela que permitirá carregar o programa correspondente à onda quadrada. Defina a frequência de clock para MHz e carregue o programa, no formato.hex, através da janela Program File, em destaque na figura a seguir. Passo 3: Colocar o programa em funcionamento e observar a onda quadrada no osciloscópio. Meça o período da onda com o auxílio de cursores. Valor medido no Proteus Valor de R0 (decimal) Período medido (µs)
41 Laboratório de Microprocessadores e Microcontroladores 41 Tarefa 3 Uso do Kit Didático Passo 1: Inicialize o programa Gravador XM851, usado para transferência do programa para o kit didático. Através do Menu, abra o arquivo.hex compilado nos passos anteriores. Passo 2: Após ligar o kit didático, conecte-o ao computador através da opção Serial. Caso haja algum problema de conexão, verifique nas Configurações se a porta de comunicação serial está correta e a taxa de transferência (baud rate) é de 9600 bps.
42 Laboratório de Microprocessadores e Microcontroladores 42 Passo 3: Na parte direita inferior do aplicativo escolha a opção Gravar. Logo após a gravação o programa começa a ser executado no kit didático. Lembrete: O kit deve estar com o LED PROG aceso para ser possível a gravação. Se ele estiver desligado e o LED RUN ligado, segure o botão Reset até o microcontrolador voltar ao estado de programação. Passo 4: Utilize um osciloscópio digital para visualizar a onda quadrada no pino 0 da porta P1. Anote na tabela a seguir o período e a frequência da onda para R0 = 50 e compare com o valor calculado na seção anterior (erro percentual). Repita todo o procedimento para mais dois valores de R0 (mostrados na tabela). Obs.: A frequência do cristal oscilador do kit didático é de 11,0592 MHz. Valor de R0 (decimal) Frequência medida (khz) Período medido (µs) Período calculado (µs) Erro percentual para o período (Medido-Calculado)/Calculado (%) Passo 5: Repita todo o procedimento de geração da onda quadrada retirando duas linhas do programa: MOV R0,#50 e DJNZ R0,$. O resultado é uma onda quadrada com a maior frequência possível para o cristal utilizado. Anote o período e a frequência obtidos: Maior frequência possível (khz) Menor período possível (µs)
43 Laboratório de Microprocessadores e Microcontroladores 43 Passo 6: Refaça o programa utilizando uma subrotina de atraso de tempo, como mostrado a seguir. Os valores de R0, R1 e R2 é que definem o tempo de atraso. Eles estão no sistema decimal. SMOD51 ; Carrega biblioteca de Configurações do 8051 ORG 00H LJMP INICIO ; Diz ao compilador que a próxima instrução está no end. 00h ; Pula para o endereço 30H, início do programa ORG 30H ; Diz ao compilador que a próxima instrução está no endereço 30h INICIO: CPL P1.0 ; Complementa o pino 0 da porta P1 LCALL ATRASO ; Chama a subrotina ATRASO SJMP INICIO ; Volta para o início do programa ATRASO: MOV R0,#10 ; Carrega registrador R0 com valor 10 decimal V2: MOV R1,#100 ; Carrega registrador R1 com valor 100 decimal V1: MOV R2,#200 ; Carrega registrador R2 com valor 200 decimal DJNZ R2,$ ; Decrementa registrador R2 até R2 = 0 DJNZ R1,V1 ; Decrementa registrador R1. Enquanto R1 0, desvia para V1 DJNZ R0,V2 ; Decrementa registrador R0. Enquanto R0 0, desvia para V2 RET ; Retorna da subrotina ATRASO END ; Diretiva para encerramento do programa Registre na tabela a seguir o período da onda quadrada resultante do programa acima. Utilize ainda dois novos conjuntos de valores dos registradores e registre o período resultante. Os valores dos registradores estão no sistema de numeração decimal. R0 R1 R Período da onda quadrada (ms)
44 Laboratório de Microprocessadores e Microcontroladores Tarefas da Atividade 2 Aluno: Matrícula: Tarefa 1 Teclado 1 Use o PEQui para Editar e Compilar o programa mostrado na tabela a seguir. Transfira o arquivo.hex correspondente para o kit didático. Rótulo Instrução Comentários $MOD51 ; Carrega biblioteca de definições ORG 00H ; Diretiva de endereço da próxima instrução LJMP INICIO ; Desvia para o INICIO do programa ORG 30H ; Próxima instrução é no endereço 30H INICIO: MOV DPTR, #0FFE3H ; DPTR recebe o valor do endereço do teclado MOV A, #00H ; Acumulador recebe o valor 00H MOV P1, A ; Os LEDs da porta P1 são apagados TECLADO: MOV A, #80H ; Acumulador recebe valor 80H coluna 1 do teclado A ; A coluna 1 do teclado é ativada MOVX CJNE A, #00H, MOSTRA ; Recebe valor da coluna 1 do teclado ; Se o valor for diferente de zero, MOSTRA MOV A, #40H ; Se valor anterior for diferente de zero, ativa coluna 2 A ; Coluna 2 do teclado é ativada MOVX ; Recebe valor da coluna 2 do teclado CJNE A, #00H, MOSTRA ; Se valor for diferente de zero, MOSTRA LJMP TECLADO ; Se valor for igual a zero, volta para coluna 1 MOSTRA: MOV P1,A ; Mostra na porta P1 o código da tecla digitada LJMP TECLADO ; Volta para TECLADO depois de mostrar código END ; Fim do programa Preencha a tabela a seguir com o código hexadecimal resultante para cada tecla digitada. Obs.: O kit didático tem somente 4 LEDs na porta P1. Assim, para obter o código completo, o NIBBLE superior (P1.7, P1.6, P1.5 e P1.4) deve ser obtido através do osciloscópio ou através de LEDs adicionados ao circuito através de proto-board. Tecla Código Tecla Código Tecla Código Tecla Código A B C F 0 E D
45 Laboratório de Microprocessadores e Microcontroladores 45 Tarefa 2 Teclado 2 Use o PEQui para Editar e Compilar o programa mostrado na tabela a seguir. Transfira o arquivo.hex correspondente para o kit didático e observe o resultado nos LEDs conectados à porta P1. Rótulo Instrução Rótulo Instrução $MOD51 TCB: CJNE A, #02H, COLUNA2 ORG 00H MOV P1, #0BH LJMP INICIO LJMP TECLADO ORG 30H COLUNA2: MOV A, #40H INICIO: MOV DPTR, #0FFE3H A MOV A, #00H MOV P1, A TC7: MOVX CJNE A, #10H, TC8 TECLADO: MOV A, #80H MOV P1, #07H A LJMP TECLADO TC1: MOVX TC8: CJNE A, #01H, TC9 CJNE A, #40H, TC2 MOV P1, #08H MOV P1, #01H LJMP TECLADO LJMP TECLADO TC9: CJNE A, #08H, TCC TC2: CJNE A, #20H, TC3 MOV P1, #09H MOV P1, #02H LJMP TECLADO LJMP TECLADO TCC: CJNE A, #02H, TCF TC3: CJNE A, #80H, TCA MOV P1, #0CH MOV P1, #03H LJMP TECLADO LJMP TECLADO TCF: CJNE A, #80H, TC0 TCA: CJNE A, #04H, TC4 MOV P1, #0FH MOV P1, #0AH LJMP TECLADO LJMP TECLADO TC0: CJNE A, #20H, TCE TC4: CJNE A, #10H, TC5 MOV P1, #00H MOV P1, #04H LJMP TECLADO LJMP TECLADO TCE: CJNE A, #40H, TCD TC5: CJNE A, #01H, TC6 MOV P1, #0EH MOV P1, #05H LJMP TECLADO LJMP TECLADO TCD: CJNE A, #04H, FIM TC6: CJNE A, #08H, TCB MOV P1, #0DH MOV P1, #06H FIM: LJMP TECLADO LJMP FIM Se a configuração do teclado não corresponder àquela mostrada na Fig. 2.1, o resultado nos LEDs será diferente do previsto. Nesse caso, faça as correções necessárias para que o programa mostre nos LEDs o valor binário correspondente à tecla que foi digitada. Exemplo: Digitando-se 7, deve ser mostrado o código 0111 nos LEDs. Digitando-se 5, deve ser mostrado o código 0101 nos LEDs. Tarefa 3 Motor de Passo 1 O Programa mostrado na tabela a seguir é para acionamento de um motor de passo com passo completo. Edite, Compile e Simule esse programa usando o programa PEQui. Observe a mudança nos bits no nibble inferior da porta P1, onde o motor de passo está conectado.
46 Laboratório de Microprocessadores e Microcontroladores 46 Rótulo Instrução Rótulo Instrução $MOD51 LCALL ATRASO ORG 00H MOV P1, #08H LJMP INICIO LCALL ATRASO SJMP REPETE ORG 30H INICIO: MOV SP, #2FH ATRASO: MOV R0, #10 REPETE: MOV P1, #01H VOLTA MOV R1, #10 LCALL ATRASO DJNZ R1, $ MOV P1, #02H DJNZ R0, VOLTA LCALL ATRASO RET MOV P1, #04H END No programa anterior, mude os valores de R0 e R1 para 05. O que muda no funcionamento do programa? No programa anterior faça uma inversão na sequência dos números enviados para a porta P1 e observe o efeito. A sequência ( ) deve ser substituída pela sequência ( ). O que muda no funcionamento do programa? Tarefa 4 Motor de Passo 2 O Programa mostrado na tabela a seguir tem exatamente a mesma função do anterior. A diferença está no formato. Nesse novo programa uma tabela de valores é usada para o acionamento do motor de passo. Cada valor da tabela é lido e enviado para a porta P1. Edite, Compile e Simule esse programa usando o programa PEQui. Nesse programa o acumulador (A) tem um papel duplo: ele atua como contador (de 00 a 03H) para a leitura de cada valor da TABELA e também recebe o conteúdo da TABELA. Na instrução MOVC A,@A+DPTR, o primeiro A recebe o conteúdo da TABELA e o segundo A (do termo A+DPTR) é o contador que, adicionado ao DPTR, indica qual o endereço de leitura da TABELA. Rótulo Instrução Comentários $MOD51 ORG 00H LJMP INICIO ORG 30H INICIO: MOV SP, #2FH ; O endereço inicial da pilha é 2FH MOV DPTR,#TABELA ; DPTR recebe o endereço da TABELA de dados V1: MOV A, #00H ; O acumulador recebe o valor 00H (contador) V2: PUSH ACC ; O valor de A (contador) é guardado na pilha MOVC A,@A+DPTR ; A recebe o conteúdo da posição A+DPTR MOV P1,A ; P1 recebe o conteúdo de A (valor da tabela) LCALL ATRASO ; Chama subrotina de atraso de tempo POP ACC ; O valor de A (contador) é recuperado da pilha INC A ; Incrementa o valor de A (contador)
47 Laboratório de Microprocessadores e Microcontroladores 47 CJNE A,#04H,V2 SJMP V1 ; Se A 04, desvia para V2. Se A=04H, próxima linha ; Desvia para V1, para recomeçar do início da tabela ATRASO: MOV R0, #10 ; Subrotina de atraso de tempo V3: MOV R1, #10 DJNZ R1, $ DJNZ R0, V3 RET TABELA: DB 01H ; Valores usados para acionamento do motor de passo DB 02H ; A diretiva DB indica que o valor seguinte é um dado DB 04H ; (Data Byte) e não uma instrução. DB 08H END Tarefa 5 Motor de Passo 3 O programa da tabela a seguir é uma adaptação do programa do programa do item 2.5 para ser executado no kit didático. A mudança consiste em definir o registrador DPTR com o valor que corresponde ao endereço do motor de passo no kit (0FFE6h) e, ao invés de enviar os dados para a porta P1, eles são enviados para a posição de memória apontada pelo DPTR. Edite, compile e execute no kit didático o programa da tabela a seguir. Após a execução do programa, altere a sequência de valores de enviados para a porta P1 e, novamente, compile e execute o programa no kit didático. Rótulo Instrução Rótulo Instrução $MOD51 A ORG 00H LCALL ATRASO LJMP INICIO MOV A, #08H A ORG 30H LCALL ATRASO INICIO: MOV DPTR, #0FFE6H SJMP REPETE REPETE: MOV A, #01H A ATRASO: MOV R0, #0FFH LCALL ATRASO VOLTA: MOV R1, #0FFH MOV A, #02H DJNZ R1, $ A DJNZ R0, VOLTA LCALL ATRASO RET MOV A, #04H END Tarefa 6 Motor de Passo 4 Complete o programa da tabela a seguir (com as subrotinas de acionamento do motor de passo) de modo que a chave conectada ao pino 7 da porta P1 seja usada para definir o sentido de rotação. No nível lógico baixo gira no sentido denominado direto e no nível lógico alto gira no sentido reverso. Rótulo Instrução Rótulo Instrução $MOD51 REVERSO: ORG 00H LJMP INICIO INICIO: ESCOLHA: ORG 30H MOV DPTR, #0FFE6H JB P1.7,REVERSO
48 Laboratório de Microprocessadores e Microcontroladores 48 ATRASO: VOLTA: MOV R0, #0FFH MOV R1, #0FFH DJNZ R1, $ DJNZ R0, VOLTA RET END Tarefa 7 Motor de Passo 5 Faça um programa de acionamento do motor de passo do kit didático onde TECLA 1 é usada para fazer o motor girar no sentido direto e a TECLA 2 é usada para fazer o motor girar no sentido reverso. Rótulo Instrução Rótulo Instrução $MOD51 ORG 00H LJMP INICIO INICIO: ORG 30H MOV SP,#2FH
49 Laboratório de Microprocessadores e Microcontroladores Tarefas da Atividade 3 Aluno: Matrícula: Os programas das tarefas a seguir devem ser digitados e compilados no PEQui e executados no kit didático do microcontrolador Tarefa 1 Contagem crescente com interrupção Programa com interrupção externa 0. Quando a interrupção INT0 é solicitada através do pino P3.2 o processamento é desviado para a posição 03 h da memória ROM e, em seguida, é desviado para uma subrotina que manda uma contagem crescente para a porta P1. Rótulo Mnemônico Comentário sobre o Efeito da Operação $MOD51 ORG 00H LJMP INICIO ORG 03H LJMP ATENDE ; Endereço de desvio quando há um pedido da interrupção INT0 (pino P3.2). ; Qdo há um pedido de interrupção através do pino P3.2, desvia para ATENDE ORG 30H INICIO: MOV SP, #2FH ; Pilha com início em 2FH MOV IE, #81H ; Habilita a interrupção externa 0 (EA = 1 e EX0 = 1) MOV TCON, #01H ; INT0\ reconhecida pela transição de 1 para 0 (IT0 = 1). Poderia ser SETB IT0 MOV A, #00H ; Acumulador com valor inicial 0 SJMP $ ; Aguarda interrupção em um laço infinito ATENDE: MOV P1,A INC A LCALL ATRASO CJNE A,#00H,ATENDE RETI ; Subrotina da interrupção INT0. Transfere conteúdo de A para P1 ; Incrementa valor de A ; Chama subrotina de atraso ; Compara A com 00h. Se for diferente, volta para atende ; Quando A = 00h, na linha anterior, sai da subrotina de interrupção ATRASO: MOV R0,#100 V1: MOV R1,#250 DJNZ R1, $ DJNZ R0, V1 RET END ; Subrotina de atraso de tempo Obs.: O pedido de interrupção é atendido quando o pino P3.2 do microcontrolador passa (transição) do nível lógico alto (1) para o nível lógico baixo (0). Tarefa 2 Contagens crescente e decrescente com interrupção
50 Laboratório de Microprocessadores e Microcontroladores 50 Programa com as interrupções externas 0 e 1. Neste programa, quando a interrupção INT0 é acionada através do pino P3.2, o processamento é desviado para uma subrotina que faz uma contagem crescente na porta P1. Quando a interrupção INT1 é solicitada através do pino P3.3, uma contagem decrescente é enviada também para a porta P1. O acumulador é guardado na pilha em cada atendimento de subrotina porque ele é utilizado nas duas subrotinas e deseja-se manter o valor anterior. Rótulo Mnemônico Comentário sobre o Efeito da Operação $MOD51 ORG 00H LJMP INICIO ORG 03H LJMP ATENDE0 Desvia para a subrotina de atendimento da interrupção INT0 ORG 13H LJMP ATENDE1 Desvia para a subrotina de atendimento da interrupção INT1 ORG 30H INICIO: MOV SP, #2FH MOV IE, #85H Habilita interrupções externas 0 e 1 (EA = 1, EX0 = 1 e EX1 = 1) MOV TCON, #05H INT0 e INT1 por transição de 1 para 0 (IT0 = 1 e IT1 = 1). MOV A, #00H SJMP $ Aguarda interrupção em um laço infinito ATENDE0: PUSH ACC Início da subrotina de atendimento da interrupção 0. MOV A,#00H Carrega acumulador com valor 00H V1: MOV P1,A Transfere o conteúdo do acumulador para a porta de saída P1 INC A Incrementa valor do acumulador LCALL ATRASO Chama subrotina de atraso de tempo CJNE A,#00H,V1 Compara A com 00h. Se for diferente desvia para V1 POP ACC Recupera da pilha o conteúdo do acumulador RETI retorna de subrotina de interrupção ATENDE1: PUSH ACC Início da subrotina de atendimento da interrupção 1. MOV A,#0FFH Carrega acumulador com valor hexadecimal FFh V2: MOV P1,A Transfere o conteúdo do acumulador para a porta P1 LCALL ATRASO Chama subrotina de atraso de tempo DEC A Decrementa conteúdo do acumulador CJNE A,#0FFH,V2 Compara A com FFh. Se for diferente desvia para V2 POP ACC Recupera conteúdo do acumulador que foi guardado na pilha RETI Retorna de subrotina de interrupção ATRASO: MOV R0,#100 REPETE: MOV R1,#250 DJNZ R1, $ DJNZ R0, REPETE RET END
51 Laboratório de Microprocessadores e Microcontroladores 51 Tarefa 3 Rotação de LEDs com interrupção Adapte o programa anterior de modo que a interrupção INT0 resulte na rotação para a esquerda dos LEDs da porta P1 (do bit 0 até o bit 7) e a interrupção INT1 resulte na rotação à direita (do bit 7 até o bit 0). Após cada rotação completa o processamento volta para um laço infinito. Ambas as interrupções são por transição. A primeira parte do programa já foi feita. Faça as subrotinas das interrupções. Rótulo Mnemônico Comentário sobre o Efeito da Operação $MOD51 ORG 00H LJMP INICIO DESVIA PARA O INICIO DO PROGRAMA ORG 03H LJMP ATENDE0 DESVIA PARA A SUBROTINA DE ATENDIMENTO DA INT0 ORG 13H LJMP ATENDE1 DESVIA PARA A SUBROTINA DE ATENDIMENTO DA INT1 ORG 30H INICIO: MOV SP, #2FH A POSIÇÃO INICIAL DA PILHA É 2FH MOV IE, #85H HABILITA AS INTERRUPÇÕES EXTERNAS (EA = 1, EX0 = 1 e EX1 = 1) MOV TCON, #05H INT0 e INT1 SÃO POR TRANSIÇÃO (IT0 = 1 e IT1 = 1). MOV A, #00H ACUMULADOR RECEBE VALOR 00H SJMP $ AGUARDA INTERRUPÇÃO EM UM LAÇO INFINITO ATENDE0: ATENDE1: ATRASO: MOV R0,#100 REPETE: MOV R1,#250 DJNZ R1, $ DJNZ R0, REPETE RET END
52 Laboratório de Microprocessadores e Microcontroladores 52 Tarefa 4 LEDs piscando com interrupção Adapte o programa anterior de modo que a interrupção INT0 faça piscar os LEDs 10 vezes (00H FFH) e a interrupção INT1 resulte na alternância dos LEDs 10 vezes (55H AAH). Ambas as interrupções são por transição. O programa deve ficar em um laço infinito até o pedido de interrupção. Rótulo Mnemônico Rótulo Mnemônico $MOD51 ATENDE1: ORG 00H LJMP INICIO ORG 03H LJMP ATENDE0 ORG 13H LJMP ATENDE1 ORG 30H INICIO: MOV SP, #2FH MOV IE, #85H MOV TCON, #05H MOV A, #00H SJMP $ ATENDE0: ATRASO: MOV R0,#100 REPETE: MOV R1,#250 DJNZ R1, $ DJNZ R0, REPETE RET END
53 Laboratório de Microprocessadores e Microcontroladores Tarefas da Atividade 4 Aluno: Matrícula: Os programas das tarefas a seguir devem ser digitados e compilados no simulador PEQui e executados no kit didático do microcontrolador Tarefa 1 Temporizador no Modo 1 (como subrotina de atraso de tempo) O programa da tabela a seguir gera uma onda quadrada no pino P1.0. A subrotina de atraso de tempo usa o temporizador 0 no modo 1. ; Onda quadrada no pino P1.0. Subrotina de atraso usa temporizador no modo 1 (16 bits) Rótulo Mnemônico Comentário sobre o Efeito da Operação $MOD51 ORG 00H LJMP INICIO ORG 30H INICIO: MOV SP, #2FH MOV TMOD,#01H Temporizador 0 no modo de 16 bits (modo 1) V1: CPL P1.0 LCALL ATRASO SJMP V1 Chama subrotina de atraso de tempo ATRASO: MOV R0,#20 Registrador R0 recebe valor 20 decimal VOLTA: MOV TH0,#3CH TH0 recebe valor 3Ch MOV TL0,#0AFH TL0 recebe valor AFh. Contador conta de até = pulsos SETB TR0 TR0 = 1 dispara o temporizador 0 ESPERA: JNB TF0, ESPERA Espera a flag de fim de contagem ser setada Espera TF0 = 1. CLR TF0 Limpa flag que indica fim da contagem. DJNZ R0, VOLTA Decrementa R0 e volta se não for zero CLR TR0 Pára contador após o fim de 20 x contagens = pulsos. RET Retorna da subrotina. Se cada pulso corresponder a 1 s atraso 1 s FIM: NOP END Anote na tabela a seguir a medição de frequência e período da onda quadrada resultantes. Frequência da onda quadrada (khz) Período da onda quadrada (ms) Qual a finalidade do registrador R0 na subrotina de atraso? Tarefa 2 Temporizador no Modo 2 com interrupção
54 Laboratório de Microprocessadores e Microcontroladores 54 No programa a seguir, a cada vez que o temporizador 1 chega ao final da contagem (FFH) há um desvio para a subrotina ATENDE1, onde o pino 0 da porta P1 é complementado e o valor da recarga TH1 é incrementado em 1. Deve-se observar no laboratório que o efeito de incrementar TH1 e complementar P1.0 é uma onda quadrada com período ligado e desligado variável. ; Onda quadrada com período variável. Uso do temporizador no modo 2, com interrupção Rótulo Mnemônico Comentário sobre o Efeito da Operação $MOD51 ORG 00H LJMP INICIO ORG 1BH Endereço de desvio para a interrupção do temporizador 1. LJMP ATENDE1 Desvia para a subrotina que atende o temporizador 1. ORG 30H INICIO: MOV SP, #2FH MOV IE,#88H Habilita interrupção do temporizador 1 MOV TMOD,#20H Temporizador 1 no modo de recarga automática (modo 2) MOV TH1,#00H Carrega registrador de recarga TH1 com valor 00h MOV TL1,TH1 Transfere para TL1 o conteúdo de TH1. TL1 é o contador no modo 2. SETB TR1 Dá início à contagem do temporizador 1 SJMP $ Fica num loop infinito, saindo a cada fim de contagem do temporizador 1 ATENDE1: CLR TF1 ; Limpa a flag de final de contagem CPL P1.0 ; Complementa o bit zero da porta P1 a cada fim de contagem do TEMP1 INC TH1 ; Incrementa TH1. Cada contagem começa 1 unidade acima da anterior RETI ; Retorna da subrotina que atende a interrupção do temporizador 1. END Substitua a subrotina ATENDE1, de atendimento da interrupção do temporizador pela subrotina a seguir: ATENDE1: CLR TF1 ; Limpa a flag de final de contagem CPL P1.0 ; Complementa o bit zero da porta P1 a cada fim de contagem do TEMP1 JB F0,DECREM ; Se F0 = 1, desvia para DECREM. Caso contrário, vai para próxima linha INC TH1 ; Incrementa TH1. Cada contagem começa 1 unidade acima da anterior MOV A,TH1 ; Transfere TH1 para acumulador para comparar com FAH CJNE A,#0FAH,SAI ; Enquanto TH1 for diferente de FAH, sai para continuar incrementando SETB F0 ; Quando TH1 = FAH, seta a flag F0, para decrementar da próxima vez RETI ; Retorna da subrotina de atendimento da interrupção DECREM: DEC TH1 ; Decrementa TH1 MOV A,TH1 ; Transfere TH1 para acumulador para comparar com 05H CJNE A,#05,SAI ; Enquanto TH1 for diferente de 05H, sai para continuar decrementando CLR F0 ; Quando TH1 = 05H, limpa a flag F0, para incrementar da próxima vez SAI: NOP RETI Qual a diferença de funcionamento entre os dois programas (com a primeira subrotina de atendimento da interrupção e com a segunda)? Tarefa 3 Temporizador nos Modos 0 e 1
55 Laboratório de Microprocessadores e Microcontroladores 55 No programa a seguir o TEMPORIZADOR 0 é configurado para operar nos MODOS 0 e 1, respectivamente 13 e 16 bits. Ele é usado com a interrupção habilitada, que é usada para complementar o pino P1.0, de forma a gerar uma onda quadrada com meio período correspondente ao tempo de cada contagem completa do temporizador. A interrupção externa 1 é usada (com disparo por transição) para alternar entre os modos 0 e 1. Rótulo Instrução Rótulo Instrução $MOD51 ORG 30H INICIO: MOV SP,#2FH MODO BIT 00H MOV TMOD,#00H MOV IE,#86H ORG 00H MOV TCON,#04H LJMP INICIO SETB TR0 SJMP $ ORG 0BH CPL P1.0 MUDA: CPL MODO RETI JB MODO, MODO_UM MODO_ZERO: MOV TMOD,#00H ORG 13H RETI LJMP MUDA MODO_UM: MOV TMOD,#01H RETI END Visualize a onda quadrada no Pino P1.0 usando um osciloscópio digital e meça os períodos das ondas para os modos 0 e 1 do temporizador. Anote na tabela a seguir o período da onda quadrada e o tempo correspondente à contagem em cada modo (tempo de meio período da onda). Grandeza Modo 0 Modo 1 Período da onda quadrada (ms) Tempo de atraso (1/2 período) (ms) Explique o funcionamento da subrotina MUDA : Tarefa 4 Temporizador nos Modos 0 e 1 No programa a seguir o Temporizador/Contador 1 é configurado para operar como Temporizador no Modo 2 (Recarga Automática).
56 Laboratório de Microprocessadores e Microcontroladores 56 Rótulo Instrução Rótulo Instrução $MOD51 CPL A MOV TH1,A ORG 00H MOV IE,#88H LJMP INICIO SETB TR1 SJMP $ ORG 1BH LJMP PWM PWM: CPL P1.0 MOV A,TH1 ORG 30H CPL A INICIO: MOV SP,#2FH MOV TH1,A MOV TMOD,#20H RETI MOV TL1,#3FH MOV A,TL1 END Congele a imagem do osciloscópio em um instante qualquer e desenhe a forma de onda observada no pino P1.0. Anote o tempo correspondente ao nível lógico zero e ao nível lógico 1. Tempo correspondente ao nível lógico 0: Tempo correspondente ao nível lógico 1: Substitua o valor de TL1 pelo valor BFH. Desenhe a nova forma de onda no pino P1.0 e anote os tempos correspondentes. Tempo correspondente ao nível lógico 0 para TL1 = 0BFH (ms) Tempo correspondente ao nível lógico 1 para TL1 = 0BFH (ms) Tarefa 5 Controle de Velocidade de Motor CC O programa dado na tabela a seguir permite aumentar a velocidade através da interrupção zero e diminuir através da interrupção 1. O temporizador zero é usado no modo 2 (recarga automática) para gerar um sinal de período constante, mas cujo intervalo de tempo em nível alto e baixo é alterado pelas interrupções externas.
57 Laboratório de Microprocessadores e Microcontroladores 57 Rótulo Mnemônicos Comentários $MOD51 SAIDA0 EQU P1.0 ; Bit 0 de P1 Para acionar o motor SAIDA1 EQU P1.1 ; Bit 1 de P1 Para acionar o motor TON EQU 03H ; Armazena período ligado TOFF EQU 04H ; Armazena período desligado LIGADO BIT 00H ; Flag que indica mogor ligado/desligado ORG 00H LJMP INICIO ORG 03H LJMP AUM_VELOC ORG 0BH LJMP ATENDE_TEMP ORG 13H LJMP DIM_VELOC ; Interrupção INT0 Aumenta velocidade ; Interrupção TEMP0 Controla velocidade ; Interrupção INT1 Diminui velocidade INICIO: ORG 30H MOV SP,#2FH MOV IE,#87H ; Habilita interrupções INT0, INT1 e TEMP0 MOV TCON,#05H ; Int0 e int1 são por transição MOV IP,#02H ; Faz TEMP0 com prioridade 1 MOV TMOD,#02H ; TEMP0 no modo 2 com recarga MOV TON, #01H ; Periodo ligado TON = 01h CLR SAIDA0 ; Desliga motor CLR SAIDA1 ; Desliga motor CLR LIGADO ; Limpa flag que indica motor ligado/desligado MOV TL0,TON ; TL0 = periodo ligado MOV A,TON ; Faz A = periodo ligado CPL A ; Acha periodo desligado MOV TH0,A ; TH0 = periodo desligado SETB TR0 ; Inicia temporizador temp0 a partir de TON SJMP $ ; Laço de espera infinito. ATENDE_TEMP: JB LIGADO, DESLIGA ; Se motor está ligado desliga SETB SAIDA0 ; Liga motor, que estava desligado SETB LIGADO ; Seta flag que indica motor ligado MOV TH0,TON ; TH0 = periodo ligado. Valor de recarga RETI DESLIGA: CLR SAIDA0 ; Desliga motor CLR LIGADO ; Limpa flag que indica motor ligado MOV TH0, TOFF ; Faz A = periodo desligado RETI AUM_VELOC: CLR EX0 ; Desabilitar interrupção externa zero CLR CY ; Limpa flag de carry MOV A, TON ; Faz A = periodo ligado ADD A,#0AH ; Faz A = A + 10 JNC PULA ; Se CY = 0 desvia para pula MOV A,#0FEH ; Faz A = FEH, se CY = 1
58 Laboratório de Microprocessadores e Microcontroladores 58 Rótulo Mnemônicos Comentários PULA: MOV TON,A ; Faz periodo ligado = A CPL A ; Encontra periodo desligado MOV TOFF, A ; Define periodo desligado SETB EX0 ; Reabilita interrupção zero RETI DIM_VELOC: CLR EX1 ; Desabilitar interrupção externa 1 CLR CY ; Limpa flag de carry MOV A, TOFF ; Faz A = periodo desligado ADD A,#0AH ; Faz A = A + 10 JNC PULA2 ; Se CY = 0, desvia para pula2 MOV A,#0FEH ; Faz a = feh, se CY = 1 PULA2: MOV TOFF,A ; Faz periodo desligado = A CPL A ; Encontra periodo ligado MOV TON, A ; Define periodo ligado SETB EX1 ; Reabilita interrupção 1 RETI END Com auxílio do osciloscópio digital, meça a velocidade do motor em três diferentes instantes e anote na tabela a seguir. Velocidades Tensão no motor (V) Velocidade (rpm) Velocidade 1 Velocidade 2 Velocidade 3
59 Laboratório de Microprocessadores e Microcontroladores Tarefas da Atividade 5 Aluno: Matrícula: Tarefa 1 Transmissão serial síncrona No programa a seguir a porta serial é configurada no modo 0 e usada para transmitir uma contagem crescente. Usar o osciloscópio para observar e interpretar os sinais de saída nos pinos P3.0 (RxD) e P3.1 (TxD). Congele as ondas na tela do osciloscópio, num instante qualquer da contagem, e esboçe os sinais nos pinos TxD e RxD. Anote o tempo total correspondente aos 8 bits e a 1 bit e meça a taxa de transmissão. Rótulo Instrução Rótulo Instrução $MOD51 ATRASO: MOV R0,#100 V1: MOV R1,#250 ORG 00H DJNZ R1,$ LJMP INICIO DJNZ R0,V1 RET ORG 30H INICIO: MOV SP,#2FH END MOV A,#00H LOOP: MOV SBUF,A JNB TI,$ CLR TI INC A LCALL ATRASO SJMP LOOP A figura a seguir ilustra a forma de onda esperada para o programa de transmissão síncrona. O canal TxD transporta o sinal de sincronismo. O canal RxD transporta os dados transmitidos e recebidos. 1 µs f = 1 MHz Bit menos significativo Transmissão síncrona de uma contagem crescente
60 Laboratório de Microprocessadores e Microcontroladores 60 Formas de onda do canal serial síncrono Valores para a transmissão síncrona Grandeza Tempo total para os 8 bits de dados Tempo correspondente a 1 bit Taxa de Transmissão Valor Tarefa 2 Transmissão serial assíncrona O programa a seguir é equivalente ao anterior, mas utiliza o modo 1 da comunicação serial com baud rate de 9600 bps. Uma vez que o cristal oscilador é de 11,0592 MHz, da Tabela 2 tem-se um valor de recarga TH1 = FDH, para o temporizador 1 no modo 2 (recarga automática). Desenhe a forma de onda observada no osciloscópio para um valor qualquer da contagem. Anote o tempo total correspondente aos 8 bits de dados, o tempo de 1 bit e meça a taxa de transmissão. Rótulo Instrução Rótulo Instrução $MOD51 ORG 00H LJMP INICIO ORG 30H INICIO: MOV SP,#2FH MOV SCON,#40H MOV TMOD,#20H MOV TL1,#0FDH MOV TH1,#0FDH MOV A,#00H SETB TR1 LOOP: MOV SBUF,A JNB TI,$ CLR TI INC A LCALL ATRASO SJMP LOOP ATRASO: MOV R0,#100 V1: MOV R1,#250 DJNZ R1,$ DJNZ R0,V1 Use o HyperTerminal do microcomputador, configurado para a taxa de comunicação de 9600 bps, 8 bits de dados, para visualizar os caracteres recebidos do microcontrolador. RET END
61 Laboratório de Microprocessadores e Microcontroladores 61 A figura a seguir ilustra a forma de onda esperada para o programa de transmissão assíncrona. O canal TxD transporta o sinal transmitido. O canal RxD transporta o sinal recebido. 104 µs f = 9600 Hz Bit de start Bit de stop Fig. 5.5: Transmissão assíncrona de contagem crescente Formas de onda no pino TxD do canal serial assíncrono de 8 bits Valores para a transmissão assíncrona Grandeza Tempo total para os 8 bits de dados Tempo correspondente a 1 bit Taxa de Transmissão Valor Tarefa 3 Recepção serial assíncrona No programa a seguir o microcontrolador recebe dados via serial no modo 1, com taxa de recepção de 4800 bps, usando interrupção. O dado recebido é enviado para a porta P1. A frequência do cristal oscilador é de 11,0592 MHz. Assim, da Tabela 2, tem-se o valor de recarga TH1 = FAH, para o temporizador 1 no modo 2 (recarga automática). Use o HyperTerminal do microcomputador, configurado para 4800 bps e 8 bits de dados para transmitir os dados para o microcontrolador. Anote na tabela a seguir os dados medidos. Valores para a recepção assíncrona Grandeza Valor Tempo total medido para os 8 bits de dados Tempo medido correspondente a 1 bit Taxa de Transmissão Medida
62 Laboratório de Microprocessadores e Microcontroladores 62 Rótulo Mnemônico Comentário sobre o Efeito da Operação $MOD51 ORG 00H LJMP INICIO ORG 23H CLR RI MOV A,SBUF RETI ; Limpa flag de recepção ; Transfere para o acumulador conteúdo recebido via serial ; Retorna da subrotina de atendimento da serial ORG 30H INICIO: MOV SP,#2FH ; Apontador de pilha SP = 2FH MOV SCON,#40H ; Configura serial para modo 1 assíncrono MOV IE,#90H ; Habilita interrupção da serial. IE = b MOV TMOD,#20H ; Configura o temporizador 2 para operar no modo 2 MOV TL1,#0FAH ; Faz TL1 = FAH baud rate de 4800 bps para f = 11,0592 MHz MOV TH1,#0FAH ; Carrega TH1 com o valor de recarga automática MOV A,#00H ; Carrega acumulador com 0 SETB TR1 ; Dispara temporizador 1 SETB REN ; Habilita recepção serial V1: MOV P1,A ; Transfere para a porta P1 o conteúdo do acumulador SJMP V1 ; Loop mostrando o conteúdo de A. Esse valor muda a cada recepção END 208 µs f = 4800 Hz Bit de start Forma de onda para recepção assíncrona do número 5 (ASCII 35H) enviado pelo computador Valores para a recepção assíncrona com baud rate de 4800 bps Grandeza Valor Tempo total medido para os 8 bits de dados Tempo medido correspondente a 1 bit Taxa de Transmissão Medida Forma de onda no pino RxD do canal serial assíncrono de 8 bits
63 Laboratório de Microprocessadores e Microcontroladores 63 Mude os registradores TL1 e TH1 de modo a resultar em numa baud rate de 2400 bps. Faça a mesma mudança no HyperTerminal e registre os dados solicitados na tabela a seguir. Grandeza Valores para a recepção assíncrona com baud rate de 2400 bps Valor TH1 para baud rate de 2400 bps (cristal de 11,0592 MHz) Tempo total medido para os 8 bits de dados Tempo medido correspondente a 1 bit Taxa de Transmissão Medida Tarefa 4 Rotação de LEDs usando recepção assíncrona No programa a seguir o microcontrolador recebe dados via serial no modo 1, com taxa de recepção de 9600 bps, usando interrupção. O dado recebido é usado para definir a rotação de LEDs na porta P1. Se o dado recebido for a letra D os LEDs são rotacionados para a direita. A letra E rotaciona os LEDs para a esquerda. Qualquer outra letra ou número faz o programa aguardar. A frequência do cristal oscilador é de 11,0592 MHz. Assim, da Tabela 2, tem-se o valor de recarga TH1 = FDH, para o temporizador 1 no modo 2 (recarga automática). Rótulo Mnemônico Comentário sobre o Efeito da Operação $MOD51 ORG 00H LJMP INICIO ORG 23H CLR RI MOV R0,SBUF RETI ; Limpa flag de recepção ; Transfere para o registrador R0 conteúdo recebido via serial ; Retorna da subrotina de atendimento da serial ORG 30H INICIO: MOV SP,#2FH ; Apontador de pilha SP = 2FH MOV SCON,#40H ; Configura serial para modo 1 assíncrono MOV IE,#90H ; Habilita interrupção da serial. IE = b MOV TMOD,#20H ; Configura o temporizador 2 para operar no modo 2 MOV TL1,#0FDH ; Faz TL1 = FAH baud rate de 4800 bps para f = 11,0592 MHz MOV TH1,#0FDH ; Carrega TH1 com o valor de recarga automática MOV R0,#00H ; Carrega registrador R0 com valor 0 MOV A,#01H ; Carrega acumulador com valor 01H SETB TR1 ; Dispara temporizador 1 SETB REN ; Habilita recepção serial V2: CJNE R0,#44H,V1 ; Se A for diferente de 44H (letra D) verificar se é 45H LJMP DIREITA ; Se A = 44H (letra D), desvia para rotacionar LEDs para a direita V1: CJNE R0,#45H,V2 ; Se A for diferente de 45H (letra E) voltar para aguardar novo valor LJMP ESQUERDA ; Se A = 45H (letra E), desvia para rotacionar LEDs para a esquerda DIREITA: MOV P1,A RR A LCALL ATRASO SJMP V2 ; O conteúdo do acumulador é transferido para a porta P1 ; Rotaciona para a direita o conteúdo do acumulador ; Chama subrotina de atraso de tempo ; Volta para verificar novamente valor de R0 ESQUERDA: MOV P1,A RL A LCALL ATRASO SJMP V2 ; O conteúdo do acumulador é transferido para a porta P1 ; Rotaciona para a esquerda o conteúdo do acumulador ; Chama subrotina de atraso de tempo ; Volta para verificar novamente valor de R0
64 Laboratório de Microprocessadores e Microcontroladores 64 ATRASO: MOV R7,#100 V3: MOV R6,#250 DJNZ R6,$ DJNZ R7,V3 RET END Adapte o programa anterior para fazer uma contagem hexadecimal crescente na porta P1 quando for digitada a letra C e uma contagem hexadecimal decrescente na porta P1 quando for digitada a letra D. Anote a seguir as alterações necessárias. Rótulo Mnemônico Comentário sobre o Efeito da Operação
65 Laboratório de Microprocessadores e Microcontroladores Tarefas da Atividade 6 Aluno: Matrícula: Tarefa 1 LCD no Kit Didático O programa a seguir mostra no display LCD uma contagem decimal crescente de 0000 a O byte superior da contagem é guardado em R1 e o byte inferior em R0. Para definir os endereços de escrita e leitura de dados e comandos verificar a Tabela 6.1. Rótulo Mnemônico Comentário sobre o Efeito da Operação $MOD51 ESCREVE_INST EQU 0FFE2H; Endereço para escrever instrução: RW = 0; RS = 0 ESCREVE_DADO EQU 0FFEAH; Endereço para escrever dados: RW = 0; RS = 1 LE_INSTRUCAO EQU 0FFF2H; Endereço para leitura de instrução: RW = 1; RS = 0 LE_DADOS EQU 0FFFAH; Endereço para leitura de dados: RW = 1; RS = 1 ORG 00H LJMP INICIO ORG 30H INICIO: MOV SP,#2FH ; Apontador de pilha SP = 2FH MOV R0,#00 ; Byte inferior da contagem MOV R1,#00 ; Byte superior da contagem MOV R7,#0FFH ; Contador LCALL INICIA ; Chama subrotina de inicialização do LCD LCALL LIMPA ; Chama subrotina que limpa LCD LCALL LINHA1 ; Chama subrotina que mostra mensagem na linha 1 LCALL LINHA2 ; Chama subrotina que mostra mensagem na linha 2 REPETE: LCALL CONTAGEM ; Chama subrotina de contagem decimal contagem de 0000 a 9999 LCALL CONVERTE4 ; Converte Dígito 4 para ASCII LCALL MOSTRA4 ; Mostra Dígito 4 no display LCD LCALL CONVERTE3 ; Converte Dígito 3 para ASCII LCALL TEXTO_WR ; Mostra Dígito 3 no display LCD LCALL CONVERTE2 ; Converte Dígito 2 para ASCII LCALL TEXTO_WR ; Mostra Dígito 2 no display LCD LCALL CONVERTE1 ; Converte Dígito 1 para ASCII LCALL TEXTO_WR ; Mostra Dígito 1 no display LCD LCALL ATRASO LCALL ATRASO SJMP REPETE ; Volta para o início ; SUBROTINA DE INICIALIZAÇÃO DO DISPLAY LCD INICIA: MOV A,#38H ; Instrução que indica display de 16 colunas e 2 linhas LCALL INSTR_WR ; Chama subrotina para escrever instrução no LCD MOV A,#38H LCALL INSTR_WR MOV A,#0EH LCALL INSTR_WR MOV A,#06H LCALL INSTR_WR ; Instrução que indica display de 16 colunas e 2 linhas ; Chama subrotina para escrever instrução no LCD ; Instrução para ligar o cursor ; Chama subrotina para escrever instrução no LCD ; Instrução para deslocar cursor para a direita ; Chama subrotina para escrever instrução no LCD
66 Laboratório de Microprocessadores e Microcontroladores 66 RET ; Retorna da subrotina de inicialização do LCD ; SUBROTINA QUE LIMPA O DISPLAY LIMPA: MOV A,#01H ; Instrução para limpar LCD LCALL INSTR_WR ; Chama subrotina para escrever instrução no LCD RET LINHA1: INC R7 MOV A,R7 MOV DPTR,#MSG1 MOVC A,@A+DPTR CJNE A,#0FFH,V1 RET ; Incrementa contador ; Carrega acumulador com o conteúdo do contador ; DPTR recebe o endereço da mensagem MSG1 ; Acumulador recebe o código do caractere do endereço A+DPTR ; Se A = 0FFH fim da mensagem. Caso contrário, pula para V1 V1: LCALL TEXTO_WR LCALL ATRASO_LCD SJMP LINHA1 LINHA2: MOV A,#192 LCALL INSTR_WR MOV R7,#0FFH ; Instrução para definir endereço do LCD: 192 = C0H ; Chama subrotina para escrever instrução no LCD ; Contador recebe valor FFH V3: INC R7 ; Incrementa contador MOV A,R7 ; Carrega acumulador com o conteúdo do contador MOV DPTR,#MSG2 ; DPTR recebe o endereço da mensagem MSG2 MOVC A,@A+DPTR ; Acumulador recebe o código do caractere do endereço A+DPTR CJNE A,#0FFH,V2 ; Se A = 0FFH fim da mensagem. Caso contrário, pula para V2 RET V2: LCALL TEXTO_WR ; Chama subrotina para escrever dados no LCD SJMP V3 INSTR_WR: MOV DPTR,#ESCREVE_INST ; DPTR assume o endereço de escrita de instrução: 4000H ; Transfere a instrução para o LCD LCALL ATRASO_LCD ; Chama subrotina de atraso do LCD RET TEXTO_WR: MOV DPTR,#ESCREVE_DADO ; DPTR assume o endereço de escrita de dados: 4001H ; Transfere os dados para o LCD LCALL ATRASO_LCD ; Chama subrotina de atraso do LCD RET CONTAGEM: MOV A,R0 ; Carrega acumulador com valor atual do byte inferior ADD A,#01H ; Incrementa acumulador em uma unidade DA A ; Faz o ajuste decimal do byte inferior MOV R0,A ; Atualiza o valor de R0 JNC V4 ; Desvia para V2 se não houver Carry, ou seja, se R0 =< 99 MOV A,R1 ADD A,#01H DA A MOV R1,A V4: NOP RET ; Carrega acumulador com valor atual do byte superior ; Incrementa acumulador em uma unidade ; Faz o ajuste decimal do byte superior ; Atualiza o valor de R1 CONVERTE4: MOV A,#0F0H ANL A,R1 ; SUBROTINAS PARA CONVERTER VALORES EM ASCII ; Prepara a separação do nibble superior de R1 ; Separa nibble superior de R1
67 Laboratório de Microprocessadores e Microcontroladores 67 SWAP A ORL A,#30H RET CONVERTE3: MOV A,#0FH ANL A,R1 ORL A,#30H RET CONVERTE2: MOV A,#0F0H ANL A,R0 SWAP A ORL A,#30H RET CONVERTE1: MOV A,#0FH ANL A,R0 ORL A,#30H RET ; Inverte nibble superior com inferior ; Converte nibble superior de R1 em ASCII ; Prepara a separação do nibble inferior de R1 ; Separa nibble inferior de R1 ; Converte nibble inferior de R1 em ASCII ; Prepara a separação do nibble superior de R0 ; Separa nibble superior de R0 ; Inverte nibble superior com inferior ; Converte nibble superior de R1 em ASCII ; Prepara a separação do nibble inferior de R0 ; Separa nibble inferior de R0 ; Converte nibble inferior de R0 em ASCII ; SUBROTINA PARA MOSTRAR O CONTEÚDO DO ACUMULADOR NO LCD MOSTRA4: PUSH ACC ; Guarda dígito 4 na pilha, antes de definir endereço no LCD MOV A,#202 ; Endereço do dígito 4 LCALL INSTR_WR ; Chama subrotina para escrever instrução no LCD POP ACC ; Recupere dígito 4 da pilha LCALL TEXTO_WR ; Chama subrotina para escrever dados no LCD dígito 4 RET ATRASO_LCD: MOV R4,#10 ; Carrega registrador R4 com valor decimal 10 V6: MOV R5,#80 ; Carrega registrador R5 com valor decimal 80 DJNZ R5,$ ; Aguarda registrador R5 zerar DJNZ R4,V6 ; Decrementa R4. Enquanto não for zero, volta para recarregar R5 RET ; Retorna de subrotina de atraso de tempo ATRASO: MOV R4,#200 ; Carrega registrador R4 com valor decimal 200 V5: MOV R5,#250 ; Carrega registrador R5 com valor decimal 250 DJNZ R5,$ ; Aguarda registrador R5 zerar DJNZ R4,V5 ; Decrementa R4. Enquanto não for zero, volta para recarregar R5 RET ; Retorna de subrotina de atraso de tempo MSG1: DB MICROCONTROLADOR, 0FFH MSG2: DB CONTAGEM: FIM: NOP END,0FFH Explique o funcionamento das subrotinas CONTAGEM e CONVERTE1 no programa anterior.
68 Laboratório de Microprocessadores e Microcontroladores 68 Tarefa 2 Contagem decrescente no LCD No programa anterior adapte a subrotina CONTAGEM de modo que a contagem passe a ser decrescente (9999 até 0000). ; CONTAGEM DE 0000 A 9999 ; CONTAGEM DE 9999 A 0000 CONTAGEM: MOV A,R0 CONTAGEM: ADD A,#01H DA A MOV R0,A JNC PULA MOV A,R1 ADD A,#01H DA A MOV R1,A PULA: NOP RET Tarefa 3 Contagem no display de 7-segmentos O programa a seguir mostra nos displays de 7-segmentos uma contagem decimal crescente de 0000 a O byte superior da contagem é guardado em R1 e o byte inferior em R0. O kit didático não utiliza decodificador para os displays, ou seja, o acionamento é direto e usa a Tabela 6.4 para a conversão dos dígitos a serem mostrados. No mapeamento de memória do kit didático o endereço FFC1H é usado para definir qual dos quatro displays será acessado e o endereço FFC0H é usado para enviar o código do dígito a ser mostrado. Rótulo Mnemônico Comentário sobre o Efeito da Operação $MOD51 CONTADOR EQU 0AH; Contador para auxiliar na subrotina que mostra a contagem ORG 00H LJMP INICIO ORG 30H INICIO: MOV SP,#2FH ; Apontador de pilha SP = 2FH MOV CONTADOR,#10 ; Valor inicial do contador MOV R0,#00 ; Byte inferior da contagem MOV R1,#00 ; Byte superior da contagem V1: LCALL CONTAGEM ; Chama subrotina de Contagem LCALL MOSTRA ; Chama subrotina para mostrar a contagem LCALL ATRASO ; Chama subrotina de atraso de tempo LCALL ATRASO SJMP V1 CONTAGEM: MOV A,R0 ; Carrega acumulador com valor atual do byte inferior ADD A,#01H ; Incrementa acumulador em uma unidade DA A ; Faz o ajuste decimal do byte inferior MOV R0,A ; Atualiza o valor de R0 JNC V2 ; Desvia para V2 se não houver Carry, ou seja, se R0 =< 99 MOV A,R1 ; Carrega acumulador com valor atual do byte superior ADD A,#01H ; Incrementa acumulador em uma unidade
69 Laboratório de Microprocessadores e Microcontroladores 69 DA A MOV R1,A V2: NOP RET MOSTRA: MOV A,#0F0H ANL A,R1 SWAP A MOV R7,A MOV R2,#01H LCALL DISPLAY ; Faz o ajuste decimal do byte superior ; Atualiza o valor de R1 ; Isola o nibble SUPERIOR de R1, faz a inversão para que esse valor passe para o nibble inferior e, a seguir, guarda esse valor em R7, para leitura da tabela com o código do número a ser mostrado. ; Valor para seleção do display 4 (mais siginificativo) ; Chama subrotina para ler tabela e enviar para display escolhido MOV A,#0FH ANL A,R1 MOV R7,A ; Isola o nibble INFERIOR de R1 e, a seguir, guarda esse valor em R7, para leitura da tabela com o código do número a ser mostrado. MOV R2,#02H ; Valor para seleção do display 3 LCALL DISPLAY ; Chama subrotina para ler tabela e enviar para display escolhido MOV A,#0F0H ANL A,R0 SWAP A MOV R7,A ; Isola o nibble SUPERIOR de R0, faz a inversão para que esse valor passe para o nibble inferior e, a seguir, guarda esse valor em R7, para leitura da tabela com o código do número a ser mostrado. MOV R2,#04H ; Valor para seleção do display 2 LCALL DISPLAY ; Chama subrotina para ler tabela e enviar para display escolhido MOV A,#0FH ANL A,R0 MOV R7,A MOV R2,#08H LCALL DISPLAY ; Isola o nibble INFERIOR de R0 e, a seguir, guarda esse valor em R7, para leitura da tabela com o código do número a ser mostrado. ; Valor para seleção do display 1 (menos significativo) ; Chama subrotina para ler tabela e enviar para display escolhido DJNZ CONTADOR,MOSTRA; Mostra a contagem atual no display até zerar Contador MOV CONTADOR,#10 ; Recarrega o CONTADOR RET DISPLAY: MOV DPTR,#0FFC1H MOV A,R2 ; Carrega DPTR com endereço para selecionar o display ; Carrega acumulador com o identificador do display ; Envia seleção do display MOV DPTR,#DIGITO ; Carrega DPTR com endereço de início da tabela DIGITO MOV A,R7 ; Offset (na tabela) do dígito a ser mostrado MOVC A,@A+DPTR ; Carrega A com código que equivale ao número desejado MOV DPTR,#0FFC0H ; Carrega DPTR com o endereço usado para mostrar dado no display ; Transfere para o display o código de cada número (de 0 a 9) LCALL ATRASO ; Chama subrotina de atraso RET ATRASO: MOV R4,#10 ; Carrega registrador R4 com valor decimal 200 V5: MOV R5,#250 ; Carrega registrador R5 com valor decimal 250 DJNZ R5,$ ; Aguarda registrador R5 zerar DJNZ R4,V5 ; Decrementa R4. Enquanto não for zero, volta para recarregar R5 RET ; Retorna de subrotina de atraso de tempo DIGITO: DB 3FH DB 06H DB 5BH DB 4FH DB 66H DB 6DH ; Código para mostrar o número 0 no display ; Código para mostrar o número 1 no display ; Código para mostrar o número 2 no display ; Código para mostrar o número 3 no display ; Código para mostrar o número 4 no display ; Código para mostrar o número 5 no display
70 Laboratório de Microprocessadores e Microcontroladores 70 DB 7DH DB 07H DB 7FH DB 67H ; Código para mostrar o número 6 no display ; Código para mostrar o número 7 no display ; Código para mostrar o número 8 no display ; Código para mostrar o número 9 no display END Mude os parâmetros R4, R5 e CONTADOR do programa anterior de acordo com a tabela a seguir e verifique o efeito sobre a visualização da contagem nos 4 displays de 7-segmentos. R4 R5 CONTADOR Comentários sobre o efeito visual e a contagem Efeito visual de referência
71 Laboratório de Microprocessadores e Microcontroladores Tarefas da Atividade 7 Aluno: Matrícula: Tarefa 1 Conversor DA Onda dente de serra No mapeamento de memória do kit didático o Conversor Digital/Analógico é acessado através do endereço FFE4H. O programa a seguir gera uma onda dente de serra na saída do conversor DA. Rótulo Mnemônico Comentário sobre o Efeito da Operação $MOD51 ORG 00H LJMP INICIO ORG 30H INICIO: MOV SP,#2FH MOV DPTR,#0FFE4H MOV A,#00H ; Apontador de pilha SP = 2FH ; DPTR assume endereço do conversor DA ; Valor inicial do acumulador V1: ; Envia conteúdo do acumulador para o conversor DA LCALL ATRASO ; Chama subrotina de atraso de tempo INC A ; Incrementa A SJMP V1 ; Volta para repetir operação ATRASO: MOV R7,#10 V3: MOV R6,#25 DJNZ R6,$ DJNZ R7,V3 RET END Faça um esboço da onda observada no osciloscópio e anote o valor do período, frequência e valor pico a pico da onda. Período da onda dente de serra: Frequência da onda dente de serra: Amplitude da onda dente de serra: Onda dente de serra observada no osciloscópio Tarefa 2 Conversor DA Onda triangular
72 Laboratório de Microprocessadores e Microcontroladores 72 A partir do programa da onda dente de serra, faça um programa para gerar uma onda triangular como a mostrada na figura a seguir1. Anote na Tabela a seguir o valor pico a pico, o período e a frequência da onda triangular. Resultados do experimento do item 7.4: Período da onda triangular: Frequência da onda triangular: Amplitude da onda triangular: Onda triangular Rótulo Mnemônico Comentário sobre o Efeito da Operação $MOD51 ORG 00H LJMP INICIO ORG 30H INICIO: MOV SP,#2FH MOV DPTR,#0FFE4H MOV A,#00H ; Apontador de pilha SP = 2FH ; DPTR assume endereço do conversor DA ; Valor inicial do acumulador ATRASO: MOV R7,#10 V3: MOV R6,#25 DJNZ R6,$ DJNZ R7,V3 RET END
73 Laboratório de Microprocessadores e Microcontroladores 73 Tarefa 3 Conversor DA Onda senoidal O programa a seguir gera uma onda senoidal na saída do conversor DA. A tabela com os dados que geram a onda senoidal é composta por 256 valores, alocados da posição 00H da tabela até FFH. Rótulo Mnemônico Comentário sobre o Efeito da Operação $MOD51 ORG 00H LJMP INICIO ORG 30H INICIO: MOV SP,#2FH MOV DPTR,#0FFE4H MOV R0,#00H ; Apontador de pilha SP = 2FH ; DPTR assume endereço do conversor DA ; Valor inicial do contador V1: PUSH DPH ; Guarda na pilha o DPTR do Conversor DA PUSH DPL MOV DPTR,#SENO ; DPTR assume endereço da tabela SENO MOV A,R0 ; Acumulador recebe valor atualizado do contador MOVC A,@A+DPTR ; Acumulador recebe conteúdo da tabela SENO POP DPL ; Recupera DPTR do Conversor DA POP DPH ; Envia para o Conversor DA o valor lido da tabela SENO LCALL ATRASO ; Chama subrotina de atraso de tempo INC R0 ; Incrementa contador SJMP V1 ; Volta para ler próximo valor da tabela ATRASO: MOV R7,#100 DJNZ R7,$ RET SENO: Tabela com 256 valores mostrada logo a seguir END Parte 1 Parte 2 Parte 3 Parte 4 Parte 5 Parte 6 SENO: DB 127 DB 193 DB 239 DB 254 DB 232 DB 180 DB 130 DB 195 DB 241 DB 254 DB 230 DB 177 DB 133 DB 198 DB 242 DB 253 DB 228 DB 174 DB 136 DB 200 DB 243 DB 253 DB 226 DB 171 DB 139 DB 203 DB 245 DB 252 DB 224 DB 168 DB 143 DB 205 DB 246 DB 252 DB 222 DB 166 DB 146 DB 208 DB 247 DB 251 DB 220 DB 163 DB 149 DB 210 DB 248 DB 251 DB 218 DB 159 DB 152 DB 213 DB 249 DB 250 DB 216 DB 156 DB 155 DB 215 DB 250 DB 249 DB 214 DB 153 DB 158 DB 217 DB 250 DB 248 DB 211 DB 150 DB 161 DB 219 DB 251 DB 247 DB 209 DB 147 DB 164 DB 221 DB 252 DB 246 DB 207 DB 144 DB 167 DB 223 DB 252 DB 245 DB 204 DB 141 DB 170 DB 225 DB 253 DB 244 DB 202 DB 138 DB 173 DB 227 DB 253 DB 243 DB 199 DB 135 DB 176 DB 229 DB 253 DB 241 DB 196 DB 132 DB 179 DB 231 DB 254 DB 240 DB 194 DB 129 DB 181 DB 233 DB 254 DB 239 DB 191 DB 125 DB 184 DB 235 DB 254 DB 237 DB 188 DB 122 DB 187 DB 236 DB 254 DB 235 DB 186 DB 119 DB 190 DB 238 DB 254 DB 234 DB 183 DB 116
74 Laboratório de Microprocessadores e Microcontroladores 74 Parte 7 Parte 8 Parte 9 Parte 4 Parte 5 Parte 6 DB 113 DB 52 DB 11 DB 1 DB 23 DB 73 DB 110 DB 50 DB 10 DB 1 DB 25 DB 75 DB 107 DB 47 DB 9 DB 1 DB 27 DB 78 DB 104 DB 45 DB 8 DB 2 DB 29 DB 81 DB 101 DB 43 DB 7 DB 2 DB 31 DB 84 DB 98 DB 40 DB 6 DB 3 DB 33 DB 87 DB 95 DB 38 DB 5 DB 4 DB 35 DB 90 DB 91 DB 36 DB 4 DB 4 DB 37 DB 93 DB 88 DB 34 DB 3 DB 5 DB 39 DB 96 DB 86 DB 32 DB 3 DB 6 DB 41 DB 99 DB 83 DB 30 DB 2 DB 7 DB 44 DB 102 DB 80 DB 28 DB 2 DB 8 DB 46 DB 105 DB 77 DB 26 DB 1 DB 9 DB 49 DB 108 DB 74 DB 24 DB 1 DB 11 DB 51 DB 111 DB 71 DB 22 DB 0 DB 12 DB 54 DB 115 DB 68 DB 20 DB 0 DB 13 DB 56 DB 118 DB 66 DB 19 DB 0 DB 15 DB 59 DB 121 DB 63 DB 17 DB 0 DB 16 DB 61 DB 124 DB 60 DB 15 DB 0 DB 18 DB 64 DB 127 DB 58 DB 14 DB 0 DB 19 DB 67 DB 55 DB 13 DB 0 DB 21 DB 70 Resultados para a onda senoidal Valor pico a pico da onda senoidal Período e frequência da onda senoidal para R7 = 100 Período e frequência para R7 = 50 Frequência máxima possível No mapeamento de memória do kit didático o Conversor Analógico/Digital é acessado através do endereço FFE5H. Os programas das Tarefas 4 e 5 utilizam o conversor AD para ligar os LEDs conectados aos pinos P1.0, P1.1, P1.2 e P1.3. O canal de entrada do conversor AD deve ser o canal 0, ligado ao potenciômetro. Em cada programa o potenciômetro é usado para variar a tensão de entrada de 0 a 5 V. O resultado deve ser mostrado nos quatro LEDs conectados aos pinos. Tarefa 4 Conversor AD LEDs indicam faixa de entrada No programa a seguir os LEDs são ligados na sequência mostrada, de acordo com o valor lido através do conversor AD: Valor lido do conversor AD 00H a 3FH 40H a 7FH 80H a BFH C0H a FFH LED ligado LED0 (P1.0) LED1 (P1.1) LED2 (P1.2) LED3 (P1.3) Rótulo Mnemônico Comentário sobre o Efeito da Operação $MOD51 ORG 00H LJMP INICIO ORG 30H INICIO: MOV SP,#2FH MOV DPTR,#0FFE5H MOV P1,#00H ; Apontador de pilha SP = 2FH ; DPTR assume endereço do conversor AD
75 Laboratório de Microprocessadores e Microcontroladores 75 V1: MOV A,#00H ; Canal 0 de leitura do AD ; Envia o endereço do canal de leitura do AD LCALL ATRASO ; Chama subrotina de atraso MOVX A,@DPTR ; Carrega acumulador com o conteúdo do conversor AD MOV R0,A ; Transfere para R0 leitura do AD CLR CY SUBB A,#40H ; Verifica se valor de A é maior ou igual a 40H JNC FAIXA2 ; Se CY = 0, então A >= 40H FAIXA1: SETB P1.0 ; Liga o LED do pino P1.0 CLR P1.1 ; Apaga o LED do pino P1.1 CLR P1.2 ; Apaga o LED do pino P1.2 CLR P1.3 ; Apaga o LED do pino P1.3 SJMP V1 FAIXA2: CLR CY MOV A,R0 ; Atualiza A com valor do AD SUBB A,#80H ; Verifica se valor de A é maior ou igual a 80H JNC FAIXA3 ; Se CY = 0, então A >= 80H CLR P1.0 ; Apaga o LED do pino P1.0 SETB P1.1 ; Liga o LED do pino P1.1 CLR P1.2 ; Apaga o LED do pino P1.2 CLR P1.3 ; Apaga o LED do pino P1.3 SJMP V1 FAIXA3: CLR CY MOV A,R0 ; Atualiza A com valor do AD SUBB A,#0C0H ; Verifica se valor de A é maior ou igual a C0H JNC FAIXA4 ; Se CY = 0, então A >= C0H CLR P1.0 ; Apaga o LED do pino P1.0 CLR P1.1 ; Apaga o LED do pino P1.1 SETB P1.2 ; Liga o LED do pino P1.2 CLR P1.3 ; Apaga o LED do pino P1.3 SJMP V1 FAIXA4: CLR P1.0 ; Apaga o LED do pino P1.0 CLR P1.1 ; Apaga o LED do pino P1.1 CLR P1.2 ; Apaga o LED do pino P1.2 SETB P1.3 ; Liga o LED do pino P1.3 SJMP V1 ATRASO: MOV R7,#10 V3: MOV R6,#25 DJNZ R6,$ DJNZ R7,V3 RET END Tarefa 5 Conversor AD LEDs acendem gradativamentee Use o programa anterior como referência para fazer um programa para ligar os LEDs na sequência mostrada na Tabela a seguir, de acordo com o valor lido através do conversor AD: Valor lido do conversor AD LEDs ligados 00H a 3FH Somente LED0 40H a 7FH LED 0 e LED 1 80H a BFH LED 0, LED 1 e LED 2 C0H a FFH Todos os 4 LEDs
76 Laboratório de Microprocessadores e Microcontroladores 76 Rótulo Mnemônico Comentário sobre o Efeito da Operação $MOD51 ORG 00H LJMP INICIO ORG 30H INICIO: MOV SP,#2FH MOV DPTR,#0FFE5H MOV P1,#00H ; Apontador de pilha SP = 2FH ; DPTR assume endereço do conversor AD V1: MOV A,#00H ; Canal 0 de leitura do AD ; Envia o endereço do canal de leitura do AD LCALL ATRASO ; Chama subrotina de atraso MOVX A,@DPTR ; Carrega acumulador com o conteúdo do conversor AD MOV R0,A ; Transfere para R0 leitura do AD ATRASO: MOV R7,#10 V3: MOV R6,#25 DJNZ R6,$ DJNZ R7,V3 RET END
77 Laboratório de Microprocessadores e Microcontroladores Tarefas da Atividade 8 Aluno: Matrícula: Faça uma montagem onde um microcontrolador da família 8051, conectado a um microcomputador via porta serial, é usado para acionar 8 LEDs através da porta P2. Duas chaves tipo push-button são usadas para conectar as interrupções externas 0 e 1 ao terra. Tarefa 1 Faça um programa para rotacionar os LEDs para a direita e para a esquerda usando as interrupções 0 (esquerda) e 1 (direita), por transição. Tarefa 2 Faça um programa para rotacionar os LEDs para a direita e para a esquerda usando a comunicação serial assíncrona. A letra D é usada para rotacionar para a direita e a letra E, para a esquerda. Tarefa 3 Faça um programa para criar outros efeitos com os LEDs, usando as interrupções e/ou a comunicação serial.
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 4: Temporizadores e Motor de Passo Alunos: Matrícula:
Microprocessadores 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
Microprocessadores 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
PROJETOS COM MICROCONTROLADORES
Escola de Engenharia Elétrica e de Computação Universidade Federal de Goiás PROJETOS COM MICROCONTROLADORES Versão em Processo de Atualização Prof. Dr. José Wilson Lima Nerys Goiânia, 2009 Projetos com
Oprojeto 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 [email protected] Abstract No presente projeto uma sequência de Leds é criada pelo microcontrolador, e deve ser repetida
EXPERIÊ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
MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 UMA SOLUCAO POSSÍVEL
MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 UMA SOLUCAO POSSÍVEL Aluno: Matrícula: 1. Escreva as instruções necessárias para atender a cada uma das configurações solicitadas. Valor: 2,0 (a) Interrupção
Aplicaçõ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
MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 (Tema: Microcontrolador 8051) Resposta Esperada
MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 (Tema: Microcontrolador 8051) Resposta Esperada 1. Tema: programação geral do microcontrolador 8051. Valor: 2,5 A Tabela 1 mostra um programa, em linguagem
MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 Resposta Esperada
MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 Aluno: Matrícula: 1. Na figura a seguir 8 Leds são conectados à porta P1 e 8 à porta P2. Valor: 2,5 Faça um programa em assembly do 8051 em que as interrupções
Laboratório de Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 5: Comunicação Serial Alunos: Matrícula: Prof. Dr.
Laboratório de Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 2: Interrupções Externas e Relés Alunos: Matrícula:
Laboratório de Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 1 Introdução ao Microcontrolador 8051 Alunos: Matrícula:
Laboratório de Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 1 Introdução ao Microcontrolador 8051 Alunos: Matrícula:
Laboratório de Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 6: Comunicação Serial Alunos: Matrícula: Prof. Dr.
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:
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:
Laboratório de Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 2: Interrupções Externas e Relés Alunos: Matrícula:
ULA Sinais de Controle enviados pela UC
Solução - Exercícios Processadores 1- Qual as funções da Unidade Aritmética e Lógica (ULA)? A ULA é o dispositivo da CPU que executa operações tais como: Adição Subtração Multiplicação Divisão Incremento
www.vwsolucoes.com Copyright 2011 VW Soluções
1 Apresentação O adaptador ADP.v01 é utilizado para facilitar a instalação de display Lcd 16x2 ou display Lcd 20x4 nos CLP PIC28 ou CLP PIC40 através de um flat cable de 10vias de acordo com a necessidade
Arquitetura de Computadores. Tipos de Instruções
Arquitetura de Computadores Tipos de Instruções Tipos de instruções Instruções de movimento de dados Operações diádicas Operações monádicas Instruções de comparação e desvio condicional Instruções de chamada
MICROPROCESSADORES 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
MICROPROCESSADORES E MICROCONTROLADORES. Prova 1 Resposta Esperada
MICROPROCESSADORES E MICROCONTROLADORES Prova 1 Resposta Esperada 1. Tema: Conceitos Gerais Valor: 1,0 Os microcontroladores da família 8051 possuem arquitetura CISC, e os microcontroladores da família
Interrupções. As interrupções são casos especiais de chamadas de procedimentos.
Interrupções Uma interrupção é equivalente a uma chamada de procedimento. A chamada é equivalente a um CALL gerado pela execução de uma instrução. As interrupções são casos especiais de chamadas de procedimentos.
Aula 10 Microcontrolador Intel 8051 Parte 2
SEL 0415 Aula 10 Microcontrolador Intel 8051 Parte 2 SEL 0415 INTROD À ORGANIZAÇÃO DE COMPUTADORES Prof Dr Marcelo A C Vieira SEL 415 Mapeamento das memórias internas Memória de dados interna (RAM) n 8051
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 4: Motor de Passo e Display LCD Alunos: Matrícula:
Estrutura de um Computador
SEL-0415 Introdução à Organização de Computadores Estrutura de um Computador Aula 7 Prof. Dr. Marcelo Andrade da Costa Vieira MODELO DE VON NEUMANN PRINCÍPIOS A arquitetura de um computador consiste de
CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA
8 CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA A porta paralela, também conhecida por printer port ou Centronics e a porta serial (RS-232) são interfaces bastante comuns que, apesar de estarem praticamente
CAPÍTULO 5. INTERFACES PARA PERIFÉRICOS DE ARMAZENAMENTO INTERFACES DIVERSAS: FIREWIRE, SPI e I 2 C INTERFACES COM O MUNDO ANALÓGICO
28 CAPÍTULO 5 INTERFACES PARA PERIFÉRICOS DE ARMAZENAMENTO INTERFACES DIVERSAS: FIREWIRE, SPI e I 2 C INTERFACES COM O MUNDO ANALÓGICO Interfaces para periféricos de armazenamento: Periféricos de armazenamento,
5 Entrada e Saída de Dados:
5 Entrada e Saída de Dados: 5.1 - Arquitetura de Entrada e Saída: O sistema de entrada e saída de dados é o responsável pela ligação do sistema computacional com o mundo externo. Através de dispositivos
EEC2104 Microprocessadores
EEC2104 Microprocessadores Edição 2005/2006 Contadores / Temporizadores Contadores/temporizadores em geral... Hardware para contagem de impulsos Externos Internos (derivados do relógio interno) Contagem
MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 - RESPOSTA ESPERADA
MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 - RESPOSTA ESPERADA 1. Escreva as instruções para as configurações pedidas. Valor: 2,0 a) Habilita as interrupções externas zero e um e a interrupção do
Capítulo 2. Numéricos e Códigos. 2011 Pearson Prentice Hall. Todos os direitos reservados.
Capítulo 2 Sistemas Numéricos e Códigos slide 1 Os temas apresentados nesse capítulo são: Conversão entre sistemas numéricos. Decimal, binário, hexadecimal. Contagem hexadecimal. Representação de números
Capítulo 12. Projeto 5 Controle de Motores de Passo. 12.1 Circuito e Funcionamento
Capítulo 12 Projeto 5 Controle de Motores de Passo A crescente popularidade dos motores de passo deve-se a sua adaptação à lógica digital. Estes dispositivos são usados em inúmeras aplicações, tais como:
Tutorial de Eletrônica Aplicações com 555 v2010.05
Tutorial de Eletrônica Aplicações com 555 v2010.05 Linha de Equipamentos MEC Desenvolvidos por: Maxwell Bohr Instrumentação Eletrônica Ltda. Rua Porto Alegre, 212 Londrina PR Brasil http://www.maxwellbohr.com.br
Controladores Lógicos Programáveis CLP (parte-3)
Controladores Lógicos Programáveis CLP (parte-3) Mapeamento de memória Na CPU (Unidade Central de Processamento) de um CLP, todas a informações do processo são armazenadas na memória. Essas informações
EXERCÍ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
MICROPROCESSADORES 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
Microprocessadores. Organização de Memória
Microprocessadores Organização de Memória Prof. Clayrton Henrique rev. 01 fev. 2016 Roteiro Introdução; RAM Interna; Parte de Dados; Parte de SFR; Registradores; Assembly; Referências... 2 Introdução RAM
Ocircuito da Fig.1 é usado para o acionamento dos Leds do Cubo.
Cubo de Leds José Wilson Lima Nerys Universidade Federal de Goiás [email protected] Abstract Esse projeto é um bom exemplo de uso das instruções setb e clr do 8051. Elas são usadas para ativar e desativar
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 4: Motor de Passo e Motor de Corrente Contínua Alunos:
MICROCONTROLADOR 8051
MICROCONTROLADOR 8051 Notas de Aula (v.2014) Prof. André R. Hirakawa Prof. Paulo S. Cugnasca Prof. Carlos E. Cugnasca ARQUITETURA 8051 APLICAÇÕES MAIS FREQUENTES SISTEMAS COMPACTOS: MEMÓRIAS ROM / RAM
www.vwsolucoes.com Copyright 2013 VW Soluções
1 1. Especificação técnicas: Dimensões do módulo 4EA2SA v1.0: 100 mm x 56 mm Peso aproximado: xxx gramas (montada). Alimentação do circuito : 12 ou 24Vcc Tipo de comunicação: RS232 ou RS485 Tensão de referencia:
1. CAPÍTULO COMPUTADORES
1. CAPÍTULO COMPUTADORES 1.1. Computadores Denomina-se computador uma máquina capaz de executar variados tipos de tratamento automático de informações ou processamento de dados. Os primeiros eram capazes
LINEAR EQUIPAMENTOS RUA SÃO JORGE, 267/269 - TELEFONE: (11) 2823-8800 SÃO CAETANO DO SUL - SP - CEP: 09530-250
LINEAR EQUIPAMENTOS RUA SÃO JORGE, 267/269 - TELEFONE: (11) 2823-8800 SÃO CAETANO DO SUL - SP - CEP: 09530-250 1 SISTEMA HCS 2005 PROTOCOLO DE COMUNICAÇÃO (Baseado no Guarita Vr5.0x Última modificação:
Quadro de consulta (solicitação do mestre)
Introdução ao protocolo MODBUS padrão RTU O Protocolo MODBUS foi criado no final dos anos 70 para comunicação entre controladores da MODICON. Por ser um dos primeiros protocolos com especificação aberta
UTFPR Departamento Acadêmico de Eletrônica Curso Técnico em Eletrônica Microcontroladores 1 - Prof. Cion nov/2010 (atualizado em jul 2015)
UTFPR Departamento Acadêmico de Eletrônica Curso Técnico em Eletrônica Microcontroladores 1 - Prof. Cion nov/2010 (atualizado em jul 2015) Interrupção e Contadores/Temporizadores Este texto apresenta uma
Boletim Técnico R&D 03/08 CARACTERÍSTICAS DO DRIVER MPC6006L 14 de março de 2008
Boletim Técnico R&D 03/08 CARACTERÍSTICAS DO DRIVER MPC6006L 14 de março de 2008 O objetivo deste boletim é mostrar as características do driver MPC6006L. Tópicos abordados neste boletim: APRESENTAÇÃO
ENTRADA E SAÍDA DE DADOS
ENTRADA E SAÍDA DE DADOS Os dispositivos de um computador compartilham uma única via de comunicação BARRAMENTO. BARRAMENTO Elétrica/Mecânica + Protocolo. GERENCIAMENTO DE E/S O controle da troca de dados
O cursor se torna vermelho e uma Paleta de Edição contendo as instruções mais utilizadas é apresentada.
Editor de Ladder para VS7 Versão Teste O editor de ladder é um software de programação que permite que o VS7 e o µsmart sejam programados em linguagem de contatos. Esse editor está contido na pasta Público
PROJETO DE REDES www.projetoderedes.com.br
PROJETO DE REDES www.projetoderedes.com.br Curso de Tecnologia em Redes de Computadores Disciplina: Redes I Fundamentos - 1º Período Professor: José Maurício S. Pinheiro AULA 2: Transmissão de Dados 1.
MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 - Uma Solução Possível
Parte 3 Parte 1 Parte 2 Goiânia, 5 de junho de 2014. MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 - Uma Solução Possível 1. Suponha um sistema com um conjunto de 8 LEDs conectados à porta P1 e duas
PAINEL DE SENHAS RBSG4JE. Imagem ilustrativa do painel. Operação/Configuração Painel Eletrônico de Senhas / Guichê com jornal de mensagens.
PAINEL DE SENHAS RBSG4JE Imagem ilustrativa do painel Operação/Configuração Painel Eletrônico de Senhas / Guichê com jornal de mensagens. Há basicamente dois modos de operação no Painel de Senhas: - Operação
MICROCONTROLADORES FAMÍLIA 8031/8051
MANUAL MICROCONTROLADORES FAMÍLIA 8031/8051 PROF. EDSON PEDRO FERLIN CURITIBA, PR ABRIL 2004 Sumário CAPÍTULO 1 INTRODUÇÃO... 3 CAPÍTULO 2 VISÃO GERAL... 4 1.1) Características de Hardware... 6 1.1) Pinagem
Comunicação Serial com o AVR ATMEGA8
Comunicação Serial com o AVR ATMEGA8 Vitor Amadeu Souza [email protected] Introdução Os microcontroladores AVR vem a cada dia tomando cada vez mais espaço nos novos projetos eletrônicos microcontrolados.
AD / DA. EXPERIMENTS MANUAL Manual de Experimentos Manual de Experimentos 1 M-1116A
AD / DA M-1116A *Only illustrative image./imagen meramente ilustrativa./imagem meramente ilustrativa. EXPERIMENTS MANUAL Manual de Experimentos Manual de Experimentos 1 Conteúdo 1. Objetivos 3 2. Experiência
Circuitos Digitais. Conteúdo. Sistema de Numeração e Códigos :: Conversões de Binário para Decimal SISTEMA DE NUMERAÇÃO E CÓDIGOS
Ciência da Computação Sistemas de Numeração e Conversões Prof. Sergio Ribeiro Material adaptado das aulas do Prof. José Maria da UFPI Conteúdo Conversões de binário para decimal. Conversões de decimal
PROGRAMAÇÃO EM LINGUAGEM LADDER LINGUAGEM DE RELÉS
1 PROGRAMAÇÃO EM LINGUAGEM LADDER LINGUAGEM DE RELÉS INTRODUÇÃO O processamento interno do CLP é digital e pode-se, assim, aplicar os conceitos de lógica digital para compreen8 der as técnicas e as linguagens
Contadores (Aula1) Prof. Rômulo Calado Pantaleão Camara
Contadores (Aula1) Prof. Rômulo Calado Pantaleão Camara Carga Horária: 2h/60h Contadores Contadores (cont.) Os contadores podem ser classificados por: Tipo de controle - Assíncrono - Síncrono Tipo de contagem
EA773 - Experimento 5
EA773 - Experimento 5 Wu Shin - Ting DCA - FEEC - Unicamp 19 de Novembro de 2009 O projeto consiste em implementar uma calculadora com memória com uso de barramento de 8 bits. Neste documento são discutidos
USJT Universidade São Judas Tadeu ENGENHARIA ELÉTRICA - LAB. INTEGRADO. EXP4 : Interrupções do uc 8051
USJT Universidade São Judas Tadeu ENGENHARIA ELÉTRICA - LAB. INTEGRADO EXP4 : Interrupções do uc 8051 Prof. Vladimir Chvojka Jr Eng. Elétrica- Lab. Integrado - uc 8051 - Prof. Vladimir Chvojka Jr Exp4:
Display de 7. PdP. Autor: Tiago Lone Nível: Básico Criação: 16/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos
TUTORIAL Display de 7 Segmentos Autor: Tiago Lone Nível: Básico Criação: 16/12/2005 Última versão: 18/12/2006 PdP Pesquisa e Desenvolvimento de Produtos http://www.maxwellbohr.com.br [email protected]
Dispositivos de Entrada e Saída
SEL-0415 Introdução à Organização de Computadores Dispositivos de Entrada e Saída Aula 9 Prof. Dr. Marcelo Andrade da Costa Vieira ENTRADA e SAÍDA (E/S) (I/O - Input/Output) n Inserção dos dados (programa)
PROGRAMA DE GERENCIAMENTO DOS AMPLIFICADORES MR 4.50D-XT MR 6.50D-XT MR 6.80-XT Rev. 2.3 de 29/01/2014
PROGRAMA DE GERENCIAMENTO DOS AMPLIFICADORES MR 4.50D-XT MR 6.50D-XT MR 6.80-XT Rev. 2.3 de 29/01/2014 Introdução: Este programa permite o gerenciamento dos amplificadores MR 4.50D-XT MR 6.50D-XT MR 6.80-XT
Programação em BASIC para o PIC Mostrando Mensagens no Display LCD Vitor Amadeu Souza
Programação em BASIC para o PIC Mostrando Mensagens no Display LCD Vitor Amadeu Souza Introdução Nesta terceira série de artigos que aborda a programação na linguagem BASIC para o microcontrolador PIC,
MINISTÉRIO DA EDUCAÇÃO IFSC - Campus São José. CST em Telecomunicações ELETRÔNICA DIGITAL CONTADORES. Marcos Moecke
MINISTÉRIO DA EDUCAÇÃO IFSC - Campus São José CST em Telecomunicações ELETRÔNICA DIGITAL CONTADORES Marcos Moecke São José - SC, 29 SUMÁRIO 5. CONTADORES... 5. CONTADORES ASSÍNCRONOS 5. C 5.2 C ASSÍNCRONOS......
Flip-Flops (Aplicações) Prof. Rômulo Calado Pantaleão Camara
Flip-Flops (Aplicações) Prof. Rômulo Calado Pantaleão Camara Carga Horária: 2h/60h Pulsos Digitais Pulso positivo: executa sua função quando está em nível alto Pulso negativo: executa sua função quando
MINISTÉRIO DA EDUCAÇÃO CEFET/SC - Unidade de São José. Curso Técnico em Telecomunicações CONTADORES. Marcos Moecke
MINISTÉRIO DA EDUCAÇÃO - Unidade de São José Curso Técnico em Telecomunicações CONTADORES Marcos Moecke São José - SC, 25 SUMÁRIO 5. CONTADORES... 5. CONTADORES ASSÍNCRONOS... CONTADOR ASSÍNCRONO CRESCENTE...
Entradas Digitais. PdP. Autores: Luís Fernando Patsko e Tiago Lone Nível: Intermediário Criação: 27/12/2005 Última versão: 18/12/2006
TUTORIAL Entradas Digitais Autores: Luís Fernando Patsko e Tiago Lone Nível: Intermediário Criação: 27/12/2005 Última versão: 18/12/2006 PdP Pesquisa e Desenvolvimento de Produtos http://www.maxwellbohr.com.br
DeviceNet Drive Profile CFW-09
Motores Automação Energia Transmissão & Distribuição Tintas DeviceNet Drive Profile CFW09 Manual da Comunicação Manual da Comunicação DeviceNet Drive Profile Série: CFW09 Idioma: Português Versão de Software:
Sistemas Computacionais II Professor Frederico Sauer
Sistemas Computacionais II Professor Frederico Sauer Livro-texto: Introdução à Organização de Computadores 4ª edição Mário A. Monteiro Livros Técnicos e Científicos Editora. Atenção: Este material não
CONSTRUÇÃO DE UMA UCP HIPOTÉTICA M++ INTRODUÇÃO
CONSTRUÇÃO DE UMA UCP HIPOTÉTICA M++ INTRODUÇÃO O seguinte artigo apresenta uma UCP hipotética construída no software simulador DEMOWARE Digital Works 3.04.39. A UCP (Unidade Central de Processamento)
MICROPROCESSADORES 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
Na primeira aula, conhecemos um pouco sobre o projeto Arduino, sua família de placas, os Shields e diversos exemplos de aplicações.
Na primeira aula, conhecemos um pouco sobre o projeto Arduino, sua família de placas, os Shields e diversos exemplos de aplicações. A partir de agora, iremos conhecer o hardware do Arduino e suas caracteristicas
Mapeamento de memória e programação da IHM do controlador CP-WS41/8DO8DI4AO2AI2TAI
Comércio e Manutenção de Produtos Eletrônicos Manual CP-WS1 Mapeamento de memória e programação da IHM do controlador CP-WS41/8DO8DI4AO2AI2TAI PROXSYS Versão 1.0 Março-2013 Controlador Industrial CP-WS1
1.3 Conectando a rede de alimentação das válvulas solenóides
1.3 Conectando a rede de alimentação das válvulas solenóides CONTROLE DE FLUSHING AUTOMÁTICO LCF 12 Modo Periódico e Horário www.lubing.com.br (19) 3583-6929 DESCALVADO SP 1. Instalação O equipamento deve
Monitor de Rede Elétrica Som Maior Pro. Manual do Usuário Versão 3.9f
Monitor de Rede Elétrica Som Maior Pro Manual do Usuário Versão 3.9f 2 ÍNDICE PÁG. 1 APRESENTAÇÃO...03 2 DESCRIÇÃO DO EQUIPAMENTO...04 2.1 ROTINA INICIAL DE AVALIAÇÃO DA REDE ELÉTRICA...04 2.2 TROCA DE
Conheça o 4017 (ART062)
1 de 11 20/02/2013 18:14 Conheça o 4017 (ART062) Este artigo não é novo, mas sua atualidade se manterá por muito tempo, o que jusitifica o fato dele ser um dos mais acessados desse site. De fato, o circuito
Comunicação de dados. Introdução
Comunicação de dados Introdução Os microcontroladores AVR estão equipados com dois pinos destinados à comunicação serial, UART (Universal Asynchronous Reciever/Transmitter), ou seja, permitem trocar informações
Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01
Unidade Central de Processamento (CPU) Processador Renan Manola Introdução ao Computador 2010/01 Componentes de um Computador (1) Computador Eletrônico Digital É um sistema composto por: Memória Principal
Arquitetura e Organização de Computadores I
Arquitetura e Organização de Computadores I Interrupções e Estrutura de Interconexão Prof. Material adaptado e traduzido de: STALLINGS, William. Arquitetura e Organização de Computadores. 5ª edição Interrupções
Guia de consulta rápida
Guia de consulta rápida DigiFlash Smart Trigger 1 2 3 4 5 17 Smart Trigger 6 7 8 9 16 15 14 13 12 11 10 O DigiFlash Smart Trigger é um dispositivo para disparar flashes a partir de um evento externo. Pode
Descrição dos pinos do Módulo Driver Motor com Dupla Ponte-H - L298N:
O MÓDULO DRIVER MOTOR COM DUPLA PONTEH - L298N é baseado no chip L298N com dupla Ponte- H, podendo controlar a velocidade e o sentido de giro de até dois motores de 3-30V DC ou um motor de passo com 2
Laborató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.
Temporização da CPU SEL-433 APLICAÇÕES DE MICROPROCESSADORES I. Ciclos de Máquina. Ciclos de Máquina. Temporização Interrupções Rotinas de Atraso
SEL-433 APLICAÇÕES DE MICROPROCESSADORES I Temporização da CPU Todos os Microcontroladores da família MCS-51 têm um oscilador interno. Para uso deste oscilador deve-se conectar um cristal entre os pinos
EA075 Conversão A/D e D/A
EA075 Conversão A/D e D/A Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato 1 Introdução Sinal digital: possui um valor especificado
Sagômetro Digital. Manual de Instalação e Operação
Manual de Instalação e Operação MANUAL DE INSTALAÇÃO E OPERAÇÃO APRESENTAÇÃO: Esse instrumento foi especialmente desenvolvido para realizar medições de Ságitas em Blocos Oftálmicos onde através de software
A idéia hardware sugerida é colocar a placa entre o PC e o microcontrolador, conforme mostrado no esquema abaixo.
Circuito de gravação (AVR programmer) Introdução Nossa proposta, nesta parte do trabalho, é apresentar um circuito para gravação ISP (In-System- Programming) para microcontroladores AVR. Este circuito,
Organização de Memórias
Intel 8051 O Intel 8051 é um microcontrolador de 8 bits que pertence a família MCS-51 da Intel e foi lançado em 1977. É tido como o microcontrolador mais popular do mundo, pois é muito versátil e possui
Sensores e Atuadores (2)
(2) 4º Engenharia de Controle e Automação FACIT / 2009 Prof. Maurílio J. Inácio Atuadores São componentes que convertem energia elétrica, hidráulica ou pneumática em energia mecânica. Através dos sistemas
Microcontroladores Família MCS51
Microcontroladores Família MCS51 Colégio Técnico de Campinas COTUCA Disciplina TDM II- Departamento Eletroeletrônica 1- Conceitos Básicos Um sistema computador é constituído por três blocos de base ligados
Fabio Bento [email protected]
Fabio Bento [email protected] Eletrônica Digital Sistemas de Numeração e Códigos 1. Conversões de Binário para Decimal 2. Conversões de Decimal para Binário 3. Sistema de Numeração Hexadecimal 4. Código
Arquitetura de Rede de Computadores
TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador
CONJUNTO 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
Ambiente de desenvolvimento de Programação Assembly MCU 8051 IDE
SEL-433 APLICAÇÕES DE MICROPROCESSADORES I Prof. Evandro L. L. Rodrigues Ambiente de desenvolvimento de Programação Assembly MCU 8051 IDE http://mcu8051ide.sourceforge.net/ Tela inicial Criar novo projeto:
