Jump to content

Programar leds com ATMega 128


Rodrigo Delgado

Recommended Posts

Estou a programar um atempa 128 e estou com uma dúvida pertinente, onde o código não está a funcionar corretamente, aqui vai: 

 

Partindo da situação em que os 8 LED (D1 ... D8) se encontram apagados, pretende-se que, ao acionar SW1, os LED sejam ativados sequencialmente, começando pelo LED D1(D1->D8). O tempo entre sequências deve ser 2 s. Quando todos os LED estiverem ativados, e após uma espera de 3 s, estes devem ser desativados sequencialmente na ordem inversa (D8->D1). Neste caso, o tempo entre sequências deve ser de 1 s. O acionamento de SW6 permite parar o sequenciamento.

O seguinte código não funciona e não sei como corrigir para o fazer funcionar, por favor ajudaaaaaaa

.include<m128def.inc>
.EQU LEDSON = 0b11111110
.EQU LEDSOFF = 0b01111111
.EQU SW1 = 0
.EQU SW6 = 5

.CSEG
.ORG 0
    JMP MAIN

INICIO:
    CLR R16
    LDI R16, 0b00000000
    OUT DDRA, R16
    LDI R16, 0b11111111
    OUT DDRC, R16
    OUT PORTC, R16
    RET

DELAY1S:
    PUSH R18
    PUSH R19
    PUSH R20, 82
CICLO01S: 
    LDI R19, 255
CICLO11S:
    LDI R18, 255
CICLO21S:
    DEC R18
    BRNE CICLO12S
    DEC R19
    DEC R20
    BRNE CICLO02S
    POP R20
    POP R19
    POP R18
    RET

DELAY2S:
    PUSH R18
    PUSH R19
    PUSH R20
    LDI R20, 164
CICLO02S:
    LDI R19, 255
CICLO12S:
    LDI R18, 255
CICLO22S
    DEC R18
    BRNE ICLO12S
    DEC R19
    DEC R20
    BRNE CICLO02S
    POP R20
    POP R19
    POP R18
    RET 
MAIN:
    LDI R16, 0XFF
    OUT SPL, R16
    LDI R16, 0X10
    OUT SPH, R16
    CALL INICIO

VERIFICACAO:
    SBIS PINA, SW1
    JMP SEQUENCIALEDSON
    SBIS PINA, SW6
    JMP SEQUENCIAOFF
    JMP VEIRIFCACAO

SEQUENCIALEDON:
    LDI R16, LEDSON
    OUT PORTC, R16 
    CALL DELAY2S
    LSL R16 
    OUT PORTC, R16
    CALL DELAY2S
    SBIC PORTC, 7 
    JMP SEQUCNIALEDON
    CALL DELAY2S
    CALL DELLAY1S

SEQUENCIALEDOFF:
    LDI R16, LEDSOFF
    OUT PORTC, R16
    CALL DELAY1S
    SEC ROR R16
    OUT PORTC, R16
    SBIS PORTC, 0
    JMP

SEUQNCIAOFF:
    LDI R16, 0b11111111
    OUT PORTC, R16
    JMP MAIN
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.