Advertisement
Guest User

Untitled

a guest
Jan 18th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;//////////////////////////////////////////////////////////////////////////////
  2. ; Laboratory AVR Microcontrollers Part2
  3. ; Program template for lab 9
  4. ; Authors: Piotr Trojan, Sebastian Skupień
  5. ;
  6. ; Group: 2
  7. ; Section: 1
  8. ;
  9. ; Task: ATMega128 16MHz
  10. ; Todo: Napisać program, który przekopiuje dane z pamięci ROM na PORTB mikrokontrolera.
  11. ; Rozmiar tablicy w pamięci ROM nie jest znany, jednak wiemy, że jest ona zakończona sekwencją 0x00, 0x00.
  12. ;
  13. ;
  14. ; Version: 3.0
  15. ;//////////////////////////////////////////////////////////////////////////////
  16. .nolist ;quartz assumption 4Mhz
  17. .include "m128def.inc"
  18. ;//////////////////////////////////////////////////////////////////////////////
  19. .list
  20. .equ xlength = 100
  21. ;//////////////////////////////////////////////////////////////////////////////
  22. ; EEPROM - data non volatile memory segment
  23. .ESEG
  24.  
  25. ;//////////////////////////////////////////////////////////////////////////////
  26. ; StaticRAM - data memory.segment
  27. .DSEG
  28. RAMTAB: .BYTE 5 ; utwórz tablicę 5. elementów
  29. ;//////////////////////////////////////////////////////////////////////////////
  30. ; CODE - Program memory segment
  31. ; Please Remember that it is "word" address space
  32. ;
  33. .CSEG  
  34. jmp RESET   ; Reset Handler
  35. ; Interrupts vector table / change to your procedure only when needed
  36. jmp EXT_INT0    ; IRQ0 Handler
  37. jmp EXT_INT1    ; IRQ1 Handler
  38. jmp EXT_INT2    ; IRQ2 Handler
  39. jmp EXT_INT3    ; IRQ3 Handler
  40. jmp EXT_INT4    ; IRQ4 Handler
  41. jmp EXT_INT5    ; IRQ5 Handler
  42. jmp EXT_INT6    ; IRQ6 Handler
  43. jmp EXT_INT7    ; IRQ7 Handler
  44. jmp TIM2_COMP   ; Timer2 Compare Handler
  45. jmp TIM2_OVF    ;Timer2 Overflow Handler
  46. jmp TIM1_CAPT   ;Timer1 Capture Handler
  47. jmp TIM1_C0MPA  ;Timer1 CompareA Handler
  48. jmp TIM1_C0MPB  ;Timer1 CompareB Handler
  49. jmp TIM1_0VF    ;Timer1 Overflow Handler
  50. jmp TIM0_COMP   ;Timer0 Compare Handler
  51. jmp TIM0_OVF    ;Timer0 Overflow Handler
  52. jmp SPI_STC     ;SPI Transfer Complete Handler
  53. jmp USART0_RXC  ;USART0 RX Complete Handler
  54. jmp USART0_DRE  ;USART0,UDR Empty Handler
  55. jmp USART0_TXC  ;USART0 TX Complete Handler
  56. jmp ADC1        ;ADC Conversion Complete Handler
  57. jmp EE_RDY      ;EEPROM Ready Handler
  58. jmp ANA_COMP    ;Analog Comparator Handler
  59. jmp TIM1_C0MPC  ;Timer1 CompareC Handler
  60. jmp TIM3_CAPT   ;Timer3 Capture Handler
  61. jmp TIM3_COMPA  ;Timer3 CompareA Handler
  62. jmp TIM3_COMPB  ; Timer3 CompareB Handler
  63. jmp TIM3_COMPC  ;Timer3 CompareC Handler
  64. jmp TIM3_OVF    ;Timer3 Overflow Handler
  65. jmp USART1_RXC  ;USART1 RX Complete Handler
  66. jmp USART1_DRE  ;USART1,UDR Empty Handler
  67. jmp USART1_TXC  ;USART1 TX Complete Handler
  68. jmp TWI         ;Two-wire Serial Interface Interrupt Handler
  69. jmp SPM_RDY     ;SPM Ready Handler
  70. ;//////////////////////////////////////////////////////////////////////////////
  71. EXT_INT0:   ; IRQ0 Handler
  72. EXT_INT1:   ; IRQ1 Handler
  73. EXT_INT2:   ; IRQ2 Handler
  74. EXT_INT3:   ; IRQ3 Handler
  75. EXT_INT4:   ; IRQ4 Handler
  76. EXT_INT5:   ; IRQ5 Handler
  77. EXT_INT6:   ; IRQ6 Handler
  78. EXT_INT7:   ; IRQ7 Handler
  79. TIM2_COMP:  ; Timer2 Compare Handler
  80. TIM2_OVF:   ;Timer2 Overflow Handler
  81. TIM1_CAPT:  ;Timer1 Capture Handler
  82. TIM1_C0MPA: ;Timer1 CompareA Handler
  83. TIM1_C0MPB: ;Timer1 CompareB Handler
  84. TIM1_0VF:   ;Timer1 Overflow Handler
  85. TIM0_COMP:  ;Timer0 Compare Handler
  86. TIM0_OVF:   ;Timer0 Overflow Handler
  87. SPI_STC:    ;SPI Transfer Complete Handler
  88. USART0_RXC: ;USART0 RX Complete Handler
  89. USART0_DRE: ;USART0,UDR Empty Handler
  90. USART0_TXC: ;USART0 TX Complete Handler
  91. ADC1:       ;ADC Conversion Complete Handler
  92. EE_RDY:     ;EEPROM Ready Handler
  93. ANA_COMP:   ;Analog Comparator Handler
  94. TIM1_C0MPC: ;Timer1 CompareC Handler
  95. TIM3_CAPT:  ;Timer3 Capture Handler
  96. TIM3_COMPA: ;Timer3 CompareA Handler
  97. TIM3_COMPB: ; Timer3 CompareB Handler
  98. TIM3_COMPC: ;Timer3 CompareC Handler
  99. TIM3_OVF:   ;Timer3 Overflow Handler
  100. USART1_RXC: ;USART1 RX Complete Handler
  101. USART1_DRE: ;USART1,UDR Empty Handler
  102. USART1_TXC: ;USART1 TX Complete Handler
  103. TWI:        ;Two-wire Serial Interface Interrupt Handler
  104. SPM_RDY:    ;SPM Ready Handler
  105. reti        ; return from all no used
  106.  
  107. ;//////////////////////////////////////////////////////////////////////////////
  108. ; Program start
  109. RESET:
  110.  
  111. cli         ; disable all interrupts
  112. ;  Set stack pointer to top of RAM
  113. ldi R16, HIGH(RAMEND)
  114. out SPH, R16
  115. ldi R16, LOW(RAMEND)
  116. out SPL, R16
  117.  
  118.  
  119. ; Main program code place here
  120. ; 1. Place here code related to initialization of ports and interrupts
  121. ; for instance:
  122. ;    port A as output and initial value 0
  123. ldi R16, 0
  124. out DDRA, R16
  125. ;------------------------------------------------------------------------------
  126. ; F2. Load initial values of index registers
  127. ;  Z, X, Y
  128. ldi Zl, Low(ROM_TAB * 2)
  129. ldi Zh, High(ROM_TAB * 2)
  130. PETLA:
  131. elpm r16, Z+
  132. cpi r16, 0x00
  133. brne CopyByte
  134. elpm r16, Z
  135. sbiw Z, 1
  136. cpi r16, 0x00
  137. elpm r16, Z
  138. brne CopyAfterZero
  139. elpm r16, Z+
  140. jmp End
  141. CopyAfterZero:
  142. st Y+,r16
  143. elpm r16, Z+
  144. jmp PETLA
  145. CopyByte:
  146. st Y+,r16
  147. jmp PETLA
  148.  
  149.  
  150. ;------------------------------------------------------------------------------
  151. ; Program end - Ending loop
  152. ;------------------------------------------------------------------------------
  153. End:
  154. rjmp END
  155.  
  156. ;------------------------------------------------------------------------------
  157. ; Table Declaration -  place here test values
  158. ; Test with different table values and different begin addresses of table (als above 0x8000)
  159. ;
  160. ROM_TAB: .db 0x01, 0x00, 0x03, 0x04, 0x05, 0x00, 0x00
  161. .EXIT
  162. ;------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement