Witam
Właśnie zacząłem pisać pierwszy program pod DsPic w asm. Niestety na stronie Microchipa są tylko przykłady w C. Pościągałem więc przykłady dla PIC16 i PIC18 i zacząłem poprawiać wszystkie błędy kompilacji pod swój procek. Niestety został mi jeszcze jeden przy wystawianiu stanu zmiennej Count do portu i przypuszczam że wynika to z 16-bit architektury procka.
KOD PROGRAMU
.equ __30F4013, 1
.include "p30F4013.inc"
;************************************************************
; variables
.equ Count, 0x000
;************************************************************
; reset vectors
.org 0x00000 ; Reset Vector
goto Start
;************************************************************
;program code starts here
.org 0x00020 ; Beginning of program EPROM
Start:
clr LATB ; Clear PORTB output latch
clr TRISB ; Make PORTB pins all outputs
clr Count ; Clear Count
Loop:
btsc PORTD,#2 ; Has S2 been pressed? (Normally high, goes low when pressed.)
goto Loop ; No, check again
IncCount:
inc Count ; Increment Count
mov Count, LATB ; move Count to PORTB
Debounce:
btss PORTD,#2 ; Has key been released?
goto Debounce ; No, wait some more
goto Loop ; yes, wait for next key press
.END ; directive indicates end of code
BŁĄD
buttons.s:29: Error: Invalid operands specified ('mov Count,LATB').
buttons.s:29: Check operand #2.
Właśnie zacząłem pisać pierwszy program pod DsPic w asm. Niestety na stronie Microchipa są tylko przykłady w C. Pościągałem więc przykłady dla PIC16 i PIC18 i zacząłem poprawiać wszystkie błędy kompilacji pod swój procek. Niestety został mi jeszcze jeden przy wystawianiu stanu zmiennej Count do portu i przypuszczam że wynika to z 16-bit architektury procka.
KOD PROGRAMU
.equ __30F4013, 1
.include "p30F4013.inc"
;************************************************************
; variables
.equ Count, 0x000
;************************************************************
; reset vectors
.org 0x00000 ; Reset Vector
goto Start
;************************************************************
;program code starts here
.org 0x00020 ; Beginning of program EPROM
Start:
clr LATB ; Clear PORTB output latch
clr TRISB ; Make PORTB pins all outputs
clr Count ; Clear Count
Loop:
btsc PORTD,#2 ; Has S2 been pressed? (Normally high, goes low when pressed.)
goto Loop ; No, check again
IncCount:
inc Count ; Increment Count
mov Count, LATB ; move Count to PORTB
Debounce:
btss PORTD,#2 ; Has key been released?
goto Debounce ; No, wait some more
goto Loop ; yes, wait for next key press
.END ; directive indicates end of code
BŁĄD
buttons.s:29: Error: Invalid operands specified ('mov Count,LATB').
buttons.s:29: Check operand #2.