Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;//////////////////////////////////////////////////////////////////////////////
- ; Laboratory AVR Microcontrollers Part2
- ; Program template for lab 9
- ; Authors:
- ;
- ; Group:
- ; Section:
- ;
- ; Task:
- ;
- ; Todo:
- ;
- ;
- ; Version: 3.0
- ;//////////////////////////////////////////////////////////////////////////////
- .nolist ;quartz assumption 4Mhz
- .include "m128def.inc"
- ;//////////////////////////////////////////////////////////////////////////////
- .list
- .equ xlength = 100
- ;//////////////////////////////////////////////////////////////////////////////
- ; EEPROM - data non volatile memory segment
- .ESEG
- ;//////////////////////////////////////////////////////////////////////////////
- ; StaticRAM - data memory.segment
- .DSEG
- .ORG 0x200; may be omitted this is default value
- ; Destination table (xlengthx bytes).
- ; Replace "xlengthx" with correct value
- RAMTAB: .BYTE xlength
- ;//////////////////////////////////////////////////////////////////////////////
- ; CODE - Program memory segment
- ; Please Remember that it is "word" address space
- ;
- .CSEG
- .org 0x0000 ; may be omitted this is default value
- jmp RESET ; Reset Handler
- ; Interrupts vector table / change to your procedure only when needed
- jmp EXT_INT0 ; IRQ0 Handler
- jmp EXT_INT1 ; IRQ1 Handler
- jmp EXT_INT2 ; IRQ2 Handler
- jmp EXT_INT3 ; IRQ3 Handler
- jmp EXT_INT4 ; IRQ4 Handler
- jmp EXT_INT5 ; IRQ5 Handler
- jmp EXT_INT6 ; IRQ6 Handler
- jmp EXT_INT7 ; IRQ7 Handler
- jmp TIM2_COMP ; Timer2 Compare Handler
- jmp TIM2_OVF ;Timer2 Overflow Handler
- jmp TIM1_CAPT ;Timer1 Capture Handler
- jmp TIM1_C0MPA ;Timer1 CompareA Handler
- jmp TIM1_C0MPB ;Timer1 CompareB Handler
- jmp TIM1_0VF ;Timer1 Overflow Handler
- jmp TIM0_COMP ;Timer0 Compare Handler
- jmp TIM0_OVF ;Timer0 Overflow Handler
- jmp SPI_STC ;SPI Transfer Complete Handler
- jmp USART0_RXC ;USART0 RX Complete Handler
- jmp USART0_DRE ;USART0,UDR Empty Handler
- jmp USART0_TXC ;USART0 TX Complete Handler
- jmp ADC1 ;ADC Conversion Complete Handler
- jmp EE_RDY ;EEPROM Ready Handler
- jmp ANA_COMP ;Analog Comparator Handler
- jmp TIM1_C0MPC ;Timer1 CompareC Handler
- jmp TIM3_CAPT ;Timer3 Capture Handler
- jmp TIM3_COMPA ;Timer3 CompareA Handler
- jmp TIM3_COMPB ; Timer3 CompareB Handler
- jmp TIM3_COMPC ;Timer3 CompareC Handler
- jmp TIM3_OVF ;Timer3 Overflow Handler
- jmp USART1_RXC ;USART1 RX Complete Handler
- jmp USART1_DRE ;USART1,UDR Empty Handler
- jmp USART1_TXC ;USART1 TX Complete Handler
- jmp TWI ;Two-wire Serial Interface Interrupt Handler
- jmp SPM_RDY ;SPM Ready Handler
- ;//////////////////////////////////////////////////////////////////////////////
- EXT_INT0: ; IRQ0 Handler
- EXT_INT1: ; IRQ1 Handler
- EXT_INT2: ; IRQ2 Handler
- EXT_INT3: ; IRQ3 Handler
- EXT_INT4: ; IRQ4 Handler
- EXT_INT5: ; IRQ5 Handler
- EXT_INT6: ; IRQ6 Handler
- EXT_INT7: ; IRQ7 Handler
- TIM2_COMP: ; Timer2 Compare Handler
- TIM2_OVF: ;Timer2 Overflow Handler
- TIM1_CAPT: ;Timer1 Capture Handler
- TIM1_C0MPA: ;Timer1 CompareA Handler
- TIM1_C0MPB: ;Timer1 CompareB Handler
- TIM1_0VF: ;Timer1 Overflow Handler
- TIM0_COMP: ;Timer0 Compare Handler
- TIM0_OVF: ;Timer0 Overflow Handler
- SPI_STC: ;SPI Transfer Complete Handler
- USART0_RXC: ;USART0 RX Complete Handler
- USART0_DRE: ;USART0,UDR Empty Handler
- USART0_TXC: ;USART0 TX Complete Handler
- ADC1: ;ADC Conversion Complete Handler
- EE_RDY: ;EEPROM Ready Handler
- ANA_COMP: ;Analog Comparator Handler
- TIM1_C0MPC: ;Timer1 CompareC Handler
- TIM3_CAPT: ;Timer3 Capture Handler
- TIM3_COMPA: ;Timer3 CompareA Handler
- TIM3_COMPB: ; Timer3 CompareB Handler
- TIM3_COMPC: ;Timer3 CompareC Handler
- TIM3_OVF: ;Timer3 Overflow Handler
- USART1_RXC: ;USART1 RX Complete Handler
- USART1_DRE: ;USART1,UDR Empty Handler
- USART1_TXC: ;USART1 TX Complete Handler
- TWI: ;Two-wire Serial Interface Interrupt Handler
- SPM_RDY: ;SPM Ready Handler
- reti ; return from all no used
- ;//////////////////////////////////////////////////////////////////////////////
- ; Program start
- RESET:
- cli ; disable all interrupts
- ; Set stack pointer to top of RAM
- ldi R16, HIGH(RAMEND)
- out SPH, R16
- ldi R16, LOW(RAMEND)
- out SPL, R16
- ; Main program code place here
- ; 1. Place here code related to initialization of ports and interrupts
- ; for instance:
- ; port A as output and initial value 0
- ; DDRA=0xFF
- ; PORTA=0x00
- ; port B as input and initial value FF
- ; DDRB=0x00
- ; PORTA=0xFF
- ldi R18, 0xFF
- ldi R19, 0x00
- out DDRA, R19 ;Port A - wejście, przyciski
- out PORTA, R19 ;przyciski - stan niski
- out DDRB, R18 ;Port B - wyjście, diody
- out PORTB, R18 ;diody - stan wysoki
- ;------------------------------------------------------------------------------
- ; F2. Load initial values of index registers
- ; Z, X, Y
- ldi R16, byte3(ROMTAB<<1)
- out RAMPZ, R16
- ldi R30, low(ROMTAB<<1) ;ZL
- ldi R31, high(ROMTAB<<1) ;ZH
- ;pętla sprawdzająca czy został wciśnięty jakiś przycisk
- ;wykonywana dopóki nie zostanie wciśnięty którykolwiek z przycisków
- wait:
- r16, PINA
- cpi r16, 0xFF
- breq wait
- ;koniec pętli sprawdzajacej przyciski
- send:
- elpm R16, Z+
- cpi R16, 0xFF
- brne send_byte
- elpm R16, Z
- cpi R16, 0xFF
- breq End
- sbiw Z, 1
- elpm R16, Z+
- send_byte:
- out PORTB, R16
- jmp send
- ;------------------------------------------------------------------------------
- ; Program end - Ending loop
- ;------------------------------------------------------------------------------
- End:
- rjmp END
- ;------------------------------------------------------------------------------
- ; Table Declaration - place here test values
- ; Test with different table values and different begin addresses of table (als above 0x8000)
- ;
- TAB_ROM: .db 0x00, 0x01, 0xff, 0x03, 0xff, 0x05, 0xFF, 0xFF
- .EXIT
- ;------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement