Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

AVR Studio error: syntax error, unexpected INTEGER

Отправлено Frensis 11 сентября 2008 г. 20:29


.include "2313def.inc"
;**************************************************************************
;Программа "runstr" написана для индикатора , имеющего 20 символов в строке
;и включенного по схеме рис. 7.
;**************************************************************************
.list
.cseg

.org 0
;
;Инициализация
runstr:
ldi r25,$ff ;настроить порт D на вывод
out ddrd,r31
;
ldi r25,RAMEND ;установка стека
out spl,r25
;
rcall initlcd
;
;Основной цикл
Loop: ldi r24, 20 ;установка счетчика символов
;
shift: ldi r25,$18 ;сдвиг дисплея на один символ
rcall icom_2313
rcall ddelay ;задержка ~200 мкс при кварце 4 МГц
dec r24
brne shift
;
ldi r24,5 ;остановка после вывода каждой строки
stop: rcall ddelay
dec r24
brne stop
;
rjmp Loop ;повторить сначала
;
initlcd:
ldi r25,$20 ;4-битный интерфейс, 1-строка, шрифт-5х7 точек
rcall icom_2313
rcall del
ldi r25,$0C ;включить дисплей, выключить курсор
rcall icom_2313
rcall del
ldi r25,$20 ;4-битный интерфейс, 1-строка, шрифт-5х7 точек
rcall icom_2313
rcall del
ldi r25,$1 ;очистить дисплей и установить курсор в
rcall icom_2313 ; начальную позицию
rcall delay
;
;Перепись CGRAM для букв 'Э' и 'Ф'
ldi r25,$40 ;после этой команды данные записываются в CGRAM
rcall icom_2313 ;начиная с адреса 0
rcall del
ldi r30,low(rus_buf*2) ;установить указатель Z на начало буфера rus_buf
ldi r31,high(rus_buf*2)
ldi r24,16 ;установить счетчик программируемых ячеек CGRAM
cgram:
lpm ;извлечь из flash-памяти байт данных
mov r25,r0
rcall idat_2313 ;записать его в CGRAM
rcall del
ld r1,z+ ;увеличить на 1 указатель Z адреса flash-памяти
dec r24 ;если еще не все ячейки запрограммированы
brne cgram ;вернуться назад
;
;Вывод в DDRAM постоянного текста
ldi r25,$80 ;после этой команды данные записываются в DDRAM
rcall icom_2313 ;начиная с адреса 0
rcall del
ldi r30,low(text0*2) ;установить указатель Z на начало буфера text0
ldi r31,high(text0*2)
ldi r24,80 ;установить счетчик программируемых ячеек DDRAM
ddram:
lpm ;извлечь из flash-памяти байт данных
mov r25,r0
rcall idat_2313 ;записать его в DDRAM
rcall del
ld r1,z+ ;увеличить на 1 указатель Z адреса flash-памяти
dec r24 ;если еще не все ячейки запрограммированы
brne ddram ;вернуться назад
;
ret
;
;Задержка вывода для удобства восприятия человеком
ddelay:
ldi r19,100 ;
dd: rcall delay
dec r19
brne dd
ret
;
;Во flash - памяти после программы размещаем постоянные данные
.org $200
rus_buf: .DB $0e,$11,$01,$0f,$01,$11,$0e,$00 ;Начертание для буквы Э (код-0)
.DB $04,$0e,$15,$15,$0e,$04,$04,$00 ;Начертание для буквы Ф (код-1)

text0: .DB ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ' ;Пустая строка
.DB ' ',' ',' ',' ',' ',' ',' ',' ',' ',' '

text1: .DB ' ',' ',' ','I',' ','l','o','v','e',' ' ;I love my AVR
.DB 'm','y',' ','A','V','R',' ',' ',' ',' '

text2: .DB ' ',' ',' ','I',' ','l','o','v','e',' ' ;I love my LCD
.DB 'm','y',' ','L','C','D',' ',' ',' ',' '

text3: .DB ' ',' ',' ',' ','I',' ','l','o','v','e' ;I love "ЭФО"
.DB ' ', ' " ',0,1, 'O', ' " ', ' ', ' ', ' ', ' '

icom_2313:
swap r25 ;подготовить старшую тетраду для передачи
mov r26,r25
andi r26,$ef ;очистка бита 4 порта D (сигнал RS=0)
ori r26,$e0 ;установка бита 5 порта D ( сигнал E=1)
out portd,r26

cbi portd, 5 ;стробирующий сброс бита 5 порта D ( сигнал E=0).

swap r25 ;подготовить младшую тетраду для передачи
mov r26,r25
andi r26,$ef ;очистка бита 4 порта D (сигнал RS=0)
ori r26,$e0 ;установка бита 5 порта D ( сигнал E=1)
out portd,r26

cbi portd, 5 ;стробирующий сброс бита 5 порта D ( сигнал E=0)
ret
;
idat_2313:
swap r25 ;подготовить старшую тетраду для передачи
mov r26,r25
ori r26,$f0 ;установка бита 4 порта D (сигнал RS=1) и
out portd,r26 ;бита 5 порта D ( сигнал E=1)

cbi portd,5 ;стробирующий сброс бита 5 порта D ( сигнал E=0)


swap r25 ;подготовить младшую тетраду для передачи
mov r26,r25
ori r26,$f0 ;установка бита 4 порта D (сигнал RS=1) и
out portd,r26 ;бита 5 порта D ( сигнал E=1)

cbi portd,5 ; стробирующий сброс бита 5 порта D ( сигнал E=0)
ret
;
initlcd_2313:
ldi r25,$20 ;4-битный интерфейс, 1-строка, шрифт-5х7 точек
rcall icom_2313
rcall del
ldi r25,$0C ;включить дисплей, выключить курсор
rcall icom_2313
rcall del
ldi r25,$20 ;4-битный интерфейс, 1-строка, шрифт-5х7 точек
rcall icom_2313
rcall del
ldi r25,$1 ;очистить дисплей и установить курсор в
rcall icom_2313 ; начальную позицию
rcall delay
;
ret

подскажите пожалуйста что делать
выдает ошибку AVR error: syntax error, unexpected INTEGER
и указывает на text0.


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
сложите 2 и 3:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru