Advertisement
Guest User

Untitled

a guest
May 23rd, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  Laboratory AVR Microcontrollers Part2 +++++++++++++++++++++++++++++++++++++++; Program template for lab 22 ; Authors: ;Żmijewski Patryk, ;Budny Grzegorz ;Prajzler Łukasz ; Group: ; INF sec 1 ; Section: ; 1 ; Task: ; Copy from ROM to RAM only once ; Todo: ; ; ; Version: 1.0 ;////////////////////////////////////////////////////////////////////////////// ; Please Check&Change .nolist ;quartz assumption 4Mhz ; Replace "xlengthx" with correct value #define xlength 256 ;Replace value of guardian according to your task assumptions #define guardian 0xFF, 0xFF ; .include "m128def.inc" .list ; ;////////////////////////////////////////////////////////////////////////////// ; EEPROM - data non volatile memory segment .ESEG ; ;//////////////////////////////////////////////////////////////////////////////
  2. ; StaticRAM - data memory.segment .DSEG .ORG 0x100; may be omitted this is default value ; Destination table (xlengthx bytes). ; 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 ; ;////////////////////////////////////////////////////////////////////////////// ; 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 to define port A as input with pull-up resistors you should place ldi r17, 0x00 out DDRA, r17 ldi r17, 0x00 out PORTA, r17 ldi r18, 0xFF out DDRB, r18 ldi r18, 0xFF out PORTB, r18 ;------------------------------------------------------------------------------ ; F2. Load initial values of index registers ; Z, X, Y ldi r30, low(ROMTAB*2) ldi r31, high(ROMTAB<<1) ldi r18, byte3(ROMTAB*2) out RAMPZ, r18 ldi XL ,byte1(RAMTAB) ldi XH ,byte2(RAMTAB)     PROG: elpm r18,Z+ cpi r18,0xFF breq CHECK STORE: st X+, r18 jmp PROG ;------------------------------------------------------------------------------ ; Program end - Ending loop ;------------------------------------------------------------------------------ CHECK: elpm r19,Z
  3. cpi r19, 0xFF breq END jmp STORE End: rjmp END ;------------------------------------------------------------------------------ ; Table Declaration - place here test values ; Test with different table values and different begin addresses of table (als above 0x8000) ; ;.org 0x8000 ROMTAB: .db 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F   .db 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1F, 0x1F   .db 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F   .db 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F   .db 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F   .db 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F   .db 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F   .db 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F   .db 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F   .db 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F   .db 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaA, 0xaB, 0xaC, 0xaD, 0xAE, 0xAF   .db 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF   .db 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF   .db 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF   .db 0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0   .db guardian .EXIT ;------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement