Суббота, 20.04.2024, 15:08
Микроконтроллерная техника AVR
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Микроконтроллеры » Вопросы по МК » ATMega64 - UART0, UART1 (Помогите разобраться на Ассемблере)
ATMega64 - UART0, UART1
Valera_1411Дата: Понедельник, 17.12.2012, 18:15 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 4
Репутация: 0
Статус: Offline
Помогите плиз, как прописать прием и отпарвку сообщений через uart по каналау 1 в atmega64 на ассемблере.
 
HiSERДата: Среда, 19.12.2012, 20:17 | Сообщение # 2
Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Репутация: 11
Статус: Offline
Что именно не получается?
 
Valera_1411Дата: Среда, 26.12.2012, 20:11 | Сообщение # 3
Рядовой
Группа: Пользователи
Сообщений: 4
Репутация: 0
Статус: Offline
именно сам не понимаю. вот код использую мегу 64А:
.include "L:\projekt\ASM\program\Appnotes\m64def.inc"
.list
.equ TxD0 = PE1 ;Выход передатчика-вывод 1 порта E
.equ RxD0 = PE0 ;Вход приемника-вывод 0 порта E
.equ TxD1 = PD3 ;Выход передатчика-вывод 1 порта D
.equ RxD1 = PD2 ;Вход приемника-вывод 0 порта D
.equ XTAL = 12000000 ;
.equ BaudRate = 2400 ;
.equ Baud = (XTAL/(16*BaudRate))-1
.equ UCS_A0=0b00100000 ;0-RXC0(Флаг завершения приема)
;0-TXC0(Флаг завершения передачи)
;1-UDRE0(Флаг опустошения регистра данных)
;0-FE0(Флаг ошибки кадрирования)
;0-DOR0(Флаг переполнения)
;0-UPE0(Флаг ошибки контроля четности)
;0-U2X0(Флаг удвоения скорости обмена)
;0-MPCM0(Флаг мультипроцессорного обмена)
.equ UCS_B0=0b00011000 ;0-RXCIE0(Флаг разрешения прерывания по завершению приема)
;0-TXCIE0(Флаг разрешения прерывания по завершению передачи)
;0-UDRIE0(Флаг разрешения прерывания при очистке регистра данных UART)
;1-RXEN0(Флаг разрешения приема)
;1-TXEN0(Флаг разрешения передачи)
;0-UCSZ02(Флаг формата посылок)
;0-RXB80(Флаг 8-й бит принимаемых данных)
;0-TXB80(Флаг 8-й бит переданных данных)
.equ UCS_C0=0b00001110 ;_-зарезервировано
;0-UMSEL0(Флаг режима работы USART)
;00-UPM0(Флаг режима схемы контроля и формирования бита четности)
;1-USBS0(Флаг колличества стоп-битов)
;11-UCSZ0(Флаг формата посылок)
;0-UCPOL0(Флаг полярности тактового сигнала)
.def t0=r16 ;Временный рабочий регистр r16
.def t1=r17 ;Временный рабочий регистр r17
.def i1=r25 ;Временный рабочий регистр прерывания

.cseg
.org 0
jmp Initial
.org ADCCaddr ;Адрес вектора прерывания
ldi i1, 0b00001000 ;____01__-SM(шумоподавление ADC)
;___0____-SE(запрет спящего режима)
out MCUCR, i1
reti
Initial:
ldi t1, Low(RAMEND)
out SPL, t1
ldi t1, High(RAMEND)
out SPH, t1
sei
InitPorts:
clr t0 ;Вход (1)
out DDRB, t0 ;Порт В
out DDRC, t0 ;Порт С
ser t0 ;Выход (0)
out DDRA, t0 ;Порт А
out DDRE, t0 ;Порт Е
sts DDRG, t0 ;Порт G
out PORTB, t0 ;Подтягивающие резисторы порта В
out PORTC, t0 ;Подтягивающие резисторы порта С

;--Установка начальных условий------------------------------------------------------------------

ldi t0, 0b00110011
out PORTA, t0
;ser t0
;out PORTB, t0
;out PORTC, t0
clr t0
out PORTE, t0
sts PORTG, t0
;*************************************************************************************************

;**ОСНОВНАЯ ПРОГРАММА*****************************************************************************

rcall InitUSART
Proverka:
ldi zH,High(Nachalo<<1)
ldi zl,Low(Nachalo<<1)
rcall Out_Text
ldi zH,High(Komanda<<1)
ldi zl,Low(Komanda<<1)
rcall Out_Text
rjmp Opisanie

Opisanie:
ldi zH,High(Opisanie_komand1<<1)
ldi zl,Low(Opisanie_komand1<<1)
rcall Out_Text
ldi zH,High(Opisanie_komand2<<1)
ldi zl,Low(Opisanie_komand2<<1)
rcall Out_Text
ldi zH,High(Opisanie_komand3<<1)
ldi zl,Low(Opisanie_komand3<<1)
rcall Out_Text

InitUSART:
ldi t1, High(Baud)
ldi t0, Low(Baud)
out UBRR0L, t0
sts UBRR0H, t1
;--Используем передатчик и приемник-------
ldi t0, UCS_B0
out UCSR0B, t0
;--Пределы передачи: 8бит 1 стоп-бит------
ldi t0, UCS_C0
sts UCSR0C, t0
;--Удвоение скорость передачи данных------
;ldi t1, UCS_A0
;out UCSR0A, t1
ret

Out_Text:
lpm t0, z+
cpi t0, 0
breq OT2
OT1:
sbis UCSR0A, UDRE0
rjmp OT1
out UDR0, t0
rjmp Out_Text
OT2:
ret

Komanda: .db 13,10,"Введите команду: ",0
Nachalo: .db 13,10,"Автоматизированный пульт контроля блоков электроэлементов",0

Opisanie_komand1: .db 13,10,"Opisanie - описание команд ",0
Opisanie_komand2: .db 13,10,"Nastr - настройка БЭЭ АЮИЖ.469135.421",0
Opisanie_komand3: .db 13,10,"Bee421 - автоматический контроль БЭЭ АЮИЖ.469135.421 ",0


Сообщение отредактировал Valera_1411 - Четверг, 27.12.2012, 20:21
 
HiSERДата: Среда, 26.12.2012, 22:47 | Сообщение # 4
Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Репутация: 11
Статус: Offline
А как я могу помочь если ты сам не понимаешь что пишешь?
 
Valera_1411Дата: Четверг, 27.12.2012, 20:23 | Сообщение # 5
Рядовой
Группа: Пользователи
Сообщений: 4
Репутация: 0
Статус: Offline
смысл такой, пишу программу по контролю заводских блоков электроэлементов, у меня по uart должны предаться некоторые сообщения на комп, часть которых я прописал вконце программы. Пробовал моделировать прогу в протеусе - работает. На железе вообще нехочет. Возможно или в части инициализации(InitUSART) uart проблема или в части передачи сообщения(Out_Text)? Если есть рабочий код инициализации и передачи сообщения, пришлите плиз для меги 64.

Сообщение отредактировал Valera_1411 - Четверг, 27.12.2012, 20:24
 
HiSERДата: Четверг, 27.12.2012, 21:47 | Сообщение # 6
Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Репутация: 11
Статус: Offline
Если в протеусе нормально эмулируется, может все таки в железе проблема?

Добавлено (27.12.2012, 21:47)
---------------------------------------------
Попробуй еще отключить JTAG из-за него может еще не работать.

 
Форум » Микроконтроллеры » Вопросы по МК » ATMega64 - UART0, UART1 (Помогите разобраться на Ассемблере)
  • Страница 1 из 1
  • 1
Поиск:

Хостинг от uCoz