реклама на сайте
подробности

 
 
> Программа asm gередача по UART attiny25
addict
сообщение Apr 14 2018, 07:24
Сообщение #1





Группа: Участник
Сообщений: 7
Регистрация: 14-04-18
Пользователь №: 103 217



Доброго времени суток.
Нужно передать 1 байт на скорости 19200 бод (8 бит 1 стоп) от мк attiny25 на устройство.
МК программируется программатором громова через uniprof.при подключении питания на мк устройство принимает 1 байт 0FFh вместо 05fh.
МК работает от внутренного тактвого генератора на заводских установках, частоте- 1мгц.
сперва сделал код на таймере.Ничего не получилось, решил считать такты.Исходил из того, что, при частоте 1мгц длительность 1 такта занимает 0,000001 секунды.длительность 1 бита(бода) при скорости 19200 будет 0,000052083 секунды, тоесть задержка между перепадами уровней должна быть 52 такта.Вроде написал код, вроде правильно.Но не работает, подскажите, что может быть не так.


CODE
rjmp RESET ; Reset Handler

RESET:
cli
ldi r17, 0xd0
out 0x3D, r17 ;инициализация стэка

ldi R16, 0b00000011 ;порты как выход
out 0x17, r16
LDI R30, low(fing_cmp*2) ;
lpm r18, Z ;загрузим байт

trx_idle: ;2 такта
ldi R16, 0b00000001 ;логический 1 (idle)
out 0x18, r16

;Задержка 52-2 = 50
ldi r20, 16
delay1:
dec r20
brne delay1
nop
nop

trx_start: ;2 такта
ldi R16, 0b00000000 ;логический 0 (start bit)
out 0x18, r16

;Задержка 52-5 = 47
ldi r20, 15
delay2:
dec r20
brne delay2
nop
nop
trx_bit0: ;5 тактов
clc
clr r16
ror r18 ;младший бит уходит в C
adc r16, r16
out 0x18, r16

;Задержка 52-5 = 47
ldi r20, 15
delay3:
dec r20
brne delay3
nop
nop
trx_bit1: ;5 тактов
clc
clr r16
ror r18 ;младший бит уходит в C
adc r16, r16
out 0x18, r16

;Задержка 52-5 = 47
ldi r20, 15
delay4:
dec r20
brne delay4
nop
nop
trx_bit2: ;5 тактов
clc
clr r16
ror r18 ;младший бит уходит в C
adc r16, r16
out 0x18, r16

;Задержка 52-5 = 47
ldi r20, 15
delay5:
dec r20
brne delay5
nop
nop
trx_bit3: ;5 тактов
clc
clr r16
ror r18 ;младший бит уходит в C
adc r16, r16
out 0x18, r16

;Задержка 52-5 = 47
ldi r20, 15
delay6:
dec r20
brne delay6
nop
nop
trx_bit4: ;5 тактов
clc
clr r16
ror r18 ;младший бит уходит в C
adc r16, r16
out 0x18, r16


;Задержка 52-5 = 47
ldi r20, 15
delay7:
dec r20
brne delay7
nop
nop
trx_bit5: ;5 тактов
clc
clr r16
ror r18 ;младший бит уходит в C
adc r16, r16
out 0x18, r16

;Задержка 52-5 = 47
ldi r20, 15
delay8:
dec r20
brne delay8
nop
nop
trx_bit6: ;5 тактов
clc
clr r16
ror r18 ;младший бит уходит в C
adc r16, r16
out 0x18, r16


;Задержка 52-5 = 47
ldi r20, 15
delay9:
dec r20
brne delay9
nop
nop
trx_bit7: ;5 тактов
clc
clr r16
ror r18 ;младший бит уходит в C
adc r16, r16
out 0x18, r16


;Задержка 52-2 = 50
ldi r20, 16
delay13:
dec r20
brne delay13
nop
nop
trx_idle2: ;2 такта
ldi R16, 0b00000001 ;логический 1 (idle)
out 0x18, r16


stop:
nop
nop
rjmp stop

fing_cmp: .db 0xf5


Сообщение отредактировал IgorKossak - Apr 15 2018, 18:37
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th June 2025 - 08:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01393 секунд с 7
ELECTRONIX ©2004-2016