Advertisement
Guest User

Untitled

a guest
Jan 9th, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MPASM 5.92 KB | None | 0 0
  1. ;//////////////////////////////////////////////////////////////////////////////
  2. ; Laboratory AVR Microcontrollers Part2
  3. ; Program template for lab 9
  4. ; Authors:
  5. ;
  6. ; Group:
  7. ; Section:
  8. ;
  9. ; Task:
  10. ;
  11. ; Todo:
  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. .ORG 0x200; may be omitted this is default value
  29. ; Destination table (xlengthx bytes).
  30. ; Replace "xlengthx" with correct value
  31. RAMTAB: .BYTE xlength
  32.  
  33. ;//////////////////////////////////////////////////////////////////////////////
  34. ; CODE - Program memory segment
  35. ; Please Remember that it is "word" address space
  36. ;
  37. .CSEG  
  38. .org 0x0000 ; may be omitted this is default value
  39. jmp RESET   ; Reset Handler
  40.  
  41. ; Interrupts vector table / change to your procedure only when needed
  42. jmp EXT_INT0    ; IRQ0 Handler
  43. jmp EXT_INT1    ; IRQ1 Handler
  44. jmp EXT_INT2    ; IRQ2 Handler
  45. jmp EXT_INT3    ; IRQ3 Handler
  46. jmp EXT_INT4    ; IRQ4 Handler
  47. jmp EXT_INT5    ; IRQ5 Handler
  48. jmp EXT_INT6    ; IRQ6 Handler
  49. jmp EXT_INT7    ; IRQ7 Handler
  50. jmp TIM2_COMP   ; Timer2 Compare Handler
  51. jmp TIM2_OVF    ;Timer2 Overflow Handler
  52. jmp TIM1_CAPT   ;Timer1 Capture Handler
  53. jmp TIM1_C0MPA  ;Timer1 CompareA Handler
  54. jmp TIM1_C0MPB  ;Timer1 CompareB Handler
  55. jmp TIM1_0VF    ;Timer1 Overflow Handler
  56. jmp TIM0_COMP   ;Timer0 Compare Handler
  57. jmp TIM0_OVF    ;Timer0 Overflow Handler
  58. jmp SPI_STC     ;SPI Transfer Complete Handler
  59. jmp USART0_RXC  ;USART0 RX Complete Handler
  60. jmp USART0_DRE  ;USART0,UDR Empty Handler
  61. jmp USART0_TXC  ;USART0 TX Complete Handler
  62. jmp ADC1        ;ADC Conversion Complete Handler
  63. jmp EE_RDY      ;EEPROM Ready Handler
  64. jmp ANA_COMP    ;Analog Comparator Handler
  65. jmp TIM1_C0MPC  ;Timer1 CompareC Handler
  66. jmp TIM3_CAPT   ;Timer3 Capture Handler
  67. jmp TIM3_COMPA  ;Timer3 CompareA Handler
  68. jmp TIM3_COMPB  ; Timer3 CompareB Handler
  69. jmp TIM3_COMPC  ;Timer3 CompareC Handler
  70. jmp TIM3_OVF    ;Timer3 Overflow Handler
  71. jmp USART1_RXC  ;USART1 RX Complete Handler
  72. jmp USART1_DRE  ;USART1,UDR Empty Handler
  73. jmp USART1_TXC  ;USART1 TX Complete Handler
  74. jmp TWI         ;Two-wire Serial Interface Interrupt Handler
  75. jmp SPM_RDY     ;SPM Ready Handler
  76.  
  77. ;//////////////////////////////////////////////////////////////////////////////
  78. EXT_INT0:   ; IRQ0 Handler
  79. EXT_INT1:   ; IRQ1 Handler
  80. EXT_INT2:   ; IRQ2 Handler
  81. EXT_INT3:   ; IRQ3 Handler
  82. EXT_INT4:   ; IRQ4 Handler
  83. EXT_INT5:   ; IRQ5 Handler
  84. EXT_INT6:   ; IRQ6 Handler
  85. EXT_INT7:   ; IRQ7 Handler
  86. TIM2_COMP:  ; Timer2 Compare Handler
  87. TIM2_OVF:   ;Timer2 Overflow Handler
  88. TIM1_CAPT:  ;Timer1 Capture Handler
  89. TIM1_C0MPA: ;Timer1 CompareA Handler
  90. TIM1_C0MPB: ;Timer1 CompareB Handler
  91. TIM1_0VF:   ;Timer1 Overflow Handler
  92. TIM0_COMP:  ;Timer0 Compare Handler
  93. TIM0_OVF:   ;Timer0 Overflow Handler
  94. SPI_STC:    ;SPI Transfer Complete Handler
  95. USART0_RXC: ;USART0 RX Complete Handler
  96. USART0_DRE: ;USART0,UDR Empty Handler
  97. USART0_TXC: ;USART0 TX Complete Handler
  98. ADC1:       ;ADC Conversion Complete Handler
  99. EE_RDY:     ;EEPROM Ready Handler
  100. ANA_COMP:   ;Analog Comparator Handler
  101. TIM1_C0MPC: ;Timer1 CompareC Handler
  102. TIM3_CAPT:  ;Timer3 Capture Handler
  103. TIM3_COMPA: ;Timer3 CompareA Handler
  104. TIM3_COMPB: ; Timer3 CompareB Handler
  105. TIM3_COMPC: ;Timer3 CompareC Handler
  106. TIM3_OVF:   ;Timer3 Overflow Handler
  107. USART1_RXC: ;USART1 RX Complete Handler
  108. USART1_DRE: ;USART1,UDR Empty Handler
  109. USART1_TXC: ;USART1 TX Complete Handler
  110. TWI:        ;Two-wire Serial Interface Interrupt Handler
  111. SPM_RDY:    ;SPM Ready Handler
  112. reti        ; return from all no used
  113.  
  114. ;//////////////////////////////////////////////////////////////////////////////
  115. ; Program start
  116. RESET:
  117.  
  118. cli         ; disable all interrupts
  119. ;  Set stack pointer to top of RAM
  120. ldi R16, HIGH(RAMEND)
  121. out SPH, R16
  122. ldi R16, LOW(RAMEND)
  123. out SPL, R16
  124.  
  125.  
  126. ; Main program code place here
  127. ; 1. Place here code related to initialization of ports and interrupts
  128. ; for instance:
  129. ;    port A as output and initial value 0
  130. ; DDRA=0xFF
  131. ; PORTA=0x00
  132. ;    port B as input and initial value FF
  133. ; DDRB=0x00
  134. ; PORTA=0xFF
  135.  
  136. ldi R18, 0xFF
  137. ldi R19, 0x00
  138. out DDRA, R19 ;Port A - wejście, przyciski
  139. out PORTA, R19 ;przyciski - stan niski
  140. out DDRB, R18 ;Port B - wyjście, diody
  141. out PORTB, R18 ;diody - stan wysoki
  142.  
  143.  
  144. ;------------------------------------------------------------------------------
  145. ; F2. Load initial values of index registers
  146. ;  Z, X, Y
  147.  
  148.        ldi R16, byte3(ROMTAB<<1)
  149.        out RAMPZ, R16
  150.        ldi R30, low(ROMTAB<<1)     ;ZL
  151.        ldi R31, high(ROMTAB<<1)     ;ZH
  152.  
  153. ;pętla sprawdzająca czy został wciśnięty jakiś przycisk
  154. ;wykonywana dopóki nie zostanie wciśnięty którykolwiek z przycisków
  155. wait:  
  156.        r16, PINA
  157.        cpi r16, 0xFF
  158.        breq wait
  159. ;koniec pętli sprawdzajacej przyciski
  160.  
  161. send:
  162.        elpm R16, Z+
  163.        cpi R16, 0xFF
  164.        brne send_byte
  165.  
  166.        elpm R16, Z
  167.        cpi R16, 0xFF
  168.        breq End
  169.  
  170.        sbiw Z, 1
  171.        elpm R16, Z+
  172.  
  173. send_byte:
  174.        out PORTB, R16
  175.        jmp send
  176.  
  177. ;------------------------------------------------------------------------------
  178. ; Program end - Ending loop
  179. ;------------------------------------------------------------------------------
  180. End:
  181. rjmp END
  182.  
  183. ;------------------------------------------------------------------------------
  184. ; Table Declaration -  place here test values
  185. ; Test with different table values and different begin addresses of table (als above 0x8000)
  186. ;
  187. TAB_ROM: .db 0x00, 0x01, 0xff, 0x03, 0xff, 0x05, 0xFF, 0xFF
  188. .EXIT
  189. ;------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement