Sistemas Embarcados: Microcontroladores Prof. Protásio Laboratório de Microengenharia/DEE/CEAR/UFPB
Programação Assembly 8051
Programação Assembly Ferramentas de simulação MCU 8051 IDE v1.4.7 An open source IDE for MCS-51 based microcontrollers for POSIX Systems, this software is licenced under the GNU GPL v2 licence. Download at http://mcu8051ide.sourceforge.net Proteus 8.0 Ferramenta para o design de projetos eletrônicos baseado em SPICE. Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 3
MCU 8051 IDE Execute o MCU 8051 IDE Criação de Projeto Project -> New Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 4
MCU 8051 IDE Execute o MCU 8051 IDE Criação de Projeto Project -> New Digite um nome para o projeto Indique a pasta que será salvo o projeto Defina o processador Finalize OBS: Em Select MCU, pode-se obter informações gerais sobre a CPU Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 5
MCU 8051 IDE Área de edição de código Simulador Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 6
MCU 8051 IDE Na área de edição de código, insira o seguinte código: ;**************************************** ;*** PROGRAMA PISCA LED ****** ;**************************************** ORG 0000H ; Diretiva que informa ao montador o endereço da próxima instrução LJMP INICIO ; Pula para o endereço (rótulo) "INICIO" ORG 0030H INICIO: CPL P2.0 ; Complementa o estado do bit 0 da porta P2 MOV R0,#50 ; Move o valor 50 em decimal para o registrador R0 DJNZ R0,$ ; Decrementa o valor em R0 e pula para "$"(mesmo endereço) se for ; diferente de zero SJMP INICIO ; Pula para o endereço "INICIO" END ; Diretiva que informa ao montador o FIM DO PROGRAMA Após, salve o código File Save Monte o código Tools compile ou F11 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 7
MCU 8051 IDE O arquivo.hex é o que de fato deve ser transferido ao microcontrolador Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 8
MCU 8051 IDE Iniciando a simulação Simulator Start/Shutdown ou F2 A linha verde indica onde está a simulação Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 9
MCU 8051 IDE Simulação passo-a-passo Simulator Step ou F7 Executa a instrução corrente e pula para próxima instrução Abaixo ver-se que a instrução LJMP INICIO foi executada Ou seja, foi realizado o pulo para o endereço INICIO Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 10
MCU 8051 IDE Simulação passo-a-passo Próximo F7 Executa CPL P2.0 Observe que o valor de P2 muda Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 11
MCU 8051 IDE Simulação passo-a-passo Próximo F7 Executa MOV R0,#50 Observe que a RAM de Dados é modificada Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 12
MCU 8051 IDE Simulação passo-a-passo Próximo F7 Executa DJNZ R0,$ Observe que o valor em R0 é decrementado Observe que o ponteiro (linha verde) continua no mesmo lugar. Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 13
MCU 8051 IDE Simulação passo-a-passo Próximos 50 clicks em F7 Executa a instrução DJNZ Loop R0,$ 50x Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 14
MCU 8051 IDE Simulação passo-a-passo Próximo F7 Executa JMP INICIO Volta ao endereço INICIO Próximo F7 Executa CPL P2.0 E continua o laço INFINITO Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 15
MCU 8051 IDE Programa: a cada 50 interações, o estado do bit 0 da porta 2 é modificado Se um LED for ligado a este pino, então este piscará Questão? Qual a frequência em que o LED piscará? Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 16
Cálculo da execução do programa Considerando um cristal de 12MHz Período de clock (Tc) = 83,3 ns 1/12MHz Ciclo de Instrução (Ti) = 1 µs 83,3 ns * 12 Instrução Número de Ciclos de Instrução por instrução Número de Ciclos de Instrução por loop CPL P2.0 1 1 MOV R0, #50 1 1 DJNZ R0,$ 2 2*50 SJMP INICIO 2 2 Tempo de execução do loop (T L ) = (1+1+2*50+2)* 1 µs = 104 µs Assim, o LED ficará ON por 104 µs e OFF por 104 µs Frequência de Oscilação do LED = 1/(2*T L ) 4,8 khz Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 17
Cálculo da execução do programa Qual a frequência caso o valor de inicial de R0 seja 250? Qual a frequência do LED caso o programa seja modificado para o abaixo: ORG 0000H ; Diretiva que informa ao montador o endereço da próxima instrução LJMP INICIO ; Pula para o endereço (rótulo) "INICIO" ORG 0030H INICIO: CPL P2.0 ; Complementa o estado do bit 0 da porta P2 MOV R0,#250 ; Move o valor 250 em decimal para o registrador R0 MOV R1,#250 ; Move o valor 250 em decimal para o registrador R1 LOOP: DJNZ R0,$ ; Decrementa o valor em R0 e pula para LOOP se for diferente de zero DJNZ R1,LOOP ; Decrementa o valor em R1 e pula para LOOP se for diferente de zero SJMP INICIO ; Pula para o endereço "INICIO" END ; Diretiva que informa ao montador o FIM DO PROGRAMA Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 18
Inserção de breakpoints Compile o programa anterior e execute-o passo a passo (???). Para executar um trecho de programa de uma vez, pode-se inserir breakpoint. Click acima da numeração da linha desejada para inserção de um breakpoint Para executar até o breakpoint Simulator Run ou F9 Observe o tempo de execução Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 19
Arquivo de listagem Contem informações sobre o código montado e código montado. File Open Filter = Code listing (*.lst) PISCA_LED.lst Código de Máquina Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 20
Arquivo *.hex Contém o código de máquina que será gravado no microcontrolador File Open Filter = All files (*) PISCA_LED.hex Arquivo PISCA_LED.hex :03000000020030CB :0C003000B2A078FA79FAD8FED9FC80F46E :00000001FF Start code: character em ASCII : Byte count: Número de bytes do código Address: Endereço inicial da sequência de bytes de código Record type: Valor entre 00 e 05 que especifica o tipo de campo de dado Data: Sequência de bytes de código Checksum: Byte de detecção de erro Exemplos - 00 indica que campo de dados (instruções) - 01 indica fim de arquivo. Em geral, o endereço especificado é 0000 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 21
Simulação no Proteus Monte o circuito abaixo no Proteus e rode o código visto Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 22
Exemplos de circuitos com o 8051 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 23
Exemplos de circuitos com o 8051 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 24
Tarefas Utilizando o MCU 8051 IDE e/ou o Proteus, monte os seguintes circuitos: Contador de eventos (use uma chave para emular o evento) em que o número de evento em binário apareça em 8 LED. Contador de eventos (use uma chave para emular o evento) em que o número de evento em decimal apareça em 1 display de 7 segmentos. Cronômetro com mostrador de minutos e segundos. Sistema de verificação de senha via teclado numérico (keypad) 9x9. Se senha ok, LED on. Se senha incorreta, LED off e ALARME. Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 25