Ср фев 13, 2019 21:22:24
Чт фев 14, 2019 08:12:57
Чт фев 14, 2019 20:15:27
Чт фев 14, 2019 20:56:38
Чт фев 14, 2019 21:09:43
.equ fCK = 8000000 ;частота в герцах
.equ BAUD = 19200 ;скорость для UART в бодах
.equ UBRR_value = (fCK/(BAUD*16))-1 ;расчитываем значение для регистра UBRR
start:
rcall init_rec
;start1:
rcall paus
rcall uart_rcv
mov r20,r17 ;tst
rcall init_USART ;tst
rcall USART_send ;tst
out PORTC,r17 ;tst
rjmp start ;tst
init_rec: ldi R16,high(UBRR_value) ;устанавливаем скорость
out UBRRH,R16
ldi R16,low(UBRR_value)
out UBRRL,R16
ldi R16,(1<<RXEN) ;разрешаем работу периемника
out UCSRB,R16
ldi R16,(1<< URSEL)|(1<< UCSZ0)|(1<< UCSZ1)
out UCSRC,R16 ;устанавливаем режим 8 бит данных, без проверки четности, асинхронный режим
ret
init_USART:ldi R16,high(UBRR_value) ;устанавливаем скорость
out UBRRH,R16
ldi R16,low(UBRR_value)
out UBRRL,R16
ldi R16,(1<<TXEN) ;разрешаем работу передатчика
out UCSRB,R16
ldi R16,(1<< URSEL)|(1<< UCSZ0)|(1<< UCSZ1)
out UCSRC,R16 ;устанавливаем режим 8 бит данных, без проверки четности, асинхронный режим
ret
USART_send:sbis UCSRA,UDRE ;ждем пока бит UDRE регистра UCSRA не будет пуст
rjmp USART_send
out UDR,R20 ;посылаем байт по UART, кладем данные в регистр UDR
ret
;Ожидание байта
uart_rcv: SBIS UCSRA,RXC ; Ждем флага прихода байта
RJMP uart_rcv ; вращаясь в цикле
IN R17,UDR ; байт пришел - забираем.
RET ; Выходим. Результат в R17
paus: clr r22
clr r23
pp1:
nop
nop
nop
nop
dec r22
BRNE pp1
dec r23
BRNE pp1
ret
Чт фев 14, 2019 21:56:45
Чт фев 14, 2019 22:57:48
Пт фев 15, 2019 08:11:12
.INCLUDE "m8def.inc"
.equ fCK = 8000000 ;частота в герцах
.equ BAUD = 19200 ;скорость для UART в бодах
.equ UBRR_value = (fCK/(BAUD*16))-1 ;расчитываем значение для регистра UBRR
rcall init_USART
start:
rcall paus
rcall uart_rcv
mov r20,r17 ;tst
rcall USART_send ;tst
;out PORTC,r17 ;tst
rjmp start ;tst
init_USART:
sbi DDRD, 1
ldi R16,high(UBRR_value) ;устанавливаем скорость
out UBRRH,R16
ldi R16,low(UBRR_value)
out UBRRL,R16
ldi R16,(1<<TXEN)+(1<<RXEN) ;разрешаем работу RX TX
out UCSRB,R16
ldi R16,(1<< URSEL)|(1<< UCSZ0)|(1<< UCSZ1)
out UCSRC,R16 ;устанавливаем режим 8 бит данных, без проверки четности, асинхронный режим
ret
USART_send:
sbis UCSRA,UDRE ;ждем пока бит UDRE регистра UCSRA не будет пуст
rjmp USART_send
out UDR,R20 ;посылаем байт по UART, кладем данные в регистр UDR
ret
;Ожидание байта
uart_rcv:
SBIS UCSRA,RXC ; Ждем флага прихода байта
RJMP uart_rcv ; вращаясь в цикле
IN R17,UDR ; байт пришел - забираем.
RET ; Выходим. Результат в R17
paus:
clr r22
clr r23
pp1:
nop
nop
nop
nop
dec r22
BRNE pp1
dec r23
BRNE pp1
ret
Сб фев 16, 2019 17:16:54
Сб мар 05, 2022 18:50:47
Сб мар 05, 2022 19:40:50
Вс мар 06, 2022 00:28:54
Вс мар 06, 2022 16:13:51
Вс мар 06, 2022 20:30:01