Created
May 7, 2014 19:09
-
-
Save kris7t/74c710a76c4730d90a43 to your computer and use it in GitHub Desktop.
This file contains hidden or 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: | |
;* Rövid leírás: | |
; | |
;* Szerzõ: Marussy Kristóf | |
;* Mérõcsoport: | |
; | |
;*************************************************************** | |
;* "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 | |
.def temp = r16 | |
.def shreg0 = r17 | |
.def shreg1 = r18 | |
.def gomb = r19 | |
.def cntr = r20 | |
;*************************************************************** | |
;* 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 OCIE0_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: | |
clr temp | |
out PORTE, temp ; INT, BTN0..2 nincs felhúzás | |
out DDRE, temp ; INT, BTN0..2 bemenet | |
cbi PORTB, 7 ; BTN3 nincs felhúzás | |
cbi DDRB, 7 ; BTN3 bemenet | |
ser temp | |
out DDRC, temp ; LED0..7 kimenet | |
;; Timer IT 10 ms-ként | |
ldi temp, 107 | |
out OCR0, temp | |
ldi temp, (1 << WGM01) | (0b111 << CS00) | |
out TCCR0, temp | |
ldi temp, (1 << OCIE0) | |
out TIMSK, temp | |
;; Változók kezdeti értéke | |
clr shreg0 | |
clr shreg1 | |
clr gomb | |
clr cntr | |
sei ; IT-k engedélyezése | |
;*************************************************************** | |
;* MAIN program, Endless loop part | |
M_LOOP: | |
out PORTC, cntr ; Számláló értéke kimenetre | |
sbrs gomb, 0 ; Ha nem volt BTN0 felfutó él, | |
rjmp _NEM_BTN0 ; akkor elugrunk. | |
andi gomb, 0x0e ; 0. bit törlése | |
inc cntr ; Számláló nő | |
_NEM_BTN0: | |
sbrs gomb, 1 ; Ha nem volt BTN0 felfutó él, | |
rjmp _NEM_BTN1 ; akkor elugrunk. | |
andi gomb, 0x0d ; 1. bit törlése | |
dec cntr ; Számláló csökkent | |
_NEM_BTN1: | |
rjmp M_LOOP ; Endless Loop | |
;*************************************************************** | |
;* Subroutines, Interrupt routines | |
;;; Timer0 Compare Match Handler | |
OCIE0_IT: | |
;; Állapot elmentése | |
push temp | |
in temp, SREG | |
push temp | |
;; Beleshifteljük a BTN0 állapotát | |
lsl shreg0 | |
sbis PINE, 5 ; Ha le van nyomva, | |
inc shreg0 ; akkor 1-et shiftelünk. | |
;; Felfutó él detektálás BTN0 | |
cpi shreg0, 0x0f | |
brne _NEM_FELFUTO0 | |
ori gomb, 0x01 | |
_NEM_FELFUTO0: | |
;; Beleshifteljük a BTN1 állapotát | |
lsl shreg1 | |
sbis PINE, 6 ; Ha le van nyomva, | |
inc shreg1 ; akkor 1-et shiftelünk. | |
;; Felfutó él detektálás BTN1 | |
cpi shreg1, 0x0f | |
brne _NEM_FELFUTO1 | |
ori gomb, 0x02 | |
_NEM_FELFUTO1: | |
;; Állapot visszaállítása | |
pop temp | |
out SREG, temp | |
pop temp | |
reti |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment