Страница 1 из 1

Не получается настроить D порт микроконтроллера tiny2313

Добавлено: Ср дек 24, 2008 16:59:08
Deneb
Наверно я креведка...
Задачу я поставил перед собой такую - есть мк тини2313 у него порт Б настроен на вывод, прошит он одной из версий "мигалки", украденой с вашей обучалки.
Есть ещё один тини2313, я хотел у него настроить порт Д на прием, так, чтобы им мог управлять первый тини (cм картинку)

вот прошивка u2

.include "C:\AVR\APPNOTES\2313def.inc"

.def Temp=R16
.def Temp1=R17
.def Temp2=R18
.def Temp3=R19
.def Temp4=R20
.def Temp5=R21

.cseg
.org 0

ldi Temp,RamEnd ;èíèöèàëèçàöèÿ ñòåêà
out SPL,Temp

ldi Temp,0b11111111 ;íàñòðîéêà ïîðòîâ B
out DDRB,Temp

ldi Temp,0b00000000 ;íàñòðîéêà ïîðòîâ D
out DDRD,Temp


compare: ldi temp, portD
cpi temp, 0b0000001
breq GO
cpi temp,0b0000001
brne compare





Go: ldi Temp,0b00000001 ;âûâîä íà èíäèêàöèþ
rcall Delay ;âûçîâ ïîäïðîãðàììû çàäåðæêè

ldi Temp,0b00000010 ;âûâîä íà èíäèêàöèþ
rcall Delay ;âûçîâ ïîäïðîãðàììû çàäåðæêè

ldi Temp,0b00000100 ;âûâîä íà èíäèêàöèþ
rcall Delay ;âûçîâ ïîäïðîãðàììû çàäåðæêè

ldi Temp,0b00001000 ;âûâîä íà èíäèêàöèþ
rcall Delay ;âûçîâ ïîäïðîãðàììû çàäåðæêè

ldi Temp,0b00010000 ;âûâîä íà èíäèêàöèþ
rcall Delay ;âûçîâ ïîäïðîãðàììû çàäåðæêè

ldi Temp,0b00100000 ;âûâîä íà èíäèêàöèþ
rcall Delay ;âûçîâ ïîäïðîãðàììû çàäåðæêè

ldi Temp,0b01000000 ;âûâîä íà èíäèêàöèþ
rcall Delay ;âûçîâ ïîäïðîãðàììû çàäåðæêè

ldi Temp,0b10000000 ;âûâîä íà èíäèêàöèþ
rcall Delay ;âûçîâ ïîäïðîãðàììû çàäåðæêè

rjmp compare

;****************************************************
;Çàäåðæêà

Delay: out PortB,Temp

ldi Temp1,0
ldi Temp2,0
ldi Temp3,3

Loop: dec Temp1
brne Loop

dec Temp2
brne Loop

dec Temp3
brne Loop

ret

почему u2 не запускает на себе мигалку, ведь должен?
пс: ассемблер плохо, очень плохо знаю, но казалось что написано правильно...

Добавлено: Ср дек 24, 2008 17:00:45
Deneb
Как то сумбурно вышло, и код не форматирован, извиняюсью
Хотя прога очень простая, я думаю ясно будет

Добавлено: Ср дек 24, 2008 18:25:45
OBIVAN
compare: ldi temp, portD интересно а что здесь подрозумевается?
я думаю in temp,pind так будет правельней и зачем остальные ножки на землю засадил . :cry: жалко ведь мк

Добавлено: Ср дек 24, 2008 18:32:46
pirotehnick
оно понятно:
compare: ldi temp, portD
Инструкция ldi загружает константу в регистр, в данном случае ты загружаешь адрес порта в регистр.

вместо ldi поставь in

Добавлено: Ср дек 24, 2008 18:33:37
OBIVAN
А еще существуют команды поразрядного сравнения для рвв sbic pind,0 пропустить команду если разряд сброшен и sbis наоборот

Добавлено: Ср дек 24, 2008 19:25:17
Deneb
а, спасибо)

Добавлено: Ср дек 24, 2008 19:35:00
Deneb
Фурычит)