micro
Micro Processadore
Introdução
Este trabalho tem como principal função o aperfeiçoamento e a adaptação à prática laboratorial de Microprocessadores.
Será desenvolvido em hardware o projecto de um sequenciador de luzes
(bit-bit), utilizando para tal o ATMEGA8 e desenvolvendo uma aplicação em assembly. Pretende-se, portanto um correcto desenvolvimento do código e uma implementação prática bem sucedida. Posto isto, na conclusão do trabalho, esperase que estejamos bem familiarizados com as ferramentas de trabalho AVR-Studio da ATMEL™ (assemblador e ambiente de simulação do microcontrolador) e ponyprog (ferramenta de comunicação e programação do microcontrolador) e que sejamos capazes de dominar o microcontrolador ATMEGA8 bem como a linguagem assembly dedicada à família AVR.
Mateiral Utilizado
1x Atmega8
1x Array de led’s
1x Xtal
1x Breadborad
1x Resistência
3x díodos zener
3x Conectadores
Conector 9 pinos
1x Transistor
Esquema Hardware
ATMEGA8
Montagem do trabalho na placa breadboard:
Código Implementado
.include "m8def.inc"
LDI r16, low (RAMEND)
OUT spl, r16 ; Sub-rotina de Tempo
LDI r16, high (RAMEND)
OUT sph, r1
config da stack
SER r16 ; Coloca a “uns” todos os bits (0xFF) no registador r16
OUT ddrb, r16 ; Configura a porta A como saída
LDI r16, 0x01 ; Carrega o registador r16 no bit 0 loop: LDI r19, 4 ; Carrega o registador r19 com a constante 100 contdec: RCALL wait1 ;
DEC r19
BRNE contdec
Sub-rotina de Tempo
SBIC pinB, 0 ; Se o bit 0 na porta B for zero, salta a próxima instrução
RJMP LSb ; Salta para a instrução “LSb”
MSb:
ROL r16 ; Rotaciona o registador r16 à esquerda, copia a flag de carry para o bit 0
OUT portA, r16 ; Copia registador r16 para porta I/O portA
RJMP loop ; Salta para “loop”
LSb:
ROR r16 ; Rotaciona o registador r16 à direita, copia a flag de carry para o bit 7
OUT portA, r16 ; Copia registador r16 para porta I/O portA