Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.
Павел_ » 02 май 2007, 11:17
Помогите пожалуйста найти ошибки в синтаксисе в програме. Ниже программа на ассемблере и ошибки которые выдаёт компилятор
- Код: Выделить всё
; Програма для тестирования экрана МТ-12232А
; автор: Картавкин Павел Леонидович 2007г.
; Процессор PIC16F84A
; порт В - шина данных
; RA0-Res
; RA1-A0(R/S)
; RA2-RD/WR
; RA3-E
; RA4-CS
#include P16F84A.INC
;Управляющие выводы экраном
#define RES PORTA,0
#define A0 PORTA,1
#define RD_WR PORTA,2
#define E PORTA,3
#define CS PORTA,4
; слова инициализации для поpтов ввода/вывода
INITA0 EQU B'00000000'
INITB0 EQU B'00000000'
INITA1 EQU B'11111111'
INITB1 EQU B'11111111'
;Инициализация порта А
BCF STATUS,RP0 ;Выбор банка 0
CLRF PORTA ;Очистить регистр PORTA
MOVLW INITA0 ;Загpузить B'00000000' в pегистp W
BSF STATUS,RP0 ;Выбор банка 1
MOVWF TRISA ;Все разряды порта А установить как выходы
;Инициализация порта В
BCF STATUS,RP0 ;Выбор банка 0
CLRF PORTB ;Очистить регистр PORTB
MOVLW INITB0 ;Загpузить B'00000000' в pегистp W
BSF STATUS,RP0 ;Выбор банка 1
MOVWF TRISB ;Все разряды порта В установить как выходы
BCF STATUS,RP0 ;Выбор банка 0
;Инициализация экрана
CALL RESET
PAUSE 1
CALL END1
CALL STAT_DRIVE_OFF
CALL DUTY_SELECT
DISPLAY_ON_OFF B'10101111'
;Рисуем
;
;Команды для дисплея
DISPLAY_ON_OFF MACRO ON_OFF
MOVLW ON_OFF
MOVWF PORTB
PAUSE 1
CLRF PORTB
ENDM
SET_PAGE MACRO PAGE
MOVLW B'10111000'
IORLW PAGE
MOWF PORTB
PAUSE 1
CLRF PORTB
ENDM
SET_ADDRESS MACRO COL_ADDRES
MOVLW COL_ADDRES
MOVWF PORTB
PAUSE 1
CLRF PORTB
ENDM
WRITE_DISP_DATA MACRO DATA
BSF A0
MOVLW DATA
MOVWF PORTB
PAUSE 1
CLRF PORTB
BCF A0
ENDM
READ_DISP_DATA
BSF A0
BSF RD_WR
MOVWF INITB1
BSF STATUS,RP0
MOVWF TRISB
MOVF PORTB,W
MOVF INITB0,Z
MOVF Z,TRISB
BCF STATUS,RP0
BСF A0
BСF RD_WR
RETLW
STAT_DRIVE_OFF
MOVLW B'10100100'
MOVWF PORTB
PAUSE 1
CLRF PORTB
RETURN
DUTY_SELECT
MOVLW B'10101001'
MOVWF PORTB
PAUSE 1
CLRF PORTB
RETURN
END1
MOVLW B'11101110'
MOVWF PORTB
PAUSE 1
CLRF PORTB
RETURN
RESET
BCF RES
PAUSE 7
BSF RES
PAUSE 5
BCF RES
RETURN
PAUSE MACRO TIME
LABEL
DECFSZ TIME,1
GOTO LABEL
RETURN
ENDM
end
- Код: Выделить всё
Error[108] : Illegal character (1)
Error[124] : Illegal argument (expected single character)
Error[116] : Address label duplicated or different in second pass (DISPLAY_ON_OFF)
Error[122] : Illegal opcode (PORTA)
Error[122] : Illegal opcode (PORTA)
Error[128] : Missing argument(s)
Error[108] : Illegal character (1)
Error[108] : Illegal character (1)
Error[108] : Illegal character (1)
Error[108] : Illegal character (7)
Error[108] : Illegal character (5)
-
Павел_
-
- Сообщения: 3
- Зарегистрирован: 02 май 2007, 09:55
- Откуда: Харьков
Master » 02 май 2007, 15:53
#include P16F84A.INC
Я не знаю как в этом ассемблере, но в моем нада писать имя контроллера в кавычках .include "d:\avr\avrasm\appnotes\2313def.inc"
А в CVavr #include <P16F84A.INC> вот так. Может в этом проблема?
-
Master
-
- Сообщения: 4468
- Зарегистрирован: 21 дек 2006, 19:56
- Откуда: Украина, г.Одесса
- прог. языки: Delphi и С
-
avr123.nm.ru » 02 май 2007, 17:06
Возможно не видно P16F84A.INC и ошибки нужно как-то привязать к строкам где они - тогда будет ясно.
-
avr123.nm.ru
- отсылающий читать курс
-
- Сообщения: 14195
- Зарегистрирован: 06 ноя 2005, 04:18
- Откуда: Москва
-
Павел_ » 02 май 2007, 20:51
Кажется всё дело в макросах.
-
Павел_
-
- Сообщения: 3
- Зарегистрирован: 02 май 2007, 09:55
- Откуда: Харьков
Вернуться в Микроконтроллеры
Кто сейчас на конференции
Сейчас этот форум просматривают: Google [Bot] и гости: 19