ATmega64.asm 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. ; Автор: shilow@ukr.net
  2. ; Дата:
  3. ; Название:
  4. ; Версия:
  5. ; Имя файла:
  6. ; Для AVR: ATmega64
  7. ; Тактовая частота:
  8. ; Выполняемые функции:
  9. ;
  10. ;
  11. ;******************************
  12. .listmac ; развернём макросы
  13. ; инклуды
  14. .nolist
  15. .include "m64def.inc"
  16. .list
  17. ;******************************
  18. ; опредления
  19. .def temp = r16 ; рабочая переменная
  20. ;******************************
  21. ; константы
  22. .equ a = 0 ; sample
  23. ;******************************
  24. ; ячейки в СОЗУ, 4KB
  25. .DSEG
  26. ;.ORG SRAM_START
  27. Sample: .byte 30
  28. ;******************************
  29. ; константы в EEPROM, 2KB
  30. .ESEG
  31. smpl1: .DW 0x0000 ; sample 1
  32. smpl2: .DB 0x05 ; sample 2
  33. ;******************************
  34. ; память программ, 64KB
  35. .CSEG
  36. .ORG 0
  37. ;******************************
  38. ; Таблица векторов прерываний
  39. jmp RESET ; Reset Handler
  40. jmp EXT_INT0 ; IRQ0 Handler
  41. jmp EXT_INT1 ; IRQ1 Handler
  42. jmp EXT_INT2 ; IRQ2 Handler
  43. jmp EXT_INT3 ; IRQ3 Handler
  44. jmp EXT_INT4 ; IRQ4 Handler
  45. jmp EXT_INT5 ; IRQ5 Handler
  46. jmp EXT_INT6 ; IRQ6 Handler
  47. jmp EXT_INT7 ; IRQ7 Handler
  48. jmp TIM2_COMP ; Timer2 Compare Handler
  49. jmp TIM2_OVF ; Timer2 Overflow Handler
  50. jmp TIM1_CAPT ; Timer1 Capture Handler
  51. jmp TIM1_COMPA ; Timer1 CompareA Handler
  52. jmp TIM1_COMPB ; Timer1 CompareB Handler
  53. jmp TIM1_OVF ; Timer1 Overflow Handler
  54. jmp TIM0_COMP ; Timer0 Compare Handler
  55. jmp TIM0_OVF ; Timer0 Overflow Handler
  56. jmp SPI_STC ; SPI Transfer Complete Handler
  57. jmp USART0_RXC ; USART0 RX Complete Handler
  58. jmp USART0_DRE ; USART0,UDR Empty Handler
  59. jmp USART0_TXC ; USART0 TX Complete Handler
  60. jmp ADCCCH ; ADC Conversion Complete Handler
  61. jmp EE_RDY ; EEPROM Ready Handler
  62. jmp ANA_COMP ; Analog Comparator Handler
  63. jmp TIM1_COMPC ; Timer1 CompareC Handler
  64. jmp TIM3_CAPT ; Timer3 Capture Handler
  65. jmp TIM3_COMPA ; Timer3 CompareA Handler
  66. jmp TIM3_COMPB ; Timer3 CompareB Handler
  67. jmp TIM3_COMPC ; Timer3 CompareC Handler
  68. jmp TIM3_OVF ; Timer3 Overflow Handler
  69. jmp USART1_RXC ; USART1 RX Complete Handler
  70. jmp USART1_DRE ; USART1,UDR Empty Handler
  71. jmp USART1_TXC ; USART1 TX Complete Handler
  72. jmp TWI ; Two-wire Serial Interface Handler
  73. jmp SPM_RDY ; SPM Ready Handler
  74. ;
  75. ;******************************
  76. ;;;;; Первичная инициализация
  77. RESET:
  78. ; Set Stack Pointer to top of RAM
  79. ldi temp,high(RAMEND)
  80. out SPH,temp
  81. ldi temp,low(RAMEND)
  82. out SPL,temp
  83. ; выкл. аналог, компаратор
  84. ldi temp,1<<ACD
  85. out ACSR,temp
  86. ; Enable interrupts
  87. sei
  88. ;******************************
  89. ;;;;; Основная программа
  90. BEGIN:
  91. rjmp BEGIN
  92. ;******************************
  93. ;;;;; Подпрограммы
  94. ;******************************
  95. ;;;;; Обработчики прерываний
  96. ; IRQ0 Handler
  97. EXT_INT0:
  98. reti
  99. ; IRQ1 Handler
  100. EXT_INT1:
  101. reti
  102. ; IRQ2 Handler
  103. EXT_INT2:
  104. reti
  105. ; IRQ3 Handler
  106. EXT_INT3:
  107. reti
  108. ; IRQ4 Handler
  109. EXT_INT4:
  110. reti
  111. ; IRQ5 Handler
  112. EXT_INT5:
  113. reti
  114. ; IRQ6 Handler
  115. EXT_INT6:
  116. reti
  117. ; IRQ7 Handler
  118. EXT_INT7:
  119. reti
  120. ; Timer2 Compare Handler
  121. TIM2_COMP:
  122. reti
  123. ; Timer2 Overflow Handler
  124. TIM2_OVF:
  125. reti
  126. ; Timer1 Capture Handler
  127. TIM1_CAPT:
  128. reti
  129. ; Timer1 CompareA Handler
  130. TIM1_COMPA:
  131. reti
  132. ; Timer1 CompareB Handler
  133. TIM1_COMPB:
  134. reti
  135. ; Timer1 Overflow Handler
  136. TIM1_OVF:
  137. reti
  138. ; Timer0 Compare Handler
  139. TIM0_COMP:
  140. reti
  141. ; Timer0 Overflow Handler
  142. TIM0_OVF:
  143. reti
  144. ; SPI Transfer Complete Handler
  145. SPI_STC:
  146. reti
  147. ; USART0 RX Complete Handler
  148. USART0_RXC:
  149. reti
  150. ; USART0,UDR Empty Handler
  151. USART0_DRE:
  152. reti
  153. ; USART0 TX Complete Handler
  154. USART0_TXC:
  155. reti
  156. ; ADC Conversion Complete Handler
  157. ADCCCH:
  158. reti
  159. ; EEPROM Ready Handler
  160. EE_RDY:
  161. reti
  162. ; Analog Comparator Handler
  163. ANA_COMP:
  164. reti
  165. ; Timer1 CompareC Handler
  166. TIM1_COMPC:
  167. reti
  168. ; Timer3 Capture Handler
  169. TIM3_CAPT:
  170. reti
  171. ; Timer3 CompareA Handler
  172. TIM3_COMPA:
  173. reti
  174. ; Timer3 CompareB Handler
  175. TIM3_COMPB:
  176. reti
  177. ; Timer3 CompareC Handler
  178. TIM3_COMPC:
  179. reti
  180. ; Timer3 Overflow Handler
  181. TIM3_OVF:
  182. reti
  183. ; USART1 RX Complete Handler
  184. USART1_RXC:
  185. reti
  186. ; USART1,UDR Empty Handler
  187. USART1_DRE:
  188. reti
  189. ; USART1 TX Complete Handler
  190. USART1_TXC:
  191. reti
  192. ; Two-wire Serial Interface Handler
  193. TWI:
  194. reti
  195. ; SPM Ready Handler
  196. SPM_RDY:
  197. reti
  198. .exit