Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; 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.
Составить ответ | Вернуться на конференцию
Ответы