Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;//////////////////////////////////////////////////////////////////////////////
- ; Laboratory AVR Microcontrollers Part2
- ; Program template for lab 9
- ; Authors: Piotr Trojan, Sebastian Skupień
- ;
- ; Group: 2
- ; Section: 1
- ;
- ; Task: ATMega128 16MHz
- ; Todo: Napisać program, który przekopiuje dane z pamięci ROM na PORTB mikrokontrolera.
- ; Rozmiar tablicy w pamięci ROM nie jest znany, jednak wiemy, że jest ona zakończona sekwencją 0x00, 0x00.
- ;
- ;
- ; 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
- RAMTAB: .BYTE 5 ; utwórz tablicę 5. elementów
- ;//////////////////////////////////////////////////////////////////////////////
- ; CODE - Program memory segment
- ; Please Remember that it is "word" address space
- ;
- .CSEG
- 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
- ldi R16, 0
- out DDRA, R16
- ;------------------------------------------------------------------------------
- ; F2. Load initial values of index registers
- ; Z, X, Y
- ldi Zl, Low(ROM_TAB * 2)
- ldi Zh, High(ROM_TAB * 2)
- PETLA:
- elpm r16, Z+
- cpi r16, 0x00
- brne CopyByte
- elpm r16, Z
- sbiw Z, 1
- cpi r16, 0x00
- elpm r16, Z
- brne CopyAfterZero
- elpm r16, Z+
- jmp End
- CopyAfterZero:
- st Y+,r16
- elpm r16, Z+
- jmp PETLA
- CopyByte:
- st Y+,r16
- jmp PETLA
- ;------------------------------------------------------------------------------
- ; 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)
- ;
- ROM_TAB: .db 0x01, 0x00, 0x03, 0x04, 0x05, 0x00, 0x00
- .EXIT
- ;------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement