Slexy.org is shutting down and stopped accepting new Pastes on May 4th, 2021.
Existing Pastes will stop being available on or after May 10th, 2021.
Author: Not specified Language: asm
Description: Not specified Timestamp: 2017-09-18 12:36:47 +0000
View raw paste Reply
  1. .include "m328def.inc"                 
  2. .org 0x0000
  3.            RJMP begin                   ; jump to begin  
  4. .org 0x0034                             ; set the initial program address at 0x0034
  5.  begin:    CLI                          ; clear the global interrupt flag(I)
  6.            LDI    R16,low(RAMEND)      
  7.          OUT    SPL,R16
  8.            LDI     R16,high(RAMEND)
  9.          OUT    SPH, R16                
  10.          LDI    R16,0xFF                        ; give R16 value of 0xFF(255)
  11.          OUT    DDRD, R16               ; copy the value of R16 to DDRD
  12. toggle:           LDI     R16,0xFF              ; give R16 value of 0xFF(255)
  13.          OUT    PORTD, R16              ; copy the value of R16 to PORTD
  14.            RCALL  Delay2                        ; call the Delay2 subroutine
  15.            LDI     R16,0x00                     ; give R16 value of 0x0(0)
  16.          OUT     PORTD, R16             ; copy the value of R16 to PORTD
  17.            RCALL  Delay2                        ; call the Delay2 subroutine
  18.                    RJMP         toggle
  19. Delay2:     LDI     R17, 0x55           ; give R17 value of 0xFF(255)
  20. loop2:    CALL  Delay1          ; call the Delay1 subroutine
  21.                 DEC     R17             ; decrease the value of R17 by 1
  22.            BRNE    loop2                        ; check if the value of R17 is zero, if so execute the loop2 subroutine
  23.           RET                           ; return from subroutine
  24. Delay1:     LDI     R18, 0xFF           ; give R18 value of 0xFF(255)
  25. loop1:    CALL  Delay                   ; call the Delay subroutine
  26.                 DEC     R18             ; decrease the value of R18 by 1
  27.            BRNE    loop1                        ; check if the value of R18 is zero, if so execute the loop2 subroutine
  28.           RET                           ; return from subroutine
  29. Delay:     LDI     R19, 0xFF            ; give R19 value of 0xFF(255)
  30. loop:    DEC     R19                    ; decrease the value of R19 by 1
  31.            BRNE    loop                         ; check if the value of R19 is zero, if so execute the loop2 subroutine
  32.           RET                           ; return from subroutine
  33.  
View raw paste Reply