roboforum.ru

Технический форум по робототехнике.

Помогите найти ошибки в программе

Помогите найти ошибки в программе

Павел_ » 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)

Master » 02 май 2007, 15:53

#include P16F84A.INC

Я не знаю как в этом ассемблере, но в моем нада писать имя контроллера в кавычках .include "d:\avr\avrasm\appnotes\2313def.inc"
А в CVavr #include <P16F84A.INC> вот так. Может в этом проблема?

avr123.nm.ru » 02 май 2007, 17:06

Возможно не видно P16F84A.INC   и ошибки нужно как-то привязать к строкам где они - тогда будет ясно.

Павел_ » 02 май 2007, 20:51

Кажется всё дело в макросах.


Rambler\'s Top100 Mail.ru counter