;In Cerebot2, 4 LEDs (LD1, LD2, LD3, and LD4) are connected to PORTE which are named "user LEDs". ;This program Toggles user LEDs (PORTE) in AVR Assembly Language. ;Use AVR Studio IDE to make the hex file. ;For more information see www.microdigitaled.com and www.digilentinc.com .INCLUDE "M64DEF.INC" ;ATmega64 is used by Cerebot2 board ;initialize SP (Stack Pointer) LDI R20, HIGH(RAMEND) OUT SPH, R20 LDI R20, LOW(RAMEND) OUT SPL, R20 ;PE4 to PE7 as outputs (PE4 to PE7 are connected to LD1 to LD4 respectively) LDI R20, 0xF0 OUT DDRE, R20 L1: LDI R20, 0xA0 OUT PORTE, R20 ;PORTE = 1010 0000 B (LD1 = OFF, LD2 = ON, LD3 = OFF, LD4 = ON) RCALL DELAY ;wait 1 second LDI R20, 0x50 OUT PORTE, R20 ;PORTE = 0101 0000 B (LD1 = ON, LD2 = OFF, LD3 = ON, LD4 = OFF) RCALL DELAY ;wait 1 second RJMP L1 ;jump to L1 ;======================================================================= ;The Delay subroutine creates a delay which is 1 second for XTAL = 8MHz. ;======================================================================= DELAY: LDI R21, 32 ;R21 = 32 DL1:LDI R22, 200 ;R22 = 200 DL2:LDI R23, 250 ;R23 = 250 DL3:NOP NOP DEC R23 ;R23 = R23 - 1 BRNE DL3 ;if R23 is not equal to zero then go to DL3 DEC R22 ;R22 = R22 - 1 BRNE DL2 ;if R22 is not equal to zero then go to DL2 DEC R21 ;R21 = R21 - 1 BRNE DL1 ;if R21 is not equal to zero then go to DL1 RET