-
-
Save tothandras/aaca414e21cc505d34e7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;*************************************************************** | |
;* Feladat: LED léptetése | |
;* Rövid leírás: | |
; | |
;* Szerzők: Tóth András | |
;* Mérőcsoport: CDE10 | |
; | |
;*************************************************************** | |
;* "AVR ExperimentBoard" port assignment information: | |
;*************************************************************** | |
;* | |
;* LED0(P):PortC.0 LED4(P):PortC.4 | |
;* LED1(P):PortC.1 LED5(P):PortC.5 | |
;* LED2(S):PortC.2 LED6(S):PortC.6 | |
;* LED3(Z):PortC.3 LED7(Z):PortC.7 INT:PortE.4 | |
;* | |
;* SW0:PortG.0 SW1:PortG.1 SW2:PortG.4 SW3:PortG.3 | |
;* | |
;* BT0:PortE.5 BT1:PortE.6 BT2:PortE.7 BT3:PortB.7 | |
;* | |
;*************************************************************** | |
;* | |
;* AIN:PortF.0 NTK:PortF.1 OPTO:PortF.2 POT:PortF.3 | |
;* | |
;*************************************************************** | |
;* | |
;* LCD1(VSS) = GND LCD9(DB2): - | |
;* LCD2(VDD) = VCC LCD10(DB3): - | |
;* LCD3(VO ) = GND LCD11(DB4): PortA.4 | |
;* LCD4(RS ) = PortA.0 LCD12(DB5): PortA.5 | |
;* LCD5(R/W) = GND LCD13(DB6): PortA.6 | |
;* LCD6(E ) = PortA.1 LCD14(DB7): PortA.7 | |
;* LCD7(DB0) = - LCD15(BLA): VCC | |
;* LCD8(DB1) = - LCD16(BLK): PortB.5 (1=Backlight ON) | |
;* | |
;*************************************************************** | |
.include "m128def.inc" ; Definition file for ATmega128 | |
;* Program Constants | |
.equ const =$00 ; Generic Constant Structure example | |
;* Program Variables Definitions | |
.def temp = r16 | |
.def cntr1 = r17 | |
.def cntr2 = r18 | |
.def cntr3 = r19 | |
.def sw = r20 | |
.def szazad = r21 | |
.def tick = r23 | |
.def led = r24 | |
;*************************************************************** | |
;* Reset & Interrupt Vectors | |
.cseg | |
.org $0000 ; Define start of Code segment | |
jmp RESET ; Reset Handler, jmp is 2 word instruction | |
jmp DUMMY_IT ; Ext. INT0 Handler | |
jmp DUMMY_IT ; Ext. INT1 Handler | |
jmp DUMMY_IT ; Ext. INT2 Handler | |
jmp DUMMY_IT ; Ext. INT3 Handler | |
jmp DUMMY_IT ; Ext. INT4 Handler (INT gomb) | |
jmp DUMMY_IT ; Ext. INT5 Handler | |
jmp DUMMY_IT ; Ext. INT6 Handler | |
jmp DUMMY_IT ; Ext. INT7 Handler | |
jmp DUMMY_IT ; Timer2 Compare Match Handler | |
jmp DUMMY_IT ; Timer2 Overflow Handler | |
jmp DUMMY_IT ; Timer1 Capture Event Handler | |
jmp DUMMY_IT ; Timer1 Compare Match A Handler | |
jmp DUMMY_IT ; Timer1 Compare Match B Handler | |
jmp DUMMY_IT ; Timer1 Overflow Handler | |
jmp TIMER_IT ; Timer0 Compare Match Handler | |
jmp DUMMY_IT ; Timer0 Overflow Handler | |
jmp DUMMY_IT ; SPI Transfer Complete Handler | |
jmp DUMMY_IT ; USART0 RX Complete Handler | |
jmp DUMMY_IT ; USART0 Data Register Empty Hanlder | |
jmp DUMMY_IT ; USART0 TX Complete Handler | |
jmp DUMMY_IT ; ADC Conversion Complete Handler | |
jmp DUMMY_IT ; EEPROM Ready Hanlder | |
jmp DUMMY_IT ; Analog Comparator Handler | |
jmp DUMMY_IT ; Timer1 Compare Match C Handler | |
jmp DUMMY_IT ; Timer3 Capture Event Handler | |
jmp DUMMY_IT ; Timer3 Compare Match A Handler | |
jmp DUMMY_IT ; Timer3 Compare Match B Handler | |
jmp DUMMY_IT ; Timer3 Compare Match C Handler | |
jmp DUMMY_IT ; Timer3 Overflow Handler | |
jmp DUMMY_IT ; USART1 RX Complete Handler | |
jmp DUMMY_IT ; USART1 Data Register Empty Hanlder | |
jmp DUMMY_IT ; USART1 TX Complete Handler | |
jmp DUMMY_IT ; Two-wire Serial Interface Handler | |
jmp DUMMY_IT ; Store Program Memory Ready Handler | |
.org $0046 | |
;**************************************************************** | |
;* DUMMY_IT interrupt handler -- CPU hangup with LED pattern | |
;* (This way unhandled interrupts will be noticed) | |
;< többi IT kezelő a fájl végére! > | |
DUMMY_IT: | |
ldi r16, 0xFF ; LED pattern: *- | |
out DDRC, r16 ; -* | |
ldi r16, 0xA5 ; *- | |
out PORTC, r16 ; -* | |
DUMMY_LOOP: | |
rjmp DUMMY_LOOP ; endless loop | |
;< többi IT kezelő a fájl végére! > | |
;*************************************************************** | |
;* MAIN program, Initialisation part | |
.org $004B; | |
RESET: | |
;* Stack Pointer init, | |
; Set stack pointer to top of RAM | |
ldi temp, LOW(RAMEND) ; RAMEND = "max address in RAM" | |
out SPL, temp ; RAMEND value in "m128def.inc" | |
ldi temp, HIGH(RAMEND) | |
out SPH, temp | |
M_INIT: | |
;< ki- és bemenetek inicializálása stb > | |
ldi temp, 0xff | |
out DDRC, temp | |
ldi temp, 0 | |
sts DDRG, temp | |
TIMER_INIT: | |
;< TIMER0 inicializálása > | |
ldi temp, 107 | |
out OCR0, temp | |
ldi temp, 0b00001111 | |
out TCCR0, temp | |
ldi temp, 0b00000010 | |
out TIMSK, temp | |
ldi szazad, 100 | |
ldi tick, 0 | |
ldi led, 1 | |
sei | |
;*************************************************************** | |
;* MAIN program, Endless loop part | |
M_LOOP: | |
tst tick | |
breq M_LOOP | |
call STEP | |
clr tick | |
jmp M_LOOP | |
;*************************************************************** | |
;* Subroutines, Interrupt routines | |
TIMER_IT: | |
push temp | |
in temp, SREG | |
push temp | |
dec szazad | |
brne NEM_JART_LE | |
ldi tick, 1 | |
ldi szazad, 100 | |
NEM_JART_LE: | |
pop temp | |
out SREG, temp | |
pop temp | |
reti | |
WAIT: | |
ldi cntr1, 200 | |
ldi cntr2, 0 | |
ldi cntr3, 0 | |
LOOP1: | |
LOOP2: | |
LOOP3: | |
inc cntr3 | |
brne LOOP3 | |
inc cntr2 | |
brne LOOP2 | |
inc cntr1 | |
brne LOOP1 | |
ret | |
STEP: | |
out PORTC, led | |
lds sw, PING | |
sbrs sw, 0 | |
call LED_UP | |
sbrc sw, 0 | |
call LED_DOWN | |
ret | |
LED_UP: | |
ror led | |
brcc RET_UP | |
clc | |
ldi led, 128 | |
RET_UP: | |
ret | |
LED_DOWN: | |
rol led | |
brcc RET_DOWN | |
clc | |
ldi led, 1 | |
RET_DOWN: | |
ret |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment