Advertisement
Guest User

Untitled

a guest
Apr 19th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.49 KB | None | 0 0
  1. ;**************************************************************** ;Программа 6.1 для МК ATx8515: демонстрация работы UART
  2. ;При нажатии на SW4 (START) происходит последовательная передача
  3. ;по каналу UART трёх байтов сообщения, считываемых из ячеек flash-памяти. ;Частота тактового генератора = 3,69 МГц,
  4. ;при UBRRL=11 скорость передачи 19219 бод
  5. ;Соединения: PD4-SW4, PD1-TXD (PD0-RXD) ;*****************************************************************
  6. ;.include "8515def.inc"
  7. .include "m8515def.inc"
  8. .def temp = r16
  9. .def count = r17
  10. ;файл определений AT90S8515
  11. ;файл определений ATmega8515
  12. ;временный регистр
  13. ;счётчик
  14. ;4-й вывод порта PD
  15. ;загрузка адреса текста
  16. ; сообщения в регистр Z
  17. ;установка счётчика байтов
  18. ;настройка
  19. ; вывода
  20. ; порта PD4
  21. ; на ввод
  22. .equ START = 4
  23. .org $000
  24. ;***Инициализация МК
  25. INIT:
  26. ldi ZL,low(text*2)
  27. ldi ZH,high(text*2)
  28. ldi count,3
  29. clr temp
  30. out DDRD,temp
  31. ldi temp,0x10
  32. out PORTD,temp
  33. rjmp init
  34. ;***Настройка UART на передачу данных
  35. ;/// для AT90S8515 регистр UCR вместо UCSRB и UBRR
  36. ldi temp,0x08
  37. out UCSRB,temp
  38. ldi temp,11
  39. out UBRRL,temp
  40. WAIT_START:sbic PIND,START
  41. rjmp WAIT_START
  42. OUTPUT: lpm
  43. out UDR,r0
  44. ;разрешение
  45. ; передачи по каналу UART
  46. ;скорость передачи для UBRRL (UBRR)
  47. ; 19219 бод
  48. ;ожидание нажатия
  49. ; кнопки START
  50. ;считывание байта из flash-памяти в r0
  51. ;вывод байта в передатчик
  52. ;/// для AT90S8515 регистр USR вместо UCSRA
  53. sbi UCSRA,TXC ; сброс флага TXC
  54. WAIT: sbic UCSRA,TXC ;ожидание
  55. rjmp next
  56. rjmp WAIT next: adiw zl,1 dec count
  57. brne OUTPUT fin: rjmp fin
  58. text: .db 'A','V','R'
  59.  
  60. ;Программа 6.2
  61. ; завершения
  62. ; передачи
  63. ;увеличение указателя адреса на 1
  64. ;уменьшение счётчика на 1
  65. ;продолжение вывода
  66. ;передача завершена
  67. ;текст сообщения (коды $41,$56,$52)
  68.  
  69. ;**********************************************************************
  70. ;Программа 6.2 для МК ATx8515: демонстрация работы канала UART
  71. ;в режиме приема трёх байтов. Частота тактового генератора = 3,69 МГц, ;при UBRRL=11 скорость обмена 19219 бод
  72. ;Соединения: шлейфом порт PB-LED, PD5-SW5, PD0-RXD (PD1-TXD) ;**********************************************************************
  73. ;.include "8515def.inc"
  74. .include "m8515def.inc"
  75. .def temp = r16
  76. .def count = r17
  77. ;файл определений AT90S8515
  78. ;файл определений ATmega8515
  79. .equ SHOW = 5
  80. .org $000
  81. ;***Инициализация МК
  82. ;временный
  83. ;счётчик
  84. ;5-й вывод
  85. регистр
  86. порта PD
  87. INIT:
  88. ldi temp,low(RAMEND)
  89. out SPL,temp
  90. ldi temp,high(RAMEND)
  91. out SPH,temp
  92. ldi YL,0x80
  93. ldi YH,0x01
  94. ldi count,3
  95. ser temp
  96. out DDRB,temp
  97. out PORTB,temp
  98. clr temp
  99. out DDRD,temp
  100. ldi temp,0x20
  101. ;установка
  102. ; указателя стека
  103. ; на последнюю
  104. ; ячейку ОЗУ
  105. ;в регистре Y - адрес, по которому
  106. ; происходит запись принятых данных
  107. ;установка счётчика байтов
  108. ;настройка
  109. ; порта PB на вывод
  110. ; и выключение светодиодов
  111. ;настройка
  112. ; вывода PD5
  113. rjmp init
  114.  
  115. ;/// для AT90S8515 регистр UCR вместо UCSRB и UBRR
  116. WAIT_RXC:
  117. INPUT:
  118. LOOP:
  119. WAIT_SHOW:
  120. sbic UCSRA,RXC
  121. rjmp INPUT
  122. rjmp WAIT_RXC
  123. in temp,UDR
  124. st Y+,temp
  125. dec count
  126. brne WAIT_RXC
  127. clr temp
  128. out PORTB,temp
  129. ldi YL,0x80
  130. ldi count,3
  131. sbic PIND,SHOW
  132. rjmp WAIT_SHOW
  133. ld temp, Y+
  134. com temp
  135. out PORTB,temp
  136. rcall DELAY
  137. dec count
  138. brne WAIT_SHOW
  139. ser temp
  140. out PORTB,temp
  141. rjmp LOOP
  142. ;ожидание
  143. ; завершения
  144. ; приёма
  145. ;ввод байта из приёмника
  146. ;и сохранение в памяти
  147. ;уменьшение счётчика на 1
  148. ;продолжение приема
  149. ;сигнализация –
  150. ; приём завершен
  151. ;установка начального адреса
  152. ;установка счётчика байтов
  153. ;ожидание нажатия
  154. ; кнопки SW5
  155. ;считывание байта из памяти
  156. ;инвертирование
  157. ;вывод на светодиоды
  158. ;задержка
  159. ;если показаны не все данные,
  160. ; то продолжение при нажатии SW5
  161. ;вывод окончен
  162. ;светодиоды погашены
  163. ;повторение вывода
  164. ldi temp,0x10
  165. out UCSRB,temp
  166. ldi temp,11
  167. out UBRRL,temp
  168. ;разрешение приёма
  169. ; по каналу UART
  170. ;скорость приёма/передачи
  171. ; 19219 бод
  172. ;/// для AT90S8515 регистр USR вместо UCSRA
  173. ;*** Задержка *** DELAY: ldi r19,20
  174. ldi r20,255
  175. ldi r21,255 dd: dec r21 brne dd
  176. dec r20
  177. brne dd
  178. dec r19
  179. brne dd
  180. ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement