Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;**************************************************************** ;Программа 6.1 для МК ATx8515: демонстрация работы UART
- ;При нажатии на SW4 (START) происходит последовательная передача
- ;по каналу UART трёх байтов сообщения, считываемых из ячеек flash-памяти. ;Частота тактового генератора = 3,69 МГц,
- ;при UBRRL=11 скорость передачи 19219 бод
- ;Соединения: PD4-SW4, PD1-TXD (PD0-RXD) ;*****************************************************************
- ;.include "8515def.inc"
- .include "m8515def.inc"
- .def temp = r16
- .def count = r17
- ;файл определений AT90S8515
- ;файл определений ATmega8515
- ;временный регистр
- ;счётчик
- ;4-й вывод порта PD
- ;загрузка адреса текста
- ; сообщения в регистр Z
- ;установка счётчика байтов
- ;настройка
- ; вывода
- ; порта PD4
- ; на ввод
- .equ START = 4
- .org $000
- ;***Инициализация МК
- INIT:
- ldi ZL,low(text*2)
- ldi ZH,high(text*2)
- ldi count,3
- clr temp
- out DDRD,temp
- ldi temp,0x10
- out PORTD,temp
- rjmp init
- ;***Настройка UART на передачу данных
- ;/// для AT90S8515 регистр UCR вместо UCSRB и UBRR
- ldi temp,0x08
- out UCSRB,temp
- ldi temp,11
- out UBRRL,temp
- WAIT_START:sbic PIND,START
- rjmp WAIT_START
- OUTPUT: lpm
- out UDR,r0
- ;разрешение
- ; передачи по каналу UART
- ;скорость передачи для UBRRL (UBRR)
- ; 19219 бод
- ;ожидание нажатия
- ; кнопки START
- ;считывание байта из flash-памяти в r0
- ;вывод байта в передатчик
- ;/// для AT90S8515 регистр USR вместо UCSRA
- sbi UCSRA,TXC ; сброс флага TXC
- WAIT: sbic UCSRA,TXC ;ожидание
- rjmp next
- rjmp WAIT next: adiw zl,1 dec count
- brne OUTPUT fin: rjmp fin
- text: .db 'A','V','R'
- ;Программа 6.2
- ; завершения
- ; передачи
- ;увеличение указателя адреса на 1
- ;уменьшение счётчика на 1
- ;продолжение вывода
- ;передача завершена
- ;текст сообщения (коды $41,$56,$52)
- ;**********************************************************************
- ;Программа 6.2 для МК ATx8515: демонстрация работы канала UART
- ;в режиме приема трёх байтов. Частота тактового генератора = 3,69 МГц, ;при UBRRL=11 скорость обмена 19219 бод
- ;Соединения: шлейфом порт PB-LED, PD5-SW5, PD0-RXD (PD1-TXD) ;**********************************************************************
- ;.include "8515def.inc"
- .include "m8515def.inc"
- .def temp = r16
- .def count = r17
- ;файл определений AT90S8515
- ;файл определений ATmega8515
- .equ SHOW = 5
- .org $000
- ;***Инициализация МК
- ;временный
- ;счётчик
- ;5-й вывод
- регистр
- порта PD
- INIT:
- ldi temp,low(RAMEND)
- out SPL,temp
- ldi temp,high(RAMEND)
- out SPH,temp
- ldi YL,0x80
- ldi YH,0x01
- ldi count,3
- ser temp
- out DDRB,temp
- out PORTB,temp
- clr temp
- out DDRD,temp
- ldi temp,0x20
- ;установка
- ; указателя стека
- ; на последнюю
- ; ячейку ОЗУ
- ;в регистре Y - адрес, по которому
- ; происходит запись принятых данных
- ;установка счётчика байтов
- ;настройка
- ; порта PB на вывод
- ; и выключение светодиодов
- ;настройка
- ; вывода PD5
- rjmp init
- ;/// для AT90S8515 регистр UCR вместо UCSRB и UBRR
- WAIT_RXC:
- INPUT:
- LOOP:
- WAIT_SHOW:
- sbic UCSRA,RXC
- rjmp INPUT
- rjmp WAIT_RXC
- in temp,UDR
- st Y+,temp
- dec count
- brne WAIT_RXC
- clr temp
- out PORTB,temp
- ldi YL,0x80
- ldi count,3
- sbic PIND,SHOW
- rjmp WAIT_SHOW
- ld temp, Y+
- com temp
- out PORTB,temp
- rcall DELAY
- dec count
- brne WAIT_SHOW
- ser temp
- out PORTB,temp
- rjmp LOOP
- ;ожидание
- ; завершения
- ; приёма
- ;ввод байта из приёмника
- ;и сохранение в памяти
- ;уменьшение счётчика на 1
- ;продолжение приема
- ;сигнализация –
- ; приём завершен
- ;установка начального адреса
- ;установка счётчика байтов
- ;ожидание нажатия
- ; кнопки SW5
- ;считывание байта из памяти
- ;инвертирование
- ;вывод на светодиоды
- ;задержка
- ;если показаны не все данные,
- ; то продолжение при нажатии SW5
- ;вывод окончен
- ;светодиоды погашены
- ;повторение вывода
- ldi temp,0x10
- out UCSRB,temp
- ldi temp,11
- out UBRRL,temp
- ;разрешение приёма
- ; по каналу UART
- ;скорость приёма/передачи
- ; 19219 бод
- ;/// для AT90S8515 регистр USR вместо UCSRA
- ;*** Задержка *** DELAY: ldi r19,20
- ldi r20,255
- ldi r21,255 dd: dec r21 brne dd
- dec r20
- brne dd
- dec r19
- brne dd
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement