#include <Adafruit_CircuitPlayground.h>
#include <Adafruit_Circuit_Playground.h>
.include "atmega328def.inc"; diretiva de inclusao de arquivo de definição de nomes para registradores
.include "atmega328lib.inc"; diretiva de inclusão de arquivo de biblioteca com rotinas pré -programadas
setup: ; nome da linha (rótulo ou label)
sbi ddrd, 2 ; D2->saida lógica (pino2)
sbi ddrd, 3 ; D3->saida lógica (pino3)
sbi ddrd, 4 ; D4->saida lógica (pino4)
sbi ddrd, 5 ; D5->saida lógica (pino5)
sbi ddrb, 0 ; B0->saida lógica (pino8)
sbi ddrb, 1 ; B1->saida lógica (pino9)
sbi ddrb, 2 ; B2->saida lógica (pino10)
sbi ddrb, 3 ; B3->saida lógica (pino11)
call defesa; chama rotina de defesa (servo em 0 graus)
cpi w, '0' ; compara o valor do reg trabalho w (r16) com o caracter zero
brne pc + 2 ;
call parado ; chama rotina de robo parado
cpi w, '1' ; compara o valor do reg trabalho w (r16) com o caracter zero
brne pc + 2 ;
call avanco ; chama rotina de avanco do robo
cpi w, '5' ; compara o valor do reg trabalho w (r16) com o caracter zero
brne pc + 2 ;
call reverso ; chama rotina de reversao do robo
cpi w, '3' ; compara o valor do reg trabalho w (r16) com o caracter zero
brne pc + 2 ;
call direita ; chama rotina de de girar o robo para direita
cpi w, '7' ; compara o valor do reg trabalho w (r16) com o caracter zero
brne pc + 2 ;
call esquerda ; chama rotina de de girar o robo para esquerda
cpi w, 'A' ; compara o valor do reg trabalho w (r16) com o caracter zero
brne pc + 2 ;
call ataque ; chama rotina de ataque (servomotor em 90 graus)
cpi w, 'B' ; compara o valor do reg trabalho w (r16) com o caracter zero
brne pc + 2 ;
call defesa ; chama rotina de defesa (servomotor em 0)
parado: ; nome da rotina
; motores direita
sbi portd, 2 ; D2 (pino2) em H
sbi portd, 3 ; D3 (pino3) em H
sbi portd, 5 ; D5 (pino5) em H
sbi portd, 4 ; D4 (pino4) em H
; motores esquerda
sbi portb, 0 ; B0 (pino8) em H
sbi portb, 1 ; B1 (pino9) em H
sbi portb, 3 ; B3 (pino11) em H
sbi portb, 2 ; B2 (pino10) em H
avanco: ; nome da rotina
; motores direita
cbi portd, 2 ; D2 (pino2) em L
sbi portd, 3 ; D3 (pino3) em H
sbi portd, 5 ; D5 (pino5) em H
cbi portd, 4 ; D4 (pino4) em L
; motores esquerda
cbi portb, 0 ; B0 (pino8) em L
sbi portb, 1 ; B1 (pino9) em H
sbi portb, 3 ; B3 (pino11) em H
cbi portb, 2 ; B2 (pino10) em L
reverso: ; nome da rotina
; motores direita
sbi portd, 2 ; D2 (pino2) em H
cbi portd, 3 ; D3 (pino3) em L
cbi portd, 5 ; D5 (pino5) em L
sbi portd, 4 ; D4 (pino4) em H
; motores esquerda
sbi portb, 0 ; B0 (pino8) em H
cbi portb, 1 ; B1 (pino9) em L
cbi portb, 3 ; B3 (pino11) em L
sbi portb, 2 ; B2 (pino10) em H
direita: ; nome da rotina
; motores esquerda
cbi portb, 0 ; B0 (pino8) em L
sbi portb, 1 ; B1 (pino9) em H
sbi portb, 3 ; B3 (pino11) em H
cbi portb, 2 ; B2 (pino10) em L
; motores direita
sbi portd, 2 ; D2 (pino2) em H
cbi portd, 3 ; D3 (pino3) em L
cbi portd, 5 ; D5 (pino5) em L
sbi portd, 4 ; D4 (pino4) em H
ret ; retorna da chamda da rotina
esquerda: ; nome da rotina
; motores direita
cbi portd, 2 ; D2 (pino2) em L
sbi portd, 3 ; D3 (pino3) em H
sbi portd, 5 ; D5 (pino5) em H
cbi portd, 4 ; D4 (pino4) em L
; motores esquerda
sbi portb, 0 ; B0 (pino8) em H
cbi portb, 1 ; B1 (pino9) em L
cbi portb, 3 ; B3 (pino11) em L
sbi portb, 2 ; B2 (pino10) em H
ret ; retorna da chamada da rotina
defesa: ; nome da rotina
sbi portb, 4 ; pulso em H
ldi w, 1 ; carrega o registra w com o valor 1
call delay_ms ; chama rotina de pausa em ms com o valor de w
cbi portb, 4 ; pulso em L
ldi w, 19 ; carrega o registra w com o valor 19
call delay_ms ; chama rotina de pausa em ms com o valor de w
sbi portb, 4 ; pulso em H
ldi w, 1 ; carrega o registra w com o valor 1
call delay_ms ; chama rotina de pausa em ms com o valor de w
cbi portb, 4 ; pulso em L
ldi w, 19 ; carrega o registra w com o valor 19
call delay_ms ; chama rotina de pausa em ms com o valor de w
ret ; retorna da chamada da rotina
ataque: ; nome da rotina
sbi portb, 4 ; pulso em H
ldi w, 1 ; carrega o registra w com o valor 1
call delay_ms ; chama rotina de pausa em ms com o valor de w
ldi w, 200 ; carrega o registra w com o valor 200
call delay_us ; chama rotina de pausa em ms com o valor de w
ldi w, 200 ; carrega o registra w com o valor 200
call delay_us ; chama rotina de pausa em ms com o valor de w
ldi w, 100 ; carrega o registra w com o valor 100
call delay_us ; chama rotina de pausa em ms com o valor de w
cbi portb, 4 ; pulso em L
ldi w, 18 ; carrega o registra w com o valor 18
call delay_ms ; chama rotina de pausa em ms com o valor de w
ldi w, 200 ; carrega o registra w com o valor 200
call delay_us ; chama rotina de pausa em ms com o valor de w
ldi w, 200 ; carrega o registra w com o valor 200
call delay_us ; chama rotina de pausa em ms com o valor de w
ldi w, 100 ; carrega o registra w com o valor 100
call delay_us ; chama rotina de pausa em ms com o valor de w
sbi portb, 4 ; pulso em H
ldi w, 1 ; carrega o registra w com o valor 1
call delay_ms ; chama rotina de pausa em ms com o valor de w
ldi w, 200 ; carrega o registra w com o valor 200
call delay_us ; chama rotina de pausa em ms com o valor de w
ldi w, 200 ; carrega o registra w com o valor 200
call delay_us ; chama rotina de pausa em ms com o valor de w
ldi w, 100 ; carrega o registra w com o valor 100
call delay_us ; chama rotina de pausa em ms com o valor de w
cbi portb, 4 ; pulso em L
ldi w, 18 ; carrega o registra w com o valor 18
call delay_ms ; chama rotina de pausa em ms com o valor de w
ldi w, 200 ; carrega o registra w com o valor 200
call delay_us ; chama rotina de pausa em ms com o valor de w
ldi w, 200 ; carrega o registra w com o valor 200
call delay_us ; chama rotina de pausa em ms com o valor de w
ldi w, 100 ; carrega o registra w com o valor 100
call delay_us ; chama rotina de pausa em ms com o valor de w
ret ; retorna da chamada da rotina
Tags:
Boa noite VRG, (se não gosta que te chame pelas iniciais, avise),
Por favor não cole código na área de texto do tópico.
fica poluído e perde caractere e formatação.
Remova o que vc postou e anexe como arquivo clicando no
pequeno clip acima da tela.
RV mineirin
pode sim me chamar de vrg laboratorio_de_garagen.ino
nao consigo copilar poderiam me ajudar desde ja obrigado
Boa noite,
Estude, entenda e faça testes com os programas de demonstação:
Introducing Circuit Playground
https://learn.adafruit.com/introducing-circuit-playground?view=all
Esse programa está em ASM (linguagem de máquina).
Para ser um .ino deveria estar em C/C++.
Quando é puro ASM, que é o caso, deve ser um .S
Talvez seja necessário usar as diretivas e sintaxe do GCC para Assembly.
Exemplo:
void setup() {
Serial.begin(250000);
uint8_t value = 140;
__asm__ __volatile__(
"clc \n\t"//
"ror %[value0] \n\t"//
"mov %[result0], %[value0] \n\t"//
:
// Output operands
[result0] "=r" (value) //
:
// Input operands
[value0] "r" (value)
:
// Clobbers
);
Serial.println(value);
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por