Вс янв 29, 2012 08:19:26
.include "tn2313def.inc" ; Присоединение файла описаний
.def temp=r18
.def rab = r17 ; Определение рабочего регистра
;---------- Начало программного кода
.cseg ; Выбор сегмента программного кода
.org 0 ; Установка текущего адреса на ноль
start: rjmp init ; Переход на начало программы
reti ; Внешнее прерывание 0
reti ; Внешнее прерывание 1
reti ; Прерывание по захвату таймера T1
reti ; Прерывание по совпадению T1
reti ; Прерывание по переполнению T1
reti ; Прерывание по переполнению T0
rjmp uart_rcv ; Прерывание UART прием завершен
reti ; Прерывание UART регистр данных пуст
reti ; Прерывание UART передача завершена
reti ; Прерывание по компаратору
reti ; Прерывание по изменению на любом контакте
reti ; Таймер/счетчик 1. Совпадение B
reti ; Таймер/счетчик 0. Совпадение B
reti ; Таймер/счетчик 0. Совпадение A
reti ; USI Стартовая готовность
reti ; USI Переполнение
reti ; EEPROM Готовность
reti ; Переполнение охранного таймера
;----------
init: ldi temp, ramend ; Выбор адреса вершины стека
out SPL, temp ; Запись его в регистр стека
;---------- Инициализация портов ВВ
lDI temp,0b11111111
out DDRB,temp
lDI temp,0
out DDRD,temp
out PORTD,temp
rcall uart_init ;инициализация UART
;---------- передача символа 5
ldi r20,'5'
rcall uart_snt
sei ;разрешаем прерывание
;---------- главный цикл
main:
Rjmp main
;----------
;подпрограммы
;----------
uart_init:
LDI R16, $00
OUT UBRRH,R16
LDI R16, $33
OUT UBRRL,R16
LDI R16,0x06 ; скорость передачи 9600 при частоте 8Мгц
OUT UCSRC, R16
LDI R16,$00
OUT UCSRA, R16
LDI R16,(1<<RXEN)|(1<<TXEN)|(1<<RXCIE) ;RXCIE- разрешение прерывание по завершению приёма
OUT UCSRB, R16
RET
;---------- приём по прерыванию
uart_rcv:
IN temp,UDR ; байт пришел - забираем.
out portb,temp ; выводим в порт B
RETI ; Выходим. Результат в rab
;---------- передача
uart_snt:
SBIS UCSRA,UDRE ; Пропуск если нет флага готовности
RJMP uart_snt ; ждем готовности - флага UDRE
OUT UDR, R20 ; шлем байт
RET
exit:
RJMP exit
Вс янв 29, 2012 12:43:07
Вс янв 29, 2012 13:13:40
pokk писал(а):Здравствуйте, не могли бы вы помочь. У меня такой случай пытаюсь сделать передачу по USART в протеусе.
pokk писал(а):Поставил ATtiny2313 подключил его к порту (COMPIM)
pokk писал(а):На счёт уровней протеус сам может преобразовать ? раз как-то передаёт
Вс янв 29, 2012 13:30:39
В даташите есть пример программного кода и на Си и на ассемблере
Понятия не имею, что может протеус, но скажите, какова цель вашей работы?
возьмите микросхему MAX232, подключите её согласно даташиту и покажите схему Э3
Вс янв 29, 2012 15:40:03
Вт янв 31, 2012 11:43:59
Вт янв 31, 2012 12:27:32
pokk писал(а):Вот сделал схему по смотрите
Вт янв 31, 2012 12:40:01
Ну, схема верна.
Ну, и что Ваш симулятор говорит?
Вт янв 31, 2012 18:16:04
Вт янв 31, 2012 18:40:41
А ничего, что Вы повесили 3 девайса параллельно ? Вам не могло прийти в голову, что Вы одним девайсом просто-напросто засадите другой ?Так вот передача от контроллер происходит а вот принимать байт он не в какую не хочет
Вт янв 31, 2012 18:58:27
А ничего, что Вы повесили 3 девайса параллельно ? Вам не могло прийти в голову, что Вы одним девайсом просто-напросто засадите другой ?
Хорошо, что Вы в протеусе это собрали, иначе дыма бы не избежать
Вот, нашёл тут у себя урок по Компиму (надо запустить хтмл-файл).
Вт янв 31, 2012 19:17:29
Ср фев 01, 2012 05:32:53
Это как напрямую? TX-TX, RX-RX?
Ср фев 01, 2012 06:43:37
в железе делать крест накрест ?
Чт фев 02, 2012 11:14:54
ploop писал(а):Разумеется, иначе попалишь выходы.
Чт фев 02, 2012 11:39:43
Пт фев 03, 2012 09:01:22
pokk писал(а):может крестообразное соединение для контролёров идёт а так как я соединяю порт (да ещё при помощи виртуальной перемычки) там чего-нибуть переворачивается
pokk писал(а):в железе делать крест накрест ?
Вт июн 05, 2012 13:10:57