Advertisement
Guest User

Untitled

a guest
Dec 11th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 8.56 KB | None | 0 0
  1. //////////////////////////////////////////////////////////////////////////////
  2. // Laboratory AVR Microcontrollers Part2
  3. // Program template for lab 9
  4. // Please fill in this information before starting coding
  5. // Authors:
  6. //
  7. // Group: 1
  8. // Section: 2
  9. //
  10. // Task: B
  11. //
  12. // Todo:
  13. //
  14. //
  15. // Version: 5.0
  16. //////////////////////////////////////////////////////////////////////////////
  17. .nolist ;quartz assumption 4Mhz
  18. .include "m2560def.inc"
  19. ;//////////////////////////////////////////////////////////////////////////////
  20. .list
  21. .equ xlength =  100
  22. ;//////////////////////////////////////////////////////////////////////////////
  23. ; EEPROM - data non volatile memory segment
  24. .ESEG
  25.  
  26. ;//////////////////////////////////////////////////////////////////////////////
  27. ; StaticRAM - data memory.segment
  28. .DSEG
  29. .ORG 0x200; may be omitted this is default value
  30. ; Destination table (xlengthx bytes).
  31. ; Replace "xlengthx" with correct value
  32. TAB_RAM: .BYTE 256
  33.  
  34. ;//////////////////////////////////////////////////////////////////////////////
  35. ; CODE - Program memory segment
  36. ; Please Remember that it is "word" address space
  37. ;
  38. .CSEG  
  39. .org 0x0000 ; may be omitted this is default value
  40. jmp RESET   ; Reset Handler
  41.  
  42. ; Interrupts vector table / change to your procedure only when needed
  43. jmp EXT_INT0    ; IRQ0 Handler
  44. jmp EXT_INT1    ; IRQ1 Handler
  45. jmp EXT_INT2    ; IRQ2 Handler
  46. jmp EXT_INT3    ; IRQ3 Handler
  47. jmp EXT_INT4    ; IRQ4 Handler
  48. jmp EXT_INT5    ; IRQ5 Handler
  49. jmp EXT_INT6    ; IRQ6 Handler
  50. jmp EXT_INT7    ; IRQ7 Handler
  51. jmp HPCINT0     ; PCINT0 Handler
  52. jmp HPCINT1     ; PCINT1 Handler
  53. jmp HPCINT2     ; PCINT2 Handler
  54. jmp WDT         ; WDT Handler
  55. jmp TIM2_COMPA  ; Timer2 CompareA Handler
  56. jmp TIM2_COMPB  ; Timer2 CompareB Handler
  57. jmp TIM2_OVF    ; Timer2 Overflow Handler
  58. jmp TIM1_CAPT   ; Timer1 Capture Handler
  59. jmp TIM1_C0MPA  ; Timer1 CompareA Handler
  60. jmp TIM1_C0MPB  ; Timer1 CompareB Handler
  61. jmp TIM1_COMPC  ; Timer1 CompareC Handler
  62. jmp TIM1_0VF    ; Timer1 Overflow Handler
  63. jmp TIM0_COMPA  ; Timer0 CompareA Handler
  64. jmp TIM0_COMPB  ; Timer0 CompareB Handler
  65. jmp TIM0_OVF    ; Timer0 Overflow Handler
  66. jmp SPI_STC     ; SPI Transfer Complete Handler
  67. jmp USART0_RXC  ; USART0 RX Complete Handler
  68. jmp USART0_UDRE ; USART0,UDR Empty Handler
  69. jmp USART0_TXC  ; USART0 TX Complete Handler
  70. jmp ANA_COMP    ; Analog COmparator Handler
  71. jmp HADC            ; ADC Conversion Complete Handler
  72. jmp EE_RDY      ; EEPROM Ready Handler
  73. jmp TIM3_CAPT   ; Timer3 Capture Handler
  74. jmp TIM3_COMPA  ; Timer3 CompareA Handler
  75. jmp TIM3_COMPB  ; Timer3 CompareB Handler
  76. jmp TIM3_COMPC  ; Timer3 CompareC Handler
  77. jmp TIM3_OVF    ; Timer3 Overflow Handler
  78. jmp USART1_RXC  ; USART1 RX Complete Handler
  79. jmp USART1_UDRE ; USART1,UDR Empty Handler
  80. jmp USART1_TXC  ; USART1 TX Complete Handler
  81. jmp TWI         ; Two-wire Serial Interface Interrupt Handler
  82. jmp SPM_RDY     ; SPM Ready Handler
  83. jmp TIM4_CAPT   ; Timer4 Capture Handler
  84. jmp TIM4_COMPA  ; Timer4 CompareA Handler
  85. jmp TIM4_COMPB  ; Timer4 CompareB Handler
  86. jmp TIM4_COMPC  ; Timer4 CompareC Handler
  87. jmp TIM4_OVF    ; Timer4 Overlflow Handler
  88. jmp TIM5_CAPT   ; Timer5 Capture Handler
  89. jmp TIM5_COMPA  ; Timer5 CompareA Handler
  90. jmp TIM5_COMPB  ; Timer5 CompareB Handler
  91. jmp TIM5_COMPC  ; Timer5 CompareC Handler
  92. jmp TIM5_OVF    ; Timer5 Overlflow Handler
  93. jmp USART2_RXC  ; USART2 RX Complete Handler
  94. jmp USART2_UDRE ; USART2,UDR Empty Handler
  95. jmp USART2_TXC  ; USART2 TX Complete Handler
  96. jmp USART3_RXC  ; USART3 RX Complete Handler
  97. jmp USART3_UDRE ; USART3,UDR Empty Handler
  98. jmp USART3_TXC  ; USART3 TX Complete Handler
  99.  
  100. //////////////////////////////////////////////////////////////////////////////
  101. EXT_INT0:   ; IRQ0 Handler
  102. EXT_INT1:   ; IRQ1 Handler
  103. EXT_INT2:   ; IRQ2 Handler
  104. EXT_INT3:   ; IRQ3 Handler
  105. EXT_INT4:   ; IRQ4 Handler
  106. EXT_INT5:   ; IRQ5 Handler
  107. EXT_INT6:   ; IRQ6 Handler
  108. EXT_INT7:   ; IRQ7 Handler
  109. HPCINT0:        ; PCINT0 Handler
  110. HPCINT1:        ; PCINT1 Handler
  111. HPCINT2:        ; PCINT2 Handler
  112. WDT:        ; WDT Handler
  113. TIM2_COMPA: ; Timer2 CompareA Handler
  114. TIM2_COMPB: ; Timer2 CompareB Handler
  115. TIM2_OVF:   ; Timer2 Overflow Handler
  116. TIM1_CAPT:  ; Timer1 Capture Handler
  117. TIM1_C0MPA: ; Timer1 CompareA Handler
  118. TIM1_C0MPB: ; Timer1 CompareB Handler
  119. TIM1_COMPC: ; Timer1 CompareC Handler
  120. TIM1_0VF:   ; Timer1 Overflow Handler
  121. TIM0_COMPA: ; Timer0 CompareA Handler
  122. TIM0_COMPB: ; Timer0 CompareB Handler
  123. TIM0_OVF:   ; Timer0 Overflow Handler
  124. SPI_STC:    ; SPI Transfer Complete Handler
  125. USART0_RXC: ; USART0 RX Complete Handler
  126. USART0_UDRE:; USART0,UDR Empty Handler
  127. USART0_TXC: ; USART0 TX Complete Handler
  128. ANA_COMP:   ; Analog COmparator Handler
  129. HADC:       ; ADC Conversion Complete Handler
  130. EE_RDY:     ; EEPROM Ready Handler
  131. TIM3_CAPT:  ; Timer3 Capture Handler
  132. TIM3_COMPA: ; Timer3 CompareA Handler
  133. TIM3_COMPB: ; Timer3 CompareB Handler
  134. TIM3_COMPC: ; Timer3 CompareC Handler
  135. TIM3_OVF:   ; Timer3 Overflow Handler
  136. USART1_RXC: ; USART1 RX Complete Handler
  137. USART1_UDRE:; USART1,UDR Empty Handler
  138. USART1_TXC: ; USART1 TX Complete Handler
  139. TWI:        ; Two-wire Serial Interface Interrupt Handler
  140. SPM_RDY:    ; SPM Ready Handler
  141. TIM4_CAPT:  ; Timer4 Capture Handler
  142. TIM4_COMPA: ; Timer4 CompareA Handler
  143. TIM4_COMPB: ; Timer4 CompareB Handler
  144. TIM4_COMPC: ; Timer4 CompareC Handler
  145. TIM4_OVF:   ; Timer4 Overlflow Handler
  146. TIM5_CAPT:  ; Timer5 Capture Handler
  147. TIM5_COMPA: ; Timer5 CompareA Handler
  148. TIM5_COMPB: ; Timer5 CompareB Handler
  149. TIM5_COMPC: ; Timer5 CompareC Handler
  150. TIM5_OVF:   ; Timer5 Overlflow Handler
  151. USART2_RXC: ; USART2 RX Complete Handler
  152. USART2_UDRE:; USART2,UDR Empty Handler
  153. USART2_TXC: ; USART2 TX Complete Handler
  154. USART3_RXC: ; USART3 RX Complete Handler
  155. USART3_UDRE:; USART3,UDR Empty Handler
  156. USART3_TXC: ; USART3 TX Complete Handler
  157.     reti        ; return from all no used
  158.  
  159. ;//////////////////////////////////////////////////////////////////////////////
  160. ; Program start
  161. RESET:
  162.  
  163.     cli         ; disable all interrupts
  164. //  Set stack pointer to top of RAM
  165.     ldi R16, HIGH(RAMEND)
  166.     out SPH, R16
  167.     ldi R16, LOW(RAMEND)
  168.     out SPL, R16
  169.  
  170.     // 1. Place here code related to initialization of ports and interrupts
  171.  
  172.     ldi R17, 0x00
  173.     ldi R18, 0xFF
  174.  
  175.     out DDRB, R18
  176.  
  177.  
  178. // 2. Enable interrupts if needed
  179.     sei
  180.     ldi R19, 0b00000010
  181.     sts TIMSK1, R19
  182.  
  183.     ldi R19, 0b00000101
  184.     sts TCCR1B, R19
  185.  
  186.     ldi R19, 0b00000000
  187.     sts TCCR1A, R19
  188.  
  189.     ldi R19, 0b00001100
  190.     sts OCR1AH, R19
  191.  
  192.     ldi R19, 0b00110101
  193.     sts OCR1AL, R19
  194. //------------------------------------------------------------------------------
  195. // 3. Load initial values of index registers
  196.  
  197.  
  198.  
  199.  
  200.  
  201. //------------------------------------------------------------------------------
  202. // Program end - Ending loop
  203. //------------------------------------------------------------------------------
  204. End:
  205.     out PORTB, R18
  206.     rjmp END
  207.  
  208. //------------------------------------------------------------------------------
  209. // Table Declaration -  place here test values
  210. // Test with different table values and different begin addresses of table (also above 0x8000)
  211. //
  212. //.org 0x8000
  213. TAB_ROM:    .db     0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x1F
  214.             .db     0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1F, 0x1F
  215.             .db     0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F
  216.             .db     0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F
  217.             .db     0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F
  218.             .db     0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F
  219.             .db     0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F
  220.             .db     0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F
  221.             .db     0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F
  222.             .db     0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F
  223.             .db     0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaA, 0xaB, 0xaC, 0xaD, 0xAE, 0xAF
  224.             .db     0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF
  225.             .db     0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF
  226.             .db     0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF
  227.             .db     0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0
  228.             // please correct end of this table according to the guidelines given by the teacher
  229.             .db     0x00,0x00
  230. .EXIT
  231. //------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement