A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 1 Prof. José Wilson Lima Nerys 1 Microprocessadores MICROPROCESSADORES.

Apresentações semelhantes


Apresentação em tema: "Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 1 Prof. José Wilson Lima Nerys 1 Microprocessadores MICROPROCESSADORES."— Transcrição da apresentação:

1 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 1 Prof. José Wilson Lima Nerys 1 Microprocessadores MICROPROCESSADORES E MICROCONTROLADORES José Wilson Lima Nerys Página: www.emc.ufg/~jwilson Emails: jwlnerys@gmail.com e jose_wilson_nerys@ufg.brjwlnerys@gmail.com Parte 2

2 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 2 Prof. José Wilson Lima Nerys 2 Microprocessadores AulaDataConteúdo 905/05 (Qui)Instruções básicas do microcontrolador 8051 1010/05 (Ter)Programação usando o assembly do 8051 1112/05 (Qui)Programação usando o assembly do 8051 1217/05 (Ter)Princípio de funcionamento das interrupções do 8051 1319/05 (Qui)Programação com e sem interrupções 24/05 (Ter)Feriado Local – Padroeira de Goiânia 26/05 (Qui)Feriado Nacional – Corpus Christi 1431/05 (Ter)Programação do 8051 com e sem interrupções 1502/06 (Qui)Programação do 8051 com e sem interrupções 1607/06 (Ter)Princípio de funcionamento dos temporizadores do microcontrolador 8051 1709/06 (Qui)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1814/06 (Ter)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1916/06 (Qui)Princípio de funcionamento da comunicação serial 21/06 (Ter)Espaço das Profissões 2023/06 (Qui)Programação utilizando a comunicação serial 2128/06 (Ter)Programação utilizando a comunicação serial 2230/06 (Qui) Prova 2 – conteúdo das aulas 9 a 21 (interrupções, temporizadores e serial do 8051)

3 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 3 Prof. José Wilson Lima Nerys 3 Microprocessadores 3

4 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 4 Prof. José Wilson Lima Nerys 4 Microprocessadores 4

5 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 5 Prof. José Wilson Lima Nerys 5 Microprocessadores 5 Memória RAM

6 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 6 Prof. José Wilson Lima Nerys 6 Microprocessadores 6 Memória RAM

7 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 7 Prof. José Wilson Lima Nerys 7 Microprocessadores 7 Memória RAM

8 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 8 Prof. José Wilson Lima Nerys 8 Microprocessadores 8 Memória RAM

9 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 9 Prof. José Wilson Lima Nerys 9 Microprocessadores 9 MOV R0,#80H MOV @R0,A Conteúdo de A é armazenado na posição 80H da memória RAM MOV 80H,A Conteúdo de A é armazenado no registrador especial 80H, que corresponde à Porta P0

10 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 10 Prof. José Wilson Lima Nerys 10 Microprocessadores Algumas Instruções do 8051 InstruçãoDescrição MOV A,#Dado8Carrega acumulador com o Dado de 8 bits MOV Rn,#Dado8Carrega registrador Rn (n=0 a 7) com o Dado de 8 bits MOV A,BCopia no registrador A (acumulador) o conteúdo do registrador B MOV Rn,ACopia no registrador Rn (n = 0 a 7) o conteúdo do acumulador MOV A,direto Copia em A o conteúdo do registrador identificado pelo endereço “direto” MOV dir1,dir2 Copia no registrador identificado pelo endereço “dir1” o conteúdo do registrador identificado pelo endereço “dir2” MOV @R0,ACopia o conteúdo de A na posição apontada por R0 MOV DPTR,#dado16O registrador duplo DPTR recebe um dado de 16 bits MOVC A,@A+DPTRCarrega acumulador com o conteúdo da posição apontada por A+DPTR

11 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 11 Prof. José Wilson Lima Nerys 11 Microprocessadores Algumas Instruções do 8051 InstruçãoDescrição CJNE A,#dado,Ender Compara conteúdo de A com o “dado”; se não forem iguais, desvia para o endereço “Ender” CJNE Rn,#dado,Ender Compara conteúdo do registrador Rn (n = 0 a 7) com o “dado”; se não forem iguais, desvia para o endereço “Ender” DJNZ Rn,desvio Decrementa o registrador Rn (n = 0 a 7); se o resultado não for zero, desvia para “desvio” SJMP enderDesvia para o endereço “ender”. SJMP = Short Jump LJMP enderDesvia para o endereço “ender”. LJMP = Long Jump JNZ enderDesvia para o endereço “ender”, se a flag Z = 0 JZ enderDesvia para “ender”, se a flag Z = 1 JNC enderDesvia para “ender”, se a flag CY = 0 JC enderDesvia para “ender”, se a flag CY = 1

12 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 12 Prof. José Wilson Lima Nerys 12 Microprocessadores Algumas Instruções do 8051 InstruçãoDescrição ADD A,RnAdiciona o conteúdo de Rn (n = 0 a 7) ao conteúdo do acumulador ADD A,#dado8Adiciona o “dado8”, de 8 bits ao conteúdo do acumulador SUBB A,direto Subtrai o conteúdo do registrador identificado pelo endereço “direto”, do conteúdo do acumulador SUBB A,@R0 Subtrai o conteúdo da posição apontada pelo registrador R0 do conteúdo do acumulador RL ARotaciona o conteúdo de A para a esquerda RR ARotaciona o conteúdo de A para a direita DA AFaz o ajuste decimal do conteúdo de A INC RnIncrementa em uma unidade o conteúdo do registrador Rn INC DPTRIncrementa em uma unidade o conteúdo do registrador duplo DPTR CPL AComplementa o conteúdo do acumulador

13 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 13 Prof. José Wilson Lima Nerys 13 Microprocessadores Algumas Instruções do 8051 InstruçãoDescrição MUL AB 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. DIV ABDivide o conteúdo de A pelo conteúdo de B. A recebe o quociente e B o resto. ANL A,#dadoFaz a operação AND, bit a bit, entre o acumulador e o dado de 8 bits ORL A,#dadoFaz a operação OR, bit a bit, entre o acumulador e o dado de 8 bits SWAP A 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.

14 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 14 Prof. José Wilson Lima Nerys 14 Microprocessadores Algumas Instruções do 8051 Operações com bits InstruçãoDescrição JB bit,desvio Desvia para a posição “desvio”, caso o “bit” esteja setado (se bit=1). Exemplo: Se F0 = 1, então a instrução JB F0,V1 faz o processamento desviar para a posição “V1” JNB bit,desvioDesvia para “desvio”, caso o “bit” seja zero (se bit = 0). SETB bitFaz bit = 1 CLR bitFaz bit = 0 CPL bitComplementa o “bit”. Se bit = 1, então bit torna-se bit=0.

15 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 15 Prof. José Wilson Lima Nerys 15 Microprocessadores AulaDataConteúdo 905/05 (Qui)Instruções básicas do microcontrolador 8051 1010/05 (Ter)Programação usando o assembly do 8051 1112/05 (Qui)Programação usando o assembly do 8051 1217/05 (Ter)Princípio de funcionamento das interrupções do 8051 1319/05 (Qui)Programação com e sem interrupções 24/05 (Ter)Feriado Local – Padroeira de Goiânia 26/05 (Qui)Feriado Nacional – Corpus Christi 1431/05 (Ter)Programação do 8051 com e sem interrupções 1502/06 (Qui)Programação do 8051 com e sem interrupções 1607/06 (Ter)Princípio de funcionamento dos temporizadores do microcontrolador 8051 1709/06 (Qui)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1814/06 (Ter)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1916/06 (Qui)Princípio de funcionamento da comunicação serial 21/06 (Ter)Espaço das Profissões 2023/06 (Qui)Programação utilizando a comunicação serial 2128/06 (Ter)Programação utilizando a comunicação serial 2230/06 (Qui) Prova 2 – conteúdo das aulas 9 a 21 (interrupções, temporizadores e serial do 8051)

16 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 16 Prof. José Wilson Lima Nerys 16 Microprocessadores Contagem crescente RótuloMnemônicoComentário sobre o Efeito da Operação ORG 00H A próxima instrução estará no endereço 00h LJMP INICIO Pula para o endereço indicado com o rótulo ´inicio´ ORG 30H A próxima instrução estará no endereço 30h INICIO: MOV A,#00H Carrega acumulador com valor 00h VOLTA: MOV P1,A Transfere para a porta P1 o conteúdo do acumulador INC A Incrementa o conteúdo do acumulador SJMP VOLTA Pula para o endereço indicado pelo rótulo ´volta´ END Instrução obrigatória no fim de todo programa

17 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 17 Prof. José Wilson Lima Nerys 17 Microprocessadores 17 RótuloMnemônicoComentário sobre o Efeito da Operação ORG 00HA próxima instrução estará no endereço 00h LJMP INICIOPula para o endereço indicado com o rótulo ´inicio´ ORG 30HA próxima instrução estará no endereço 30h INICIO:MOV A,#00HCarrega acumulador com valor 00h V1:MOV P1,ATransfere para a porta P1 o conteúdo do acumulador INC AIncrementa o conteúdo do acumulador CJNE A,#30H,V1 Compara conteúdo do acumulador com “30h”. Caso não seja igual, “V1” V2:MOV P1,ATransfere para a porta P1 o conteúdo do acumulador DJNZ ACC,V2 Decrementa conteúdo do acumulador e vai para “V2” se não for “zero” SJMP V1 Pula para “V1”. Não precisa usar “LJMP” porque a distância é curta. ENDInstrução obrigatória no fim de todo programa Contagem crescente e decrescente

18 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 18 Prof. José Wilson Lima Nerys 18 Microprocessadores 18 RótuloMnemônicoComentário sobre o Efeito da Operação ORG 00HA próxima instrução estará no endereço 00h LJMP INICIOPula para o endereço indicado com o rótulo ´inicio´ ORG 30HA próxima instrução estará no endereço 30h INICIO:CPL P1.0Complementa o bit 0 da Porta P1 MOV R0,#100Carrega registrador R0 com valor decimal 100 DJNZ R0,$Decrementa o conteúdo de R0, até R0 = 0 SJMP INICIO Retorna para o início ENDInstrução obrigatória no fim de todo programa Onda quadrada no pino P1.0

19 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 19 Prof. José Wilson Lima Nerys 19 Microprocessadores 19

20 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 20 Prof. José Wilson Lima Nerys 20 Microprocessadores 20 RótuloMnemônico ORG 00H LJMP INICIO ORG 30H INICIO:MOV SP,#2FH MOV DPTR,#Tabela V1: MOV R7,#00h Leitura de Tabela RótuloMnemônico V2:MOV A,R7 MOVC A,@A+DPTR CJNE A,#0FFH,SEGUE SJMP V1 SEGUE:MOV P1,A INC R7 SJMP V2 RótuloMnemônico Tabela:DB 0AH DB 06H DB 05H DB 09H DB 0FFH END Essa tabela, com apenas 4 valores, pode ser usada para o acionamento de um motor de passo. O motor deve estar conectado, através de um driver, ao nibble inferior da Porta P1. Offset R7 0 1 2 3 4

21 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 21 Prof. José Wilson Lima Nerys 21 Microprocessadores 21 Parte 1Parte 2Parte 3 Parte 4 Parte 5Parte 6 DB127 DB205 DB250 DB243 DB186 DB104 DB130 DB208 DB251 DB241 DB183 DB101 DB133 DB210 DB252 DB240 DB180 DB98 DB136 DB213 DB252 DB239 DB177 DB95 DB139 DB215 DB253 DB237 DB174 DB91 DB143 DB217 DB253 DB235 DB171 DB88 DB146 DB219 DB253 DB234 DB168 DB86 DB149 DB221 DB254 DB232 DB166 DB83 DB152 DB223 DB254 DB230 DB163 DB80 DB155 DB225 DB254 DB228 DB159 DB77 DB158 DB227 DB254 DB226 DB156 DB74 DB161 DB229 DB254 DB224 DB153 DB71 DB164 DB231 DB254 DB222 DB150 DB68 DB167 DB233 DB254 DB220 DB147 DB66 DB170 DB235 DB253 DB218 DB144 DB63 DB173 DB236 DB253 DB216 DB141 DB60 DB176 DB238 DB252 DB214 DB138 DB58 DB179 DB239 DB252 DB211 DB135 DB55 DB181 DB241 DB251 DB209 DB132 DB52 DB184 DB242 DB251 DB207 DB129 DB50 DB187 DB243 DB250 DB204 DB125 DB47 DB190 DB245 DB249 DB202 DB122 DB45 DB193 DB246 DB248 DB199 DB119 DB43 DB195 DB247 DB247 DB196 DB116 DB40 DB198 DB248 DB246 DB194 DB113 DB38 DB200 DB249 DB245 DB191 DB110 DB36 DB203 DB250 DB244 DB188 DB107 DB34 Tabela: seno

22 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 22 Prof. José Wilson Lima Nerys 22 Microprocessadores Parte 7 Parte 8 Parte 9 Parte 10 Parte 11 Parte 12 DB32 DB7 0 13 DB44 DB87 DB30 DB6 1 15 DB46 DB90 DB28 DB5 1 16 DB49 DB93 DB26 DB4 1 18 DB51 DB96 DB24 DB3 2 19 DB54 DB99 DB22 DB3 2 21 DB56 DB102 DB20 DB2 3 23 DB59 DB105 DB19 DB2 4 25 DB61 DB108 DB17 DB1 4 27 DB64 DB111 DB15 DB1 5 29 DB67 DB115 DB14 DB0 6 31 DB70 DB118 DB13 DB0 7 33 DB73 DB121 DB11 DB0 8 35 DB75 DB124 DB10 DB0 9 37 DB78 DB127 DB9 0 11 DB39 DB81 DB8 0 12 DB41 DB84

23 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 23 Prof. José Wilson Lima Nerys 23 Microprocessadores Mostra em P1 o Maior valor de uma Tabela R0 recebe o maior valor, antes de mostrar em P1

24 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 24 Prof. José Wilson Lima Nerys 24 Microprocessadores RótuloMnemônico ORG 00H LJMP INICIO ORG 30H INICIO:MOV SP,#2FH MOV DPTR,#Tabela DJNZ R0,#00h DJNZ R7,#00H RótuloMnemônico V1:MOV A,R7 MOVC A,@A+DPTR CJNE A,#0FFH,SEGUE MOV P1,R0 SJMP FIM SEGUE:CLR CY MOV B,A SUBB A,R0 JC V2 MOV R0,B V2:INC R7 SJMP V1 RótuloMnemônico Tabela:DB 0A3H DB 16H DB 05H DB 09H DB 0A1H DB 35H DB 0C5H DB 72H DB 40H DB 0FFH FIM:END Offset R7 0 1 2 3 4 5 6 7 8 9 Mostra em P1 o Maior valor de uma Tabela

25 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 25 Prof. José Wilson Lima Nerys 25 Microprocessadores RótuloMnemônico ORG 00H LJMP INICIO ORG 30H INICIO:MOV SP,#2FH MOV DPTR,#Tabela V1: DJNZ R7,#00h Leitura de Tabela Usando R7 como offset e contador RótuloMnemônico V2:MOV A,R7 MOVC A,@A+DPTR MOV P1,A INC R7 CJNE R7,#04H,V2 SJMP V1 RótuloMnemônico Tabela:DB 0AH DB 06H DB 05H DB 09H END No programa a seguir o registrador R7 é usado também (além de offset) para contar os 4 valores a serem lidos. Offset R7 0 1 2 3 4

26 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 26 Prof. José Wilson Lima Nerys 26 Microprocessadores AulaDataConteúdo 905/05 (Qui)Instruções básicas do microcontrolador 8051 1010/05 (Ter)Programação usando o assembly do 8051 1112/05 (Qui)Programação usando o assembly do 8051 1217/05 (Ter)Princípio de funcionamento das interrupções do 8051 1319/05 (Qui)Programação com e sem interrupções 24/05 (Ter)Feriado Local – Padroeira de Goiânia 26/05 (Qui)Feriado Nacional – Corpus Christi 1431/05 (Ter)Programação do 8051 com e sem interrupções 1502/06 (Qui)Programação do 8051 com e sem interrupções 1607/06 (Ter)Princípio de funcionamento dos temporizadores do microcontrolador 8051 1709/06 (Qui)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1814/06 (Ter)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1916/06 (Qui)Princípio de funcionamento da comunicação serial 21/06 (Ter)Espaço das Profissões 2023/06 (Qui)Programação utilizando a comunicação serial 2128/06 (Ter)Programação utilizando a comunicação serial 2230/06 (Qui) Prova 2 – conteúdo das aulas 9 a 21 (interrupções, temporizadores e serial do 8051)

27 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 27 Prof. José Wilson Lima Nerys 27 Microprocessadores RótuloMnemônico ORG 00H LJMP INICIO ORG 30H INICIO:MOV SP,#2FH MOV A,#00H V1: MOV P1,A ADD A,#01H DA A CJNE A,#60H,V1 SJMP INICIO END Contagem decimal crescente de 0 a 59 e decrescente de 59 a 0 RótuloMnemônico ORG 00H LJMP INICIO ORG 30H INICIO:MOV SP,#2FH MOV A,#60H V1:ADD A,#99H DA A MOV P1,A CJNE A,#00H,V1 SJMP INICIO END Enquanto A < 60H, continua contagem crescente Enquanto A > 00H, continua contagem decrescente

28 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 28 Prof. José Wilson Lima Nerys 28 Microprocessadores Relógio HH:MM:SS

29 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 29 Prof. José Wilson Lima Nerys 29 Microprocessadores Relógio HH:MM:SS RÓTULOMNEMÔNICO SEG EQU 10H MIN EQU 11H HORA EQU 12H ORG 00H LJMP INICIO ORG 30H INICIO:MOV SP,#2FH V1:MOV SEG,#00H MOV MIN,#00H MOV HORA,#00H V2:MOV P2,SEG MOV P1,MIN MOV P0,HORA LCALL ATRASO RÓTULOMNEMÔNICO MOV A,SEG ADD A,#01H DA A MOV SEG,A CJNE A,#60H,V2 MOV SEG,#00H MOV A,MIN ADD A,#01H DA A MOV MIN,A CJNE A,#60H,V2 MOV MIN,#00H MOV A,HORA RÓTULOMNEMÔNICO ADD A,#01H DA A MOV HORA,A CJNE A,#24H,V2 SJMP V1 ATRASO:MOV R0,#250 V3:MOV R1,#250 DJNZ R1,$ DJNZ R0,V3 RET END

30 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 30 Prof. José Wilson Lima Nerys 30 Microprocessadores Cronômetro: MM:SS

31 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 31 Prof. José Wilson Lima Nerys 31 Microprocessadores Cronômetro Decrescente: MM:SS RÓTULOMNEMÔNICO MIN EQU 11H SEG EQU 12H BUZZER EQU P3.7 ORG 00H LJMP INICIO ORG 30H INICIO:MOV SP,#2FH CLR BUZZER MOV MIN,#20H MOV SEG,#00H V1:MOV P2,MIN MOV P1,SEG LCALL ATRASO RÓTULOMNEMÔNICO MOV A,SEG ADD A,#99H DA A MOV SEG,A CJNE A,#99H,V1 MOV SEG,#59H MOV A,MIN ADD A,#99H DA A MOV MIN,A CJNE A,#99H,V1 MOV MIN,#00H MOV SEG,#00H RÓTULOMNEMÔNICO MOV P2,MIN MOV P1,SEG SETB BUZZER MOV R7,#10 V2:LCALL ATRASO DJNZ R7,V2 CLR BUZZER SJMP $ ATRASO:MOV R0,#250 V3:MOV R1,#250 DJNZ R1,$ DJNZ R0,V3 RET END

32 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 32 Prof. José Wilson Lima Nerys 32 Microprocessadores Usando Interrupções (antes de estudar interrupções) Para escolher o valor inicial do cronômetro e para iniciar a contagem RÓTULOMNEMÔNICOCOMENTÁRIO ORG 00H LJMP INICIO ORG 03HEndereço da Interrupção externa 0 (EX0) MOV A,MINA recebe o valor atual dos Minutos ADD A,#01HAcrescenta 01H ao conteúdo de A DA AFaz o ajuste decimal do conteúdo de A MOV MIN,ATransfere para MIN o conteúdo atualizado dos minutos RETIRetorna da Interrupção externa 0 ORG 13HEndereço da Interrupção externa 0 (EX1) SETB F0Faz F0 = 1 para dar início à contagem RETIRetorna da interrupção externa 1

33 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 33 Prof. José Wilson Lima Nerys 33 Microprocessadores Usando Interrupções (antes de estudar interrupções) Para escolher o valor inicial do cronômetro e para iniciar a contagem RÓTULOMNEMÔNICOCOMENTÁRIO ORG 30H INÍCIO:MOV SP,#2FH MOV IE,#85HHabilita as interrupções externas 0 e 1 MOV TCON,#05HAs interrupções externas 0 e 1 são por transição CLR F0Limpa a flag F0, que é usada para iniciar a contagem MOV SEG,#00HFaz o registrador SEG = 0 CLR BUZZERLimpa a saída que aciona o alarme V1:MOV P1,SEGMostra valor atual de MINuto e SEGundo MOV P2,MIN JNB F0,V1Aguarda enquanto F0 = 0

34 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 34 Prof. José Wilson Lima Nerys 34 Microprocessadores Rotação de Leds à esquerda (CH0 = 0) e à direita (CH1 = 0) RótuloMnemônico CH0 EQU P3.2 CH1 EQU P3.3 ORG 00H LJMP INICIO ORG 30H INICIO:MOV SP,#2FH MOV A,#01H V1:JB CH0,VCH1 RótuloMnemônico MOV P1,A RL A LCALL ATRASO SJMP V1 VCH1:JB CH1,V1 MOV P1,A RR A LCALL ATRASO SJMP V1 RótuloMnemônico ATRASO:MOV R0,#100 V2:MOV R1,#200 DJNZ R1,$ DJNZ R0,V2 RET END

35 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 35 Prof. José Wilson Lima Nerys 35 Microprocessadores Leds piscando (CH0 = 0) e alternando (CH1 = 0) RótuloMnemônico CH0 EQU P3.2 CH1 EQU P3.3 ORG 00H LJMP INICIO ORG 30H INICIO:MOV SP,#2FH MOV R6,#00H MOV R7,#55H V1:JB CH0,VCH1 RótuloMnemônico MOV P1,R6 MOV A,R6 LCALL ATRASO CPL A MOV R6,A SJMP V1 VCH1:JB CH1,V1 MOV P1,R7 MOV A,R7 LCALL ATRASO CPL A MOV R7,A SJMP V1 RótuloMnemônico ATRASO:MOV R0,#100 V2:MOV R1,#200 DJNZ R1,$ DJNZ R0,V2 RET END

36 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 36 Prof. José Wilson Lima Nerys 36 Microprocessadores Multiplicação e Divisão de Números de 8 bits RótuloMnemônico ORG 00H LJMP INICIO ORG 00H INICIO: MOV SP,#2FH MOV A,#200 MOV B,#40 MUL AB JB P3.2,$ MOV P2,A MOV P1,B END RótuloMnemônico ORG 00H LJMP INICIO ORG 00H INICIO: MOV SP,#2FH MOV A,#200 MOV B,#40 DIV AB JB P3.2,$ MOV P2,A MOV P1,B END

37 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 37 Prof. José Wilson Lima Nerys 37 Microprocessadores Adição e Subtração de Números de 16 bits

38 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 38 Prof. José Wilson Lima Nerys 38 Microprocessadores ; ADIÇÃO DE NÚMEROS DE 16 BITS Z = X + Y XHEQU10H; Número X de 16 bits XLEQU11H YHEQU12H; Número Y de 16 bits YLEQU13H ZHEQU14H; Resultado da adição de 16 bits ZLEQU15H ZOVBIT00H; Flag de carry do resultado de 16 bits ORG 00H LJMP INICIO ORG 30H INICIO:MOV SP,#2FH MOV XH,#40H MOV XL,#00H MOV YH,#35H MOV YL,#50H MOV A,XL ADD A,YL; Adição do byte inferior, sem carry MOV ZL,A MOV A,XH ADDC A,YH; Adição do byte superior, com carry MOV ZH,A MOV ZOV,C END

39 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 39 Prof. José Wilson Lima Nerys 39 Microprocessadores ; SUBTRAÇÃO DE NÚMEROS DE 16 BITS Z = X - Y XHEQU10H; Número X de 16 bits XLEQU11H YHEQU12H; Número Y de 16 bits YLEQU13H ZHEQU14H; Resultado da adição de 16 bits ZLEQU15H ZOVBIT00H; Flag de carry do resultado de 16 bits ORG 00H LJMP INICIO ORG 30H INICIO:MOV SP,#2FH MOV XH,#40H MOV XL,#00H MOV YH,#35H MOV YL,#50H MOV A,XL CLR CY SUBB A,YL MOV ZL,A MOV A,XH SUBB A,YH MOV ZH,A MOV ZOV,C END

40 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 40 Prof. José Wilson Lima Nerys 40 Microprocessadores AulaDataConteúdo 905/05 (Qui)Instruções básicas do microcontrolador 8051 1010/05 (Ter)Programação usando o assembly do 8051 1112/05 (Qui)Programação usando o assembly do 8051 1217/05 (Ter)Princípio de funcionamento das interrupções do 8051 1319/05 (Qui)Programação com e sem interrupções 24/05 (Ter)Feriado Local – Padroeira de Goiânia 26/05 (Qui)Feriado Nacional – Corpus Christi 1431/05 (Ter)Programação do 8051 com e sem interrupções 1502/06 (Qui)Programação do 8051 com e sem interrupções 1607/06 (Ter)Princípio de funcionamento dos temporizadores do microcontrolador 8051 1709/06 (Qui)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1814/06 (Ter)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1916/06 (Qui)Princípio de funcionamento da comunicação serial 21/06 (Ter)Espaço das Profissões 2023/06 (Qui)Programação utilizando a comunicação serial 2128/06 (Ter)Programação utilizando a comunicação serial 2230/06 (Qui) Prova 2 – conteúdo das aulas 9 a 21 (interrupções, temporizadores e serial do 8051)

41 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 41 Prof. José Wilson Lima Nerys 41 Microprocessadores Interrupções do 8051 Registradores associados à interrupção: Registrador de Habilitação: IE (Interrupt Enable) = Registrador A8h Registrador de Prioridades: IP (Interrupt Priority) = Registrador B8h Registrador de Controle: TCON (Timer Control) = Registrador 88h Interrupção SolicitadaEndereço de desvio Reset0000h INT0\0003h Timer/counter 0000Bh INT1\0013h Timer/counter 1001Bh Canal Serial0023h Endereços de Desvio das Interrupções:

42 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 42 Prof. José Wilson Lima Nerys 42 Microprocessadores Bit 7 Bit 4Bit 3Bit 2Bit 1Bit 0 EAxxESET1EX1ET0EX0 Registrador de Habilitação: IE (Interrupt Enable) = Registrador A8h EA  Enable All. Com EA = 1, todas as interrupções podem ser habilitadas individualmente. Com EA = 0, ficam todas mascaradas. ES  Enable Serial. Com ES = 1, a interrupção pelo canal serial fica habilitada. Com ES = 0 os pedidos de interrupção da serial são ignorados. ET1  Enable Timer 1. Com ET1 = 1, as interrupções pedidas pelo Timer 1 são atendidas. Com ET1 = 0 elas são ignoradas. EX1  Enable External Interrupt 1. Com EX1 = 1, as interrupções pedidas através do pino P3.3 são atendidas. Com EX1 = 0 elas são ignoradas. ET0  Enable Timer 0. Com ET0 = 1, as interrupções pedidas pelo Timer 0 são atendidas. Com ET0 = 0 elas são ignoradas. EX0  Enable External Interrupt 0. Com EX0 = 1, as interrupções pedidas através pino P3.2 são atendidas. Com EX0 = 0 elas são ignoradas.

43 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 43 Prof. José Wilson Lima Nerys 43 Microprocessadores TCON = TF1TR1TF0TR0 IE1IT1IE0IT0 Registrador de Controle: TCON (Timer Control) = Registrador 88h 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). IT1  (Interrupt 1 Type) - Quando IT1 = 1 a interrupção externa 1 será reconhecida pela transição de 1 para 0 no pino P3.3. Quando IT1 = 0, a interrupção é reconhecida quando o sinal no pino P3.3 está em nível baixo (0 = interrupção por nível). 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. 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).

44 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 44 Prof. José Wilson Lima Nerys 44 Microprocessadores IP = XXX PSPT1PX1PT0PX0 Registrador de Prioridade: IP (Interrupt Priority) = Registrador B8h PS  Priority of Serial Port Interrupt  Sendo PS = 1, a interrupção serial tem prioridade alta. PT1  Priority of Timer Interrupt 1  Sendo PT1 = 1, a interrupção do temporizador 1 tem prioridade alta. PX1  Priority of External Interrupt 1  Sendo PX1 = 1, a interrupção externa 1 tem prioridade alta. PT0  Priority of Timer Interrupt 0  Sendo PT0 = 1, a interrupção do temporizador 0 tem prioridade alta. PX0  Priority of External Interrupt 0  Sendo PX0 = 1, a interrupção externa 0 tem prioridade alta.

45 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 45 Prof. José Wilson Lima Nerys 45 Microprocessadores Uma interrupção ter prioridade alta (Prioridade 1) significa que ela será atendida sempre que solicitada, mesmo quando o programa está executando uma outra interrupção. No caso de todos os canais de interrupção terem prioridade 0 ou 1, a escala de prioridade é como segue: InterrupçãoPrioridade Externa 0Maior Temporizador 0 Externa 1 Temporizador 1 SerialMenor

46 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 46 Prof. José Wilson Lima Nerys 46 Microprocessadores Programa que envia uma contagem crescente para a porta P1 a cada solicitação da interrupção INT0 (através do pino P3.2). RÓTULOMNEMÔNICO ORG 00H LJMP INICIO ORG 03H LJMP CONTAGEM ORG 30H INICIO:MOV SP, #2FH MOV IE, #81H MOV TCON, #01H MOV A, #00H SJMP $ RÓTULOMNEMÔNICO CONTAGEM:MOV P1,A INC A LCALL ATRASO CJNE A,#00H,CONTAGEM RETI ATRASO:MOV R0,#10 V1:MOV R1,#100 DJNZ R1, $ DJNZ R0, V1 RET END Exemplos Habilita interrupção externa 0 por transição Laço infinito aguardando interrupção Contagem encerra quando A retorna para 00

47 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 47 Prof. José Wilson Lima Nerys 47 Microprocessadores Programa que envia uma contagem crescente para a porta P1 a cada solicitação da interrupção INT0 e uma decrescente a cada solicitação da INT1. RÓTULOMNEMÔNICO ORG 00H LJMP INICIO ORG 03H LJMP ATENDE0 ORG 13H LJMP ATENDE1 ORG 30H INICIO:MOV SP, #2FH MOV IE, #85H MOV TCON, #05H SJMP $ RÓTULOMNEMÔNICO ATENDE0:PUSH ACC MOV A,#00H V1:MOV P1,A INC A LCALL ATRASO CJNE A,#00H,V1 POP ACC RETI RÓTULOMNEMÔNICO ATENDE1:PUSH ACC MOV A,#0FFH V2:MOV P1,A LCALL ATRASO DEC A CJNE A,#0FFH,V2 POP ACC RETI ATRASO:MOV R0,#10 V3:MOV R1,#100 DJNZ R1, $ DJNZ R0, V3 RET END Exemplos Habilita Interrupções INT0 e INT1 por transição Laço infinito aguardando interrupção

48 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 48 Prof. José Wilson Lima Nerys 48 Microprocessadores Programa que envia uma contagem decimal crescente para a porta P1 a cada solicitação da interrupção INT0 e uma decimal decrescente a cada solicitação da INT1. RÓTULOMNEMÔNICO 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 $ RÓTULOMNEMÔNICO ATENDE0:PUSH ACC V1:MOV P1,A ADD A,#01H DA A LCALL ATRASO CJNE A,#00H,V1 POP ACC RETI RÓTULOMNEMÔNICO ATENDE1:PUSH ACC V2:ADD A,#99H DA A MOV P1,A LCALL ATRASO CJNE A,#00H,V2 POP ACC RETI ATRASO:MOV R0,#250 V3:MOV R1,#250 DJNZ R1, $ DJNZ R0, V3 RET END Exemplos Habilita Interrupções INT0 e INT1 por transição Laço infinito aguardando interrupção Adiciona 1 e faz ajuste decimal Subtrai 1 e faz ajuste decimal

49 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 49 Prof. José Wilson Lima Nerys 49 Microprocessadores Programa que envia uma contagem crescente para a porta P1 a cada solicitação da interrupção INT0 e uma decrescente a cada solicitação da INT1 (Prioridade alta). RÓTULOMNEMÔNICO 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 IP,#04H SJMP $ RÓTULOMNEMÔNICO ATENDE0:PUSH ACC MOV A,#00H V1:MOV P1,A INC A LCALL ATRASO CJNE A,#00H,V1 POP ACC RETI RÓTULOMNEMÔNICO ATENDE1:PUSH ACC MOV A,#0FFH V2:MOV P1,A LCALL ATRASO DEC A CJNE A,#0FFH,V2 POP ACC RETI ATRASO:MOV R0,#10 V3:MOV R1,#100 DJNZ R1, $ DJNZ R0, V3 RET END Exemplos Habilita Interrupções INT0 e INT1 por transição. INT1 tem prioridade alta Laço infinito aguardando interrupção

50 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 50 Prof. José Wilson Lima Nerys 50 Microprocessadores Programa rotaciona Leds conectados à porta P1. INT0 rotaciona à esquerda; INT1 rotaciona à direita. RÓTULOMNEMÔNICO ORG 00H LJMP INICIO ORG 03H LJMP ATENDE0 ORG 13H LJMP ATENDE1 ORG 30H INICIO:MOV SP, #2FH MOV IE, #85H MOV TCON, #05H SJMP $ RÓTULOMNEMÔNICO ATENDE0:PUSH ACC MOV A,#01H V1:MOV P1,A RL A LCALL ATRASO CJNE A,#01H,V1 POP ACC RETI RÓTULOMNEMÔNICO ATENDE1:PUSH ACC MOV A,#80H V2:MOV P1,A LCALL ATRASO RR A CJNE A,#80H,V2 POP ACC RETI ATRASO:MOV R0,#250 V3:MOV R1,#250 DJNZ R1, $ DJNZ R0, V3 RET END Exemplos Habilita Interrupções INT0 e INT1 por transição Laço infinito aguardando interrupção

51 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 51 Prof. José Wilson Lima Nerys 51 Microprocessadores RÓTULOMNEMÔNICO 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 IP,#04H SJMP $ RÓTULOMNEMÔNICO ATENDE0:PUSH ACC MOV A,#01H V1:MOV P1,A RL A LCALL ATRASO CJNE A,#01H,V1 POP ACC RETI RÓTULOMNEMÔNICO ATENDE1:PUSH ACC MOV A,#80H V2:MOV P1,A LCALL ATRASO RR A CJNE A,#80H,V2 POP ACC RETI ATRASO:MOV R0,#250 V3:MOV R1,#250 DJNZ R1, $ DJNZ R0, V3 RET END Exemplos Habilita Interrupções INT0 e INT1 por transição. INT1 tem prioridade alta Laço infinito aguardando interrupção Programa rotaciona Leds conectados à porta P1. INT0 rotaciona à esquerda; INT1 rotaciona à direita (com prioridade alta).

52 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 52 Prof. José Wilson Lima Nerys 52 Microprocessadores AulaDataConteúdo 905/05 (Qui)Instruções básicas do microcontrolador 8051 1010/05 (Ter)Programação usando o assembly do 8051 1112/05 (Qui)Programação usando o assembly do 8051 1217/05 (Ter)Princípio de funcionamento das interrupções do 8051 1319/05 (Qui)Programação com e sem interrupções 24/05 (Ter)Feriado Local – Padroeira de Goiânia 26/05 (Qui)Feriado Nacional – Corpus Christi 1431/05 (Ter)Programação do 8051 com e sem interrupções 1502/06 (Qui)Programação do 8051 com e sem interrupções 1607/06 (Ter)Princípio de funcionamento dos temporizadores do microcontrolador 8051 1709/06 (Qui)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1814/06 (Ter)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1916/06 (Qui)Princípio de funcionamento da comunicação serial 21/06 (Ter)Espaço das Profissões 2023/06 (Qui)Programação utilizando a comunicação serial 2128/06 (Ter)Programação utilizando a comunicação serial 2230/06 (Qui) Prova 2 – conteúdo das aulas 9 a 21 (interrupções, temporizadores e serial do 8051)

53 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 53 Prof. José Wilson Lima Nerys 53 Microprocessadores Programa rotaciona Motor de Passo conectado ao nibble inferior da porta P1. INT0 rotaciona para a esquerda; INT1 rotaciona para a direita. RÓTULOMNEMÔNICO 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,#11H SJMP $ RÓTULOMNEMÔNICO ATENDE0:PUSH ACC MOV R7,#18 V1:MOV P1,A RL A LCALL ATRASO DJNZ R7,V1 POP ACC RETI RÓTULOMNEMÔNICO ATENDE1:PUSH ACC MOR R7,#36 V2:MOV P1,A RR A LCALL ATRASO DJNZ R7,V2 POP ACC RETI ATRASO:MOV R0,#250 V3:MOV R1,#250 DJNZ R1, $ DJNZ R0, V3 RET END Exemplos Habilita Interrupções INT0 e INT1 por transição Laço infinito aguardando interrupção São 18 passos de 5º Total: 90º

54 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 54 Prof. José Wilson Lima Nerys 54 Microprocessadores 54 RótuloMnemônico ORG 00H LJMP INICIO ORG 03H LJMP MAIOR ORG 13H LJMP MENOR INT0 mostra em P1 maior valor de uma Tabela. INT1 mostra o menor valor RótuloMnemônico ORG 30H INICIO:MOV SP,#2FH MOV IE,#85H MOV TCON,#05H MOV DPTR,#TABELA V1:MOV R7,#00H MOV R0,#00H MOV R1,#0FFH SJMP V1

55 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 55 Prof. José Wilson Lima Nerys 55 Microprocessadores 55 RótuloMnemônico MAIOR:MOV A,R7 MOVC A,@A+DPTR CJNE A,#0FFH,V2 MOV P1,R0 RETI V2:CLR CY MOV B,A SUBB A,R0 JC V3 MOV R0,B V3:INC R7 SJMP MAIOR INT0 mostra em P1 maior valor de uma Tabela. INT1 mostra o menor valor RótuloMnemônico MENOR:MOV A,R7 MOVC A,@A+DPTR CJNE A,#0FFH,V4 MOV P1,R1 RETI V4:CLR CY MOV B,A SUBB A,R1 JNC V5 MOV R1,B V5:INC R7 SJMP MENOR RótuloDado TABELA:DB 05H DB 35H DB 12H DB 98H DB 0A1H DB 0B5H DB 5AH DB 09H DB 72H DB 40H DB 0FFH END

56 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 56 Prof. José Wilson Lima Nerys 56 Microprocessadores AulaDataConteúdo 905/05 (Qui)Instruções básicas do microcontrolador 8051 1010/05 (Ter)Programação usando o assembly do 8051 1112/05 (Qui)Programação usando o assembly do 8051 1217/05 (Ter)Princípio de funcionamento das interrupções do 8051 1319/05 (Qui)Programação com e sem interrupções 24/05 (Ter)Feriado Local – Padroeira de Goiânia 26/05 (Qui)Feriado Nacional – Corpus Christi 1431/05 (Ter)Programação do 8051 com e sem interrupções 1502/06 (Qui)Programação do 8051 com e sem interrupções 1607/06 (Ter)Princípio de funcionamento dos temporizadores do microcontrolador 8051 1709/06 (Qui)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1814/06 (Ter)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1916/06 (Qui)Princípio de funcionamento da comunicação serial 21/06 (Ter)Espaço das Profissões 2023/06 (Qui)Programação utilizando a comunicação serial 2128/06 (Ter)Programação utilizando a comunicação serial 2230/06 (Qui) Prova 2 – conteúdo das aulas 9 a 21 (interrupções, temporizadores e serial do 8051)

57 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 57 Prof. José Wilson Lima Nerys 57 Microprocessadores 57 Breve Introdução aos Conversores AD e DA ADC DAC Micro- controlador Sinal Analógico Sinal Digital Como 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. Velocidade Temperatura Tensão Corrente Pressão

58 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 58 Prof. José Wilson Lima Nerys 58 Microprocessadores 58 Conversor DA Básico de 4 bits

59 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 59 Prof. José Wilson Lima Nerys 59 Microprocessadores 59 Conversor DA Básico De 4 bits D3D3 D2D2 D1D1 D0D0 Corrente saída (V ref = 5 V e R = 5 kΩ) Fração do máximo 000000 00010.1251/15 00100.2502/15 00110.3753/15 01000.5004/15 01010.6255/15 01100.7506/15 01110.8757/15 10001.0008/15 10011.1259/15 10101.25010/15 10111.37511/15 11001.50012/15 11011.62513/15 11101.75014/15 11111.87515/15

60 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 60 Prof. José Wilson Lima Nerys 60 Microprocessadores 60 Conversor DA Básico de 4 bits máx 1 LSB 0

61 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 61 Prof. José Wilson Lima Nerys 61 Microprocessadores 61 Resolução de um DA (a)Cada degrau (menor incremento possível) 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. Resolução: É a relação entre o menor incremento possível, 1 LSB e a saída máxima. Resolução =, onde n é número de bits. No caso de n = 4  Resolução = 1/15 Resolução Percentual = Resolução  100% No caso de 4 bits  Resolução Percentual = 6.67%

62 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 62 Prof. José Wilson Lima Nerys 62 Microprocessadores 62 Resolução do DA versus Número de bits Número de bitsResolução Resolução Percentual (%) 41/156,67 81/2550,392 101/10230,09775 121/40950,02442 161/655350,000381

63 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 63 Prof. José Wilson Lima Nerys 63 Microprocessadores 63 Conversor DA com resistores em escada

64 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 64 Prof. José Wilson Lima Nerys 64 Microprocessadores 64 Conversor DAC 0808

65 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 65 Prof. José Wilson Lima Nerys 65 Microprocessadores 65 Conversor ADC Básico

66 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 66 Prof. José Wilson Lima Nerys 66 Microprocessadores 66 Conversor ADC com Aproximação Sucessiva

67 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 67 Prof. José Wilson Lima Nerys 67 Microprocessadores 67 Conversor ADC 0804 Sinais de Controle CS\  habilita o CI RD\  habilita a saída dos dados RW\  trigger Saída

68 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 68 Prof. José Wilson Lima Nerys 68 Microprocessadores 68 Diagrama de Temporização do Conversor ADC0804 Tempo de conversão aproximado: 100 µs

69 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 69 Prof. José Wilson Lima Nerys 69 Microprocessadores 69 Programa para leitura do Conversor AD RótuloInstrução CS EQU P3.4 RSEQU P3.5 RWEQU P3.6 ORG 00H LJMP INICIO ORG 30H INICIO:MOV SP,#2FH V1:LCALL LE_AD MOV P1,A SJMP V1 RótuloInstrução LE_AD:CLR CS LCALL ATRASO SETB RW LCALL ATRASO CLR RW LCALL ATRASO SETB RW ; Começa a conversão SETB CS JB P3.3,$ ; Aguarda fim de conversão CLR CS CLR RS ; Liberada dados na saída LCALL ATRASO MOV A,P2 ; Transfere resultado para A SETB RS SETB CS RET RótuloInstrução ATRASO:MOV R0,#50 DJNZ R0,$ RET END Loop infinito: Chama subrotina de Leitura do AD e mostra resultado em A Loop infinito: Aguarda sinal de fim de conversão. Pino INTR do AD conectado ao pino P3.3 do 8051

70 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 70 Prof. José Wilson Lima Nerys 70 Microprocessadores WR\ INTR RS\ CS\ Temporização no problema anterior Início da conversão Fim da conversão Leitura habilitada (libera dados na saída)

71 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 71 Prof. José Wilson Lima Nerys 71 Microprocessadores 71 Programa 2: Conversor AD usando interrupção 71 RótuloInstrução ORG 00H LJMP INICIO ORG 03H MOV A,P2 RETI ORG 30H INICIO:MOV SP,#2FH MOV IE,#81H MOV TCON,#01H V1:MOV P1,A SJMP V1 END Loop infinito: O conteúdo de A é copiado na porta P1 (Leds). A atualização de A ocorre a cada final de conversão, através da interrupção externa zero. A cada fim de conversão do conversor AD, um sinal de pedido de interrupção é enviado ao 8051, através do pino P3.2 (interrupção zero). Assim, o processamento desvia para o endereço 03H, onde o resultado da conversão (disponibilizado na porta P2) é transferido para A Interrupção externa zero é habilitada por transição. O conversor AD está operando de forma independente e ininterrupta. O sinal de final de conversão é usado para dar início à próxima conversão.

72 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 72 Prof. José Wilson Lima Nerys 72 Microprocessadores 72 Uso do Teclado com Interrupção (Decodificador de teclado: 74C922) Sinal alto (saída) quando a conversão acaba Sinal baixo (entrada) para liberar o resultado na saída A B C D Pedido de interrupção para o 8051 (na transição de alto para baixo) A saída (AD3, AD2, AD1, AD0) do decodificador 74C922 é conecto ao nibble inferior da Porta P2

73 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 73 Prof. José Wilson Lima Nerys 73 Microprocessadores 73 Uso do Teclado com Interrupção (Decodificador de teclado: 74C922) Loop infinito: Mostra o conteúdo de A, que é atualizado, através da interrupção externa 1, a cada vez que o teclado é pressionado interrupção externa 1 por transição Endereço da interrupção externa 1 O conteúdo da porta P2 é copiado no acumulador. A instrução ANL A,#0FH (AND) elimina o nibble superior da leitura de P2. RótuloInstrução ORG 00H LJMP INICIO ORG 13H MOV A,P2 ANL A,#0FH RETI ORG 30H INICIO:MOV SP,#2FH MOV IE,#84H MOV TCON,#04H V1:MOV P1,A SJMP V1 END

74 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 74 Prof. José Wilson Lima Nerys 74 Microprocessadores 74 Uso do Teclado com Interrupção (Decodificador de teclado: 74C922) RótuloInstrução ORG 00H LJMP INICIO ORG 13H LJMP LE_TECLADO ORG 30H INICIO:MOV SP,#2FH MOV IE,#84H MOV TCON,#04H CLR F0 V1:MOV P1,A SJMP V1 RótuloInstrução LE_TECLADO:JB F0,NIBBLE2 MOV A,P2 ANL A,#0FH SWAP A MOV B,A SETB F0 RETI NIBBLE2:MOV A,P2 ANL A,#0FH ORL A,B CLR F0 RETI END Leitura do dígito superior do número de dois dígitos. O dado lido de P2 passa por uma operação AND para eliminar o nibble superior (lixo). A instrução SWAP A transfere o dado lido (nibble inferior) para o nibble superior. O resultado é guardado em B. A flag F0 é setada para direcionar a próxima interrupção para NIBBLE2. Nesse programa o Teclado é usado para “entrar” com um número de dois dígitos. Leitura do dígito inferior do número de dois dígitos. O dado lido de P2 passa por uma operação AND para eliminar o nibble superior (lixo). A instrução OR entre junta conteúdo de A (dígito inferior) com o conteúdo de B (dígito superior). A flag F0 é zerada para direcionar a próxima interrupção para a primeira parte dessa subrotina. Loop infinito: Mostra o conteúdo de A, que é atualizado, através da interrupção externa 1, a cada vez que o teclado é pressionado

75 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 75 Prof. José Wilson Lima Nerys 75 Microprocessadores AulaDataConteúdo 905/05 (Qui)Instruções básicas do microcontrolador 8051 1010/05 (Ter)Programação usando o assembly do 8051 1112/05 (Qui)Programação usando o assembly do 8051 1217/05 (Ter)Princípio de funcionamento das interrupções do 8051 1319/05 (Qui)Programação com e sem interrupções 24/05 (Ter)Feriado Local – Padroeira de Goiânia 26/05 (Qui)Feriado Nacional – Corpus Christi 1431/05 (Ter)Programação do 8051 com e sem interrupções 1502/06 (Qui)Princípio de funcionamento dos temporizadores do microcontrolador 8051 1607/06 (Ter)Princípio de funcionamento dos temporizadores do microcontrolador 8051 1709/06 (Qui)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1814/06 (Ter)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1916/06 (Qui)Princípio de funcionamento da comunicação serial 21/06 (Ter)Espaço das Profissões 2023/06 (Qui)Programação utilizando a comunicação serial 2128/06 (Ter)Programação utilizando a comunicação serial 2230/06 (Qui) Prova 2 – conteúdo das aulas 9 a 21 (interrupções, temporizadores e serial do 8051)

76 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 76 Prof. José Wilson Lima Nerys 76 Microprocessadores O 8051 tem 2 temporizadores/contadores de 16 bits que podem operar de 4 modos distintos: Modo 0  Contador/Temporizador de 8 bits com divisor de frequência de até 32 vezes. Pode contar até 8192 (32  255). Modo 1  Contador/Temporizador de 16 bits. Pode contar até 65535. Modo 2  2 contadores/temporizadores de 8 bits com recarga automática. Modo 3  2 contadores/temporizadores independentes de 8 bits. Temporizadores O microcontrolador AT89S8252 possui 3 temporizadores.

77 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 77 Prof. José Wilson Lima Nerys 77 Microprocessadores Temporizadores TMOD = G1C/T1M11M10G0C/T0M01M00 Os registradores que comandam o Contador-Temporizador são: TCON =TF1TR1TF0TR0 IE1IT1IE0IT0 Registrador de Controle: TCON (Timer Control) = Registrador 88h Registrador do Temporizador: TMOD (Timer Mode) = Registrador 89h 00Modo 0 01Modo 1 10Modo 2 11Modo 3 00Modo 0 01Modo 1 10Modo 2 11Modo 3 Temporizador zero Temporizador 1

78 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 78 Prof. José Wilson Lima Nerys 78 Microprocessadores 78 Temporizadores TMOD = G1C/T1M11M10G0C/T0M01M00 G  Gate  Sendo 0, o disparo do temporizador/contador é interno, através de TR. Sendo 1, o disparo pode ser através de TR ou através do pino externo P3.2 (INT0 \ ) ou P3.3 (INT1 \ ). C/T \  Sendo 0, a operação é como temporizador, onde a freqüência de operação é 1/12 da frequência do cristal oscilador. Sendo 1, a frequência é determinada por um componente externo, através do pino P3.4 (T0) ou P3.5 (T1). Registrador do Temporizador: TMOD (Timer Mode) = Registrador 89h

79 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 79 Prof. José Wilson Lima Nerys 79 Microprocessadores 79 Temporizadores TCON =TF1TR1TF0TR0 IE1IT1IE0IT0 TR  Quando G = 0, fazendo-se TR = 1, o temporizador inicia a contagem a partir do valor armazenado em TH e TL. TR = 0 para o temporizador. TF  A cada fim de contagem TF é setado (TF = 1) pelo hardware. Se a interrupção do temporizador estiver habilitada, ocorre o desvio para o endereço correspondente, 0Bh para o temporizador 0 e 1Bh para o temporizador 1. Registrador de Controle: TCON (Timer Control) = Registrador 88h

80 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 80 Prof. José Wilson Lima Nerys 80 Microprocessadores 80 Temporizadores Lógica para habilitar contagem

81 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 81 Prof. José Wilson Lima Nerys 81 Microprocessadores 81 O bit C/T\ do registrador TMOD define se o funcionamento é como contador (C/T\ = 1), ou como temporizador (C/T\ = 0). Como temporizador, o clock é interno, vindo do oscilador. A frequência é 1/12 da frequê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. Temporizadores

82 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 82 Prof. José Wilson Lima Nerys 82 Microprocessadores 82 EndereçoInstrução ORG 00H LJMP INICIO ORG 30H INICIO:MOV SP,#2FH MOV TMOD,#01H SETB TR0 SJMP $ END

83 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 83 Prof. José Wilson Lima Nerys 83 Microprocessadores 83 Temporizadores TMOD = 00000001 Exemplo 1: Contagem ininterrupta de 0 a 65535 do temporizador 0 no modo 1 e de 0 a 8192 do temporizador 1 no modo 0. InstruçãoDescrição MOV TMOD,#01H Seta o Temporizador 0 no modo 1 e o Temporizador 1 no modo 0. SETB TR0 Dispara o Temporizador 0. SETB TR1 Dispara o Temporizador 1.

84 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 84 Prof. José Wilson Lima Nerys 84 Microprocessadores 84 Temporizadores Exemplo 2: Contagem do temporizador 0 no modo 1 e do temporizador 1 no modo 0, a partir de 2050 H para a primeira contagem. InstruçãoDescrição MOV TMOD,#01HSeta o Temporizador 0 no modo 1. Conta até FFFF H (65535). MOV TH0,#20H Setam início da contagem para 2050H. A partir da segunda contagem começa em 0000H. MOV TL0,#50H SETB TR0 Dispara o Temporizador 0. SETB TR1 Dispara o Temporizador 1.

85 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 85 Prof. José Wilson Lima Nerys 85 Microprocessadores 85 Temporizadores Exemplo 3: Contagem do temporizador 1 no modo 2, com recarga de 7FH. InstruçãoDescrição MOV TMOD,#20HSeta o Temporizador 1 no modo 2, com recarga automática. MOV TH0,#7FH Define valor da recarga para 7FH. SETB TR1 Dispara o Temporizador 1

86 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 86 Prof. José Wilson Lima Nerys 86 Microprocessadores 86 Temporizadores Exemplo 4: Contagem do temporizador 0 com interrupção. InstruçãoDescrição MOV TMOD,#01HSeta o Temporizador 0 no modo 1, contagem até 65535. MOV IE,#82H Habilita a interrupção do Temporizador 0. SETB TR0 Dispara o Temporizador 0. Exemplo 5: Acrescentar uma contagem hexadecimal decrescente, de forma que o microcontrolador faça duas tarefas simultâneas: a contagem e a operação do temporizador. Obs: A cada fim de contagem o processamento é desviado para o endereço 0BH, do temporizador zero.

87 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 87 Prof. José Wilson Lima Nerys 87 Microprocessadores 87 Temporizadores Exemplo 6: Contagem decrescente na P1, através de INT0 e crescente na P2, através do temporizador 0, com prioridade 1. InstruçãoDescrição MOV TMOD,#01HSeta o Temporizador 0 no modo 1, contagem até 65535. MOV IE,#83H Habilita as interrupções do Temporizador 0 e a Externa 0. MOV TCON,#01H Seta INT0 por transição MOV IP,#02H Estabelece Prioridade 1 para o Temporizador 0. SETB TR0 Dispara o Temporizador 0. SJMP $ Aguarda interrupções num loop infinito.

88 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 88 Prof. José Wilson Lima Nerys 88 Microprocessadores 88 RÓTULOMNEMÔNICO ORG 00H LJMP INICIO ORG 30H INICIO:MOV SP, #2FH MOV TMOD,#01H V1: CPL P1.0 LCALL ATRASO SJMP V1 RÓTULOMNEMÔNICO ATRASO:MOV R0,#20 V2:MOV TH0,#3CH MOV TL0,#0AFH SETB TR0 ESPERA:JNB TF0, ESPERA CLR TF0 DJNZ R0, V2 CLR TR0 RET END Programa com uma subrotina de atraso de tempo com temporizador Onda quadrada em P1.0 Cristal oscilador: 12 MHz Contador conta de 15.535 até 65.535 (50.000 pulsos) São 20 contagens de 50 ms (tempo total: 1 s) Espera o final de cada contagem do temporizador Limpa a flag que indica fim de contagem Decrementa R0; se não der zero, volta para nova contagem de 50 ms Dispara o temporizador Para o temporizador

89 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 89 Prof. José Wilson Lima Nerys 89 Microprocessadores AulaDataConteúdo 905/05 (Qui)Instruções básicas do microcontrolador 8051 1010/05 (Ter)Programação usando o assembly do 8051 1112/05 (Qui)Programação usando o assembly do 8051 1217/05 (Ter)Princípio de funcionamento das interrupções do 8051 1319/05 (Qui)Programação com e sem interrupções 24/05 (Ter)Feriado Local – Padroeira de Goiânia 26/05 (Qui)Feriado Nacional – Corpus Christi 1431/05 (Ter)Programação do 8051 com e sem interrupções 1502/06 (Qui)Princípio de funcionamento dos temporizadores do microcontrolador 8051 1607/06 (Ter)Princípio de funcionamento dos temporizadores do microcontrolador 8051 1709/06 (Qui)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1814/06 (Ter)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1916/06 (Qui)Princípio de funcionamento da comunicação serial 21/06 (Ter)Espaço das Profissões 2023/06 (Qui)Programação utilizando a comunicação serial 2128/06 (Ter)Programação utilizando a comunicação serial 2230/06 (Qui) Prova 2 – conteúdo das aulas 9 a 21 (interrupções, temporizadores e serial do 8051)

90 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 90 Prof. José Wilson Lima Nerys 90 Microprocessadores 90 Onda quadrada com meio período de 1 s (subrotina de atraso de 1 s) – programa: Onda_Quad_7_6.asm Cronômetro com subrotina de 1 s – programa: CRONO1s_7_6.asm Relógio com subrotina de 1 s – programa: Relogio1s_7_6.asm Onda quadrada com interrupção e tempo máximo do temporizador – programa: Onda_Quad_Interrup_7_6.asm Onda quadrada com interrupção e tempo parcial do temporizador (50 ms) Onda quadrada com interrupção e meio período de 1 s – programa: Onda_Quad_Inter_1s_7_6.asm Motor CC girando 10 s para a direita; para 5 s e gira 10 s para esquerda Motor de passo girando 10 s para a direita; 5 s parado e 10 s para esquerda

91 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 91 Prof. José Wilson Lima Nerys 91 Microprocessadores 91 ; Onda quadrada com meio período de 1 s ; Cristal oscilador: 12 MHz ORG 00H LJMP INICIO ORG 30H INICIO:MOV SP,#2FH MOV TMOD,#01H; Temporizador zero no modo 1 MOV R0,#20; Número de repetições de contagem do temporizador (contador) SETB TR0; Dispara temporizador zero V1:MOV TH0,#3CH MOV TL0,#0AFH; Recarga do Temporizador zero no modo 1: 3CAFH JNB TF0,$; Aguarda final da contagem de 50 ms CLR TF0; Limpa flag de final de contagem DJNZ R0,V1; Verifica se já foram 20 contagens de 50 ms CPL P1.0; Complementa P1.0, para gerar a onda quadrada MOV R0,#20; Recarrega contador SJMP V1; Retorna para V1 END Onda_Quad_7_6.asm

92 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 92 Prof. José Wilson Lima Nerys 92 Microprocessadores 92 ; Onda quadrada com meio período de 1 s, usando interrupção ; Cristal oscilador: 12 MHz ORG 00H LJMP INICIO ORG 0BH LJMP V1 ORG 30H INICIO: MOV SP,#2FH MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0AFH MOV IE,#82H SETB TR0 SJMP $ V1:DJNZ R0,V2 CPL P1.0; onda quadrada MOV R0,#20V2: MOV TH0,#3CH MOV TL0,#0AFH RETI END Onda_Quad_Inter_1s_7_6.asm

93 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 93 Prof. José Wilson Lima Nerys 93 Microprocessadores AulaDataConteúdo 905/05 (Qui)Instruções básicas do microcontrolador 8051 1010/05 (Ter)Programação usando o assembly do 8051 1112/05 (Qui)Programação usando o assembly do 8051 1217/05 (Ter)Princípio de funcionamento das interrupções do 8051 1319/05 (Qui)Programação com e sem interrupções 24/05 (Ter)Feriado Local – Padroeira de Goiânia 26/05 (Qui)Feriado Nacional – Corpus Christi 1431/05 (Ter)Programação do 8051 com e sem interrupções 1502/06 (Qui)Princípio de funcionamento dos temporizadores do microcontrolador 8051 1607/06 (Ter)Princípio de funcionamento dos temporizadores do microcontrolador 8051 1709/06 (Qui)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1814/06 (Ter)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1916/06 (Qui)Princípio de funcionamento da comunicação serial 21/06 (Ter)Espaço das Profissões 2023/06 (Qui)Programação utilizando a comunicação serial 2128/06 (Ter)Programação utilizando a comunicação serial 2230/06 (Qui) Prova 2 – conteúdo das aulas 9 a 21 (interrupções, temporizadores e serial do 8051)

94 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 94 Prof. José Wilson Lima Nerys 94 Microprocessadores 94 Temporizador no modo 2 – recarga automática (Temp_9_6A) Modo 2 com interrupção – complementa TH Modo 2 com interrupção – complementa TH e P1.0 PWM fixo para acionamento de motor CC Incrementa TH e complementa P1.0 Aciona motor CC com velocidade variável Aciona motor CC com velocidade variável e mudança de sentido de rotação

95 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 95 Prof. José Wilson Lima Nerys 95 Microprocessadores 95 Trabalhos opcionais (Valor: 2,0) 1.Código para elevador – elevador permanece no térreo. Descola para o pavimento solicitado; espera 10 s e retorna para o térreo 2.Código para elevador – qualquer chave pressionada – o elevador desloca-se até o último pavimento e retorna para o térreo. Para 5 s em cada pavimento na subida e na descida 3.Código para carro – desloca-se para a frente até encontrar um obstáculo; desloca-se de ré durante 5 s. 4.Código para medir tempo de queda de um objeto dentro de um tubo de 1m de comprimento. Mostrar tempo em display LCD

96 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 96 Prof. José Wilson Lima Nerys 96 Microprocessadores AulaDataConteúdo 905/05 (Qui)Instruções básicas do microcontrolador 8051 1010/05 (Ter)Programação usando o assembly do 8051 1112/05 (Qui)Programação usando o assembly do 8051 1217/05 (Ter)Princípio de funcionamento das interrupções do 8051 1319/05 (Qui)Programação com e sem interrupções 24/05 (Ter)Feriado Local – Padroeira de Goiânia 26/05 (Qui)Feriado Nacional – Corpus Christi 1431/05 (Ter)Programação do 8051 com e sem interrupções 1502/06 (Qui)Princípio de funcionamento dos temporizadores do microcontrolador 8051 1607/06 (Ter)Princípio de funcionamento dos temporizadores do microcontrolador 8051 1709/06 (Qui)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1814/06 (Ter)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1916/06 (Qui)Princípio de funcionamento da comunicação serial 21/06 (Ter)Espaço das Profissões 2023/06 (Qui)Programação utilizando a comunicação serial 2128/06 (Ter)Programação utilizando a comunicação serial 2230/06 (Qui) Prova 2 – conteúdo das aulas 9 a 21 (interrupções, temporizadores e serial do 8051)

97 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 97 Prof. José Wilson Lima Nerys 97 Microprocessadores 97 Incrementa TH e complementa P1.0 Incrementa e decrementa TH e complementa P1.0 Geração de PWM fixo Aciona motor CC com velocidade variável Aciona motor CC com velocidade variável e mudança de sentido de rotação Geração de taxa de transmissão para comunicação serial

98 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 98 Prof. José Wilson Lima Nerys 98 Microprocessadores AulaDataConteúdo 905/05 (Qui)Instruções básicas do microcontrolador 8051 1010/05 (Ter)Programação usando o assembly do 8051 1112/05 (Qui)Programação usando o assembly do 8051 1217/05 (Ter)Princípio de funcionamento das interrupções do 8051 1319/05 (Qui)Programação com e sem interrupções 24/05 (Ter)Feriado Local – Padroeira de Goiânia 26/05 (Qui)Feriado Nacional – Corpus Christi 1431/05 (Ter)Programação do 8051 com e sem interrupções 1502/06 (Qui)Princípio de funcionamento dos temporizadores do microcontrolador 8051 1607/06 (Ter)Princípio de funcionamento dos temporizadores do microcontrolador 8051 1709/06 (Qui)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1814/06 (Ter)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1916/06 (Qui)Princípio de funcionamento da comunicação serial 21/06 (Ter)Espaço das Profissões 2023/06 (Qui)Programação utilizando a comunicação serial 2128/06 (Ter)Programação utilizando a comunicação serial 2230/06 (Qui) Prova 2 – conteúdo das aulas 9 a 21 (interrupções, temporizadores e serial do 8051)

99 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 99 Prof. José Wilson Lima Nerys 99 Microprocessadores AulaDataConteúdo 905/05 (Qui)Instruções básicas do microcontrolador 8051 1010/05 (Ter)Programação usando o assembly do 8051 1112/05 (Qui)Programação usando o assembly do 8051 1217/05 (Ter)Princípio de funcionamento das interrupções do 8051 1319/05 (Qui)Programação com e sem interrupções 24/05 (Ter)Feriado Local – Padroeira de Goiânia 26/05 (Qui)Feriado Nacional – Corpus Christi 1431/05 (Ter)Programação do 8051 com e sem interrupções 1502/06 (Qui)Princípio de funcionamento dos temporizadores do microcontrolador 8051 1607/06 (Ter)Princípio de funcionamento dos temporizadores do microcontrolador 8051 1709/06 (Qui)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1814/06 (Ter)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1916/06 (Qui)Princípio de funcionamento da comunicação serial 21/06 (Ter)Espaço das Profissões 2023/06 (Qui)Programação utilizando a comunicação serial 2128/06 (Ter)Programação utilizando a comunicação serial 2230/06 (Qui) Prova 2 – conteúdo das aulas 9 a 21 (interrupções, temporizadores e serial do 8051)

100 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 100 Prof. José Wilson Lima Nerys 100 Microprocessadores 100 Rotação de Leds via recepção serial – programa: Serial_Leds_22_6.asm Enviar mensagem via serial – programa: Serial_MSG_23_6.asm Mensagem do Computador para o Display LCD – programa: Serial_LCD_22_6.asm Acionamento de motor de passo via serial – programa: Serial_Passo_22_6.asm Enviar mensagem de Estado – programa: Serial_estado_22_6.asm

101 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 101 Prof. José Wilson Lima Nerys 101 Microprocessadores 101 RótuloMnemônico ORG 00H LJMP INICIO ORG 23H CLR RI MOV R0,SBUF RETI ORG 30H INICIO: MOV SP,#2FH MOV SCON,#40H MOV IE,#90H MOV TMOD,#20H MOV TL1,#0FDH MOV TH1,#0FDH MOV R0,#00H MOV A,#01H SETB TR1 SETB REN RótuloMnemônico V2:CJNE R0,#44H,V1 LJMP DIREITA V1: CJNE R0,#45H,V2 LJMP ESQUERDA DIREITA:MOV P1,A RR A LCALL ATRASO SJMP V2 ESQUERDA:MOV P1,A RL A LCALL ATRASO SJMP V2 ATRASO:MOV R7,#200 V3:MOV R6,#250 DJNZ R6,$ DJNZ R7,V3 RET END Rotação de Leds via serial Serial_Leds_22_6.asm Cada valor recebido via serial é transferido para R0 A flag RI é zerada, para o recebimento do próximo valor O processamento desvia para o endereço 23H porque a interrupção da serial foi habilitada

102 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 102 Prof. José Wilson Lima Nerys 102 Microprocessadores 102 ; Transmissão de mensagem via serial. Cristal: 11.0592 MHz. Taxa de transmissão: 4800 bps ORG 00H LJMP INICIO ORG 30H INICIO: MOV SP,#2FH; Posição inicial da Pilha: 2FH MOV SCON,#40H; Serial no modo 1: assíncrona de 8 bits MOV TMOD,#20H; Timer 1 no modo 2 (recarga automática) MOV TH1,#0FAH; Valor da recarga: FAH  baud rate: 4800 bps SETB TR1; Dispara Timer 1 MOV DPTR,#MSG; DPTR assume o valor do endereço inicial da tabela MSG V2:MOV R7,#00H; Offset para leitura da MSG assume valor inicial 00H V3:MOV A,R7; Acumulador recebe o valor atual do Offset MOVC A,@A+DPTR; Acumulador recebe o conteúdo da posição A+DPTR da MSG CJNE A,#0FFH,V1; Verifica se A = FFH (fim da MSG). Se não for, desvia para V1 SJMP V2; Retorna para V2 após cada fim de MSG V1:MOV SBUF,A; Transfere de A para SBUF o valor ser transmitido via serial JNB TI,$; Aguarda final da transmissão do conteúdo de SBUF CLR TI; Limpa a flag TI, de transmissão serial INC R7; Incrementa o valor do Offset SJMP V3; Retorna para V3, para ler o próximo caractere de MSG MSG:DB ' MICRO 2016 ', 0DH, 0FFH MSG1:DB 4DH, 49H, 43H, 52H, 4FH, 20H, 32H, 30H, 31H, 37H, 0DH, 0FFH END Serial_MSG_23_6.asm As mensagens MSG e MSG1 são equivalentes

103 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 103 Prof. José Wilson Lima Nerys 103 Microprocessadores 103 Mensagens Computador  LCD RS EQU P3.5 RW EQU P3.6 EN EQU P3.7 DADOS EQU P0 ORG 00H LJMP INICIO ORG 23H CLR RI MOV A,SBUF MOV P1,A LCALL TEXTO_WR RETI ORG 30H INICIO:MOV SP,#2FH MOV SCON,#40H MOV IE,#90H MOV TMOD,#20H MOV TL1,#0FDH MOV TH1,#0FDH MOV R7,#0FFH SETB TR1 SETB REN LCALL INICIA SJMP $ INICIA:MOV A,#38H LCALL INSTR_WR MOV A,#38H LCALL INSTR_WR MOV A,#0EH LCALL INSTR_WR MOV A,#06H LCALL INSTR_WR MOV A,#01H LCALL INSTR_WR RET INSTR_WR: SETB EN CLR RW CLR RS MOV DADOS,A CLR EN LCALL ATRASO_LCD RET TEXTO_WR:SETB EN CLR RW SETB RS MOV DADOS,A CLR EN LCALL ATRASO_LCD RET ATRASO_LCD: MOV R4,#10 V6:MOV R5,#80 DJNZ R5,$ DJNZ R4,V6 RET END Serial_LCD_22_6.asm

104 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 104 Prof. José Wilson Lima Nerys 104 Microprocessadores 104 RótuloMnemônico ORG 00H LJMP INICIO ORG 23H CLR RI MOV R0,SBUF RETI ORG 30H INICIO: MOV SP,#2FH MOV SCON,#40H MOV IE,#90H MOV TMOD,#20H MOV TL1,#0FDH MOV TH1,#0FDH MOV R0,#00H MOV A,#11H SETB TR1 SETB REN RótuloMnemônico V2:CJNE R0,#44H,V1 LJMP DIREITA V1: CJNE R0,#45H,V2 LJMP ESQUERDA DIREITA:MOV P1,A RR A LCALL ATRASO SJMP V2 ESQUERDA:MOV P1,A RL A LCALL ATRASO SJMP V2 ATRASO:MOV R7,#200 V3:MOV R6,#250 DJNZ R6,$ DJNZ R7,V3 RET END Motor de Passo via serial Serial_Passo_22_6.asm

105 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 105 Prof. José Wilson Lima Nerys 105 Microprocessadores 105 CHAVE EQU P3.3; CHAVE (P3.3) – MOTOR LIGA (P3.3 = 0) OU DESLIGA (P3.3 = 1) STATUS EQU 22H; registrador que guarda o estado das chaves M0 EQU P2.2; IN0 do driver para acionamento do motor CC M1 EQU P2.3; IN1 do driver para acionamento do motor CC ORG 00H LJMP INICIO ORG 30H INICIO:MOV SP,#2FH; Pilha no endereço inicial 2Fh MOV TMOD,#20H; Temporizador 1 no modo 2 (recarga automática) para o gerar o baud rate MOV SCON,#40H; SCON = 0100 0000 – Serial no modo 1 MOV TH1,#0FAH; Recarga para baud rate de 4800 bps MOV TL1,#0FAH; Valor inicial de contagem, desde a primeira contagem SETB TR1; Dispara temporizador 1 MOV R7,#00H; Contador (offset) para leitura das mensagens a serem enviadas via serial MOV STATUS,#00H; Zera o registrador de STATUS para eliminar a possibilidade de “lixo” CLR M0 CLR M1; Motor CC parado V1:MOV A,P3; Leitura da porta P3 (onde está a chave que liga e desliga o motor) ANL A,#00001000B; Faz uma operação AND entre A e 08H, para isolar o pino P3.3 XRL A,STATUS; Verifica se houve alteração no STATUS JZ V1; Se A XOR STATUS for zero, não houve mudança, então volta para V1 (A=0 e Z=1) ; Se houve mudança na posição da CHAVE, atualiza a situação e o STATUS JNB CHAVE,LIGA_M; Se CHAVE = 0, liga o motor MOV DPTR,#M_OFF; DPTR aponta para o início da mensagem de motor desligado LCALL SERIAL; Chama subrotina para mostrar a mensagem de motor desligado CLR M0 CLR M1; Motor desligado SETB STATUS.3; Atualiza registrador de STATUS com valor 1 na posição STATUS.3 SJMP V1 Serial_estado_22_6.asm Transfere conteúdo de P3 para A, isola o pino P3.3 e verifica se houve mudança de estado

106 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 106 Prof. José Wilson Lima Nerys 106 Microprocessadores 106 LIGA_M:MOV DPTR,#M_ON; DPTR aponta para o início da mensagem de motor ligado LCALL SERIAL; Chama subrotina para mostrar a mensagem de motor ligado SETB M0 CLR M1; Motor ligado CLR STATUS.3; Atualiza registrador de STATUS com valor 0 na posição STATUS.3 SJMP V1 SERIAL:MOV A,R7; Transfere para A o valor do offset MOVC A,@A+DPTR; A recebe o conteúdo da tabela CJNE A,#0FFH,ENVIA; Verifica se já chegou ao final da tabela MOV R7,#00H; Se a tabela já acabou, faz R7 = 0 RET; Retorna da subrotina SERIAL ENVIA:MOV SBUF,A; Envia conteúdo da tabela/mensagem para o computador JNB TI,$; Aguarda terminar a transmissão CLR TI; limpa flag de transmissão INC R7; incrementa R7 (offset para leitura da tabela / mensagem) SJMP SERIAL; retorna para SERIAL M_ON:DB 'MOTOR DE CORRENTE CONTINUA LIGADO', 0DH, 0DH, 0FFH M_OFF:DB 'MOTOR DE CORRENTE CONTINUA DESLIGADO', 0DH, 0DH, 0FFH END Continuação do programa Serial_estado_22_6.asm

107 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 107 Prof. José Wilson Lima Nerys 107 Microprocessadores AulaDataConteúdo 905/05 (Qui)Instruções básicas do microcontrolador 8051 1010/05 (Ter)Programação usando o assembly do 8051 1112/05 (Qui)Programação usando o assembly do 8051 1217/05 (Ter)Princípio de funcionamento das interrupções do 8051 1319/05 (Qui)Programação com e sem interrupções 24/05 (Ter)Feriado Local – Padroeira de Goiânia 26/05 (Qui)Feriado Nacional – Corpus Christi 1431/05 (Ter)Programação do 8051 com e sem interrupções 1502/06 (Qui)Princípio de funcionamento dos temporizadores do microcontrolador 8051 1607/06 (Ter)Princípio de funcionamento dos temporizadores do microcontrolador 8051 1709/06 (Qui)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1814/06 (Ter)Programação utilizando interrupções e temporizadores do microcontrolador 8051 1916/06 (Qui)Princípio de funcionamento da comunicação serial 21/06 (Ter)Espaço das Profissões 2023/06 (Qui)Programação utilizando a comunicação serial 2128/06 (Ter)Programação utilizando a comunicação serial 2230/06 (Qui) Prova 2 – conteúdo das aulas 9 a 21 (interrupções, temporizadores e serial do 8051)

108 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 108 Prof. José Wilson Lima Nerys 108 Microprocessadores 108 Rotaciona Leds para esquerda (E), direita (D) e para com (P) Aciona Lâmpada e Motor CC – envia estado via serial

109 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 109 Prof. José Wilson Lima Nerys 109 Microprocessadores 109 RótuloMnemônico ORG 00H LJMP INICIO ORG 23H CLR RI MOV R0,SBUF RETI ORG 30H INICIO: MOV SP,#2FH MOV SCON,#40H MOV IE,#90H MOV TMOD,#20H MOV TL1,#0FDH MOV TH1,#0FDH MOV R0,#00H MOV A,#01H SETB TR1 SETB REN RótuloMnemônico V2:CJNE R0,#44H,V1 MOV B,#44H SJMP DIREITA V1: CJNE R0,#45H,V4 MOV B,#45H SJMP ESQUERDA V4:CJNE R0,#50H,V5 SJMP V2 V5:MOV R0,B SJMP V2 DIREITA:MOV P1,A RR A LCALL ATRASO SJMP V2 ESQUERDA:MOV P1,A RL A LCALL ATRASO SJMP V2 END Rotação de Leds via serial Serial_Leds_28_6.asm

110 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 110 Prof. José Wilson Lima Nerys 110 Microprocessadores 110 ; Aciona vários componentes e envia status via serial CH1EQU P3.5; Liga Lâmpada (CH1 = 0) / Desliga Lâmpada (CH1 = 1) CH3EQU P3.7; Liga Motor CC (CH3 = 0) / Desliga Motor CC (CH3 = 1) STATUSEQU 22H; registrador que guarda o estado das chaves M0 EQU P1.0; IN0 do driver para acionamento do motor CC M1 EQU P1.1; IN1 do driver para acionamento do motor CC LAMPEQU P1.7; Lâmpada Ligada (LAMP = 1) ORG 00H LJMP INICIO ORG 30H INICIO:MOV SP,#2FH; Pilha no endereço inicial 2Fh MOV TMOD,#20H; Temporizador 1 no modo 2 (recarga automática) para o gerar o baud rate MOV SCON,#40H; SCON = 0100 0000 – Serial no modo 1 MOV TH1,#0FAH; Recarga para baud rate de 4800 bps MOV TL1,#0FAH; Valor inicial de contagem, desde a primeira contagem SETB TR1; Dispara temporizador 1 MOV R7,#00H; Contador (offset) para leitura das mensagens a serem enviadas via serial MOV STATUS,#00H; Zera o registrador de STATUS para eliminar a possibilidade de “lixo” CLR M0 CLR M1; Motor CC parado CLR LAMP V1:MOV A,P3; Leitura da porta P3 (onde está a chave que liga e desliga o motor) ANL A,#10100000B; Faz uma operação AND entre A e F0H, para isolar os pinos das chaves CH1 e CH3 XRL A,STATUS; Verifica se houve alteração no STATUS JZ V1; Se A XOR STATUS for zero, não houve mudança, então volta para V1 (Z=1) ; Se houve mudança na posição da CHAVE (então A=/=0 e Z=0). Atualiza a situação e o STATUS ;============= Acionamento da Lâmpada ============================ JNB CH1,LIGA_Lamp; Se CH1 = 0, liga Lâmpada MOV DPTR,#Lamp_OFF; DPTR aponta para o início da mensagem de lampada desligada LCALL SERIAL; Chama subrotina para mostrar a mensagem de lâmpada desligada CLR LAMP SETB STATUS.5; Atualiza registrador de STATUS com valor 1 na posição STATUS.5 SJMP V2 LIGA_Lamp:MOV DPTR,#Lamp_ON; DPTR aponta para o início da mensagem de Lâmpada desligado LCALL SERIAL; Chama subrotina para mostrar a mensagem de motor ligado SETB LAMP CLR STATUS.5; Atualiza registrador de STATUS com valor 0 na posição STATUS.5

111 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 111 Prof. José Wilson Lima Nerys 111 Microprocessadores 111 ;============== Acionamento do Motor CC =================== V2:JNB CH3,LIGA_M; Se CH3 = 0, liga Motor CC MOV DPTR,#M_OFF; DPTR aponta para o início da mensagem de lampada desligada LCALL SERIAL; Chama subrotina para mostrar a mensagem de motor desligado CLR M0 CLR M1; Motor desligado SETB STATUS.7; Atualiza registrador de STATUS com valor 1 na posição STATUS.7 SJMP V1 LIGA_M:MOV DPTR,#M_ON; DPTR aponta para o início da mensagem de motor ligado LCALL SERIAL; Chama subrotina para mostrar a mensagem de motor ligado SETB M0 CLR M1; Motor ligado CLR STATUS.7; Atualiza registrador de STATUS com valor 0 na posição STATUS.7 SJMP V1 ;================ Envia Mensagem via Serial ======================= SERIAL:MOV A,R7; Transfere para A o valor do offset MOVC A,@A+DPTR; A recebe o conteúdo da tabela CJNE A,#0FFH,ENVIA; Verifica se já chegou ao final da tabela MOV R7,#00H; Se a tabela já acabou, faz R7 = 0 RET; Retorna da subrotina SERIAL ENVIA:MOV SBUF,A; Envia conteúdo da tabela/mensagem para o computador JNB TI,$; Aguarda terminar a transmissão CLR TI; limpa flag de transmissão INC R7; incrementa R7 (offset para leitura da tabela / mensagem) SJMP SERIAL; retorna para SERIAL Lamp_ON: DB 'Lampada Ligada', 0DH, 0FFH Lamp_OFF: DB 'Lampada Desligada', 0DH, 0FFH M_ON:DB 'Motor de Corrente Continua Ligado', 0DH, 0DH, 0DH, 0FFH M_OFF:DB 'Motor de Corrente Continua Desligado', 0DH, 0DH, 0DH, 0FFH END

112 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 112 Prof. José Wilson Lima Nerys 112 Microprocessadores Bibliografia [1] Salvador P. Gimenez, “Microcontroladores 8051: Teoria do hardware e do software/Aplicações em controle digital/Laboratório e simulação”, Pearson Education do Brasil, São Paulo, 2002. ISBN: 85.87918-28-1. [2] Vidal Pereira da Silva Jr., “Aplicações Práticas do Microcontrolador 8051”, Editora Érica, São Paulo, 1994. ISBN: 85-7194-194-7 [3] Sencer Yeralan, Ashutosh Ahluwalia, “Programming and Interfacing the 8051 Microcontroller”, Addison-Wesley Publishing Company, 1995. ISBN: 0-201-63365-5.


Carregar ppt "Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 1 Prof. José Wilson Lima Nerys 1 Microprocessadores MICROPROCESSADORES."

Apresentações semelhantes


Anúncios Google