Galera nessa postagem vou mostrar o vmlab (Visual Micro Lab) que é um simulador para arquitetura AVR e ST6. Os microcontroladores aceito nesse simulador são:
esse simulador alem de permitir escrever o nosso codigo em assembly é possivel instalar o winavr e integrar a ele a linguagem C, tambem tem alguns outros recursos como descrever um circuitinho em spice, um painel onde tem alguns componentes (botões, leds, potenciômetro e etc). Para baixar ele podemos ir direto no site oficial
site oficial
depois de baixar, instalar e executar vamos nos deparar com janela inicial
para começar basta a gente criar um projeto apertando no menu "Project" e depois "New project". Na proxima aba no "Step 1" escolhemos onde vamos salvar o nosso projeto, no "Step 2" vamos escolher o processador (no meu caso vou brincar com o atmega168), no "Step 3" podemos deixar o compilador padrao, no "Step 4" podemos adicionar uma codigo fonte digitando o nome e apertando em "Add this", por fim apertamos no botão "OK"
com o projeto criado basta digitar o nosso codigo assembly na aba do codigo e o nosso circuito na aba do projeto (podemos usar apenas o codigo e debugar ele, não é necessario criar o circuito). Nesse tutorial não vou abordar a linguagem assembly (talvez em um futuro tutorial quem sabe). Para esse exemplo vou fazer um simples codigo que coloca um dos pinos do microcontrolador como saida e fica alternando ele em um loop infinito, para isso setamos em um registrador a pinagem que vamos ter como saida ou como entrada (diferente dos PICs onde o numero 0 indica a saida e o numero 1 a entrada, os AVRs o numero 0 indica a entrada e 1 seria a saida '-' ), agora enviamos o conteudo daquele registrador para o DDRx indicando quem vai ser a saida ou entrada daquele Port
agora em um loop infinito vou ficar alternando (tem formas mais eficientes como manipular cada bit XD), nesse caso tambem não vamos enviar para o DDRx e sim para o proprio PORT
depois de escrever o nosso codigo basta compilar e debugar o codigo, para isso apertamos no menu "Project" e por fim "Build" (tambem podemos apertar a tecla F9), se tudo ocorrer bem vai aparecer uns quadradinhos verde no lado do codigo alem de uma mensagem na aba message ("Success! All ready to run")
podemos rodar nosso codigo indo no menu "Run", apertando em "Go / Continue" (F5) ele vai rodar o codigo direto ou podemos rodar passo a passo apertando no menu "Step over" (F6) ou "Step into" (F7)
no lado do codigo tem uns quadrado verde sendo um breakpoint, podemos apertar nele e parar a execução do codigo sempre que passar naquela determinada instrução que tiver o breakpoint, assim podemos da um run direto e analisar apenas aquele trecho em especifico
podemos abrir algumas abas no menu "View" que mostra algumas informações dos registradores, pinos, memorias.
no menu "View" tambem tem o "Control Panel" com alguns componentes como botões e leds. Para interligar um dos pinos do microcontrolador a um dos led usamos a aba project e descrevemos o circuito em spice (tem um pequeno probleminha, não da para usar o pino como source para o led, então vai ter que acender o led em nivel logico baixo e apagar ele em nivel logico alto kkk)
tambem existe um osciloscópio no simulador, para usar ele declaramos .PLOT o pino no project
se a gente olhar na pasta do projeto vai ter o .hex então é possivel subir o nosso codigo em um microcontrolador real
bom galera esse simulador é bem legal para aprender programar em assembly para microcontroladores AVR ^^
by kodo no kami
ATtiny: 11, 12, 15 e 22
AT90S: 1200, 2313, 2323, 2343, 4414, 4432, 4434, 4433, 8515 e 8535
ATmega: 8, 16, 32, 48, 64, 88, 128, 161, 162, 168, 8515 e 8535
ST6: 200, 201, 203, 208, 209, 210, 215, 220 e 225
esse simulador alem de permitir escrever o nosso codigo em assembly é possivel instalar o winavr e integrar a ele a linguagem C, tambem tem alguns outros recursos como descrever um circuitinho em spice, um painel onde tem alguns componentes (botões, leds, potenciômetro e etc). Para baixar ele podemos ir direto no site oficial
site oficial
depois de baixar, instalar e executar vamos nos deparar com janela inicial
para começar basta a gente criar um projeto apertando no menu "Project" e depois "New project". Na proxima aba no "Step 1" escolhemos onde vamos salvar o nosso projeto, no "Step 2" vamos escolher o processador (no meu caso vou brincar com o atmega168), no "Step 3" podemos deixar o compilador padrao, no "Step 4" podemos adicionar uma codigo fonte digitando o nome e apertando em "Add this", por fim apertamos no botão "OK"
com o projeto criado basta digitar o nosso codigo assembly na aba do codigo e o nosso circuito na aba do projeto (podemos usar apenas o codigo e debugar ele, não é necessario criar o circuito). Nesse tutorial não vou abordar a linguagem assembly (talvez em um futuro tutorial quem sabe). Para esse exemplo vou fazer um simples codigo que coloca um dos pinos do microcontrolador como saida e fica alternando ele em um loop infinito, para isso setamos em um registrador a pinagem que vamos ter como saida ou como entrada (diferente dos PICs onde o numero 0 indica a saida e o numero 1 a entrada, os AVRs o numero 0 indica a entrada e 1 seria a saida '-' ), agora enviamos o conteudo daquele registrador para o DDRx indicando quem vai ser a saida ou entrada daquele Port
- Código:
.include "C:\VMLAB\include\m168def.inc"
reset:
rjmp inicio
inicio:
;reg r20 recebe 00000100
ldi r20,4
;especificamos as entradas/saidas do PORTD
out DDRD,r20
agora em um loop infinito vou ficar alternando (tem formas mais eficientes como manipular cada bit XD), nesse caso tambem não vamos enviar para o DDRx e sim para o proprio PORT
- Código:
.include "C:\VMLAB\include\m168def.inc"
reset:
rjmp inicio
inicio:
;reg r20 recebe 00000100b
ldi r20,4
;especificamos as entradas/saidas do PORTD
out DDRD,r20
repetir:
;seta no reg20 00000000b
ldi r20,0
out PORTD,r20
;seta no reg20 00000100b
ldi r20,4
out PORTD,r20
;pulo incodicional para o repetir
rjmp repetir
depois de escrever o nosso codigo basta compilar e debugar o codigo, para isso apertamos no menu "Project" e por fim "Build" (tambem podemos apertar a tecla F9), se tudo ocorrer bem vai aparecer uns quadradinhos verde no lado do codigo alem de uma mensagem na aba message ("Success! All ready to run")
podemos rodar nosso codigo indo no menu "Run", apertando em "Go / Continue" (F5) ele vai rodar o codigo direto ou podemos rodar passo a passo apertando no menu "Step over" (F6) ou "Step into" (F7)
no lado do codigo tem uns quadrado verde sendo um breakpoint, podemos apertar nele e parar a execução do codigo sempre que passar naquela determinada instrução que tiver o breakpoint, assim podemos da um run direto e analisar apenas aquele trecho em especifico
podemos abrir algumas abas no menu "View" que mostra algumas informações dos registradores, pinos, memorias.
no menu "View" tambem tem o "Control Panel" com alguns componentes como botões e leds. Para interligar um dos pinos do microcontrolador a um dos led usamos a aba project e descrevemos o circuito em spice (tem um pequeno probleminha, não da para usar o pino como source para o led, então vai ter que acender o led em nivel logico baixo e apagar ele em nivel logico alto kkk)
- Código:
.MICRO "ATmega168"
.PROGRAM "kodo.asm"
.TARGET "meuprojeto.hex"
.TRACE ; Activate micro trace
.POWER VDD=5 VSS=0 ; Power nodes
.CLOCK 1meg ; Micro clock
.STORE 250m ; Trace (micro+signals) storage time
;tem um resistor de 280 ohms ta conectado ao PortD pino 2 e ao Nó 1
R1 PD2 1 280
;o anodo do led ta no VDD e o catado ta no Nó 1
D1 VDD 1
tambem existe um osciloscópio no simulador, para usar ele declaramos .PLOT o pino no project
- Código:
.PLOT V(PD2)
se a gente olhar na pasta do projeto vai ter o .hex então é possivel subir o nosso codigo em um microcontrolador real
bom galera esse simulador é bem legal para aprender programar em assembly para microcontroladores AVR ^^
by kodo no kami