Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Assembler » Fehler im ASM code für Mikrocontroller

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
07.01.2005, 13:14 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi, hab folgenden ASM Code:


C++:
list P=PIC16C84

;Program to RX. MIDI data with 10Mhz clock
;MIDI controlled voice harmoniser
;Filename: Harmid1.asm
;Date: 23/01/1997

;********************************
;  Variable Assignment Addresses
;********************************

dlyreg    equ       0C
rcount    equ       0D
rcvreg    equ       0E
offsetreg equ       0F
noteval1  equ       10
noteval2  equ       11
midich    equ       12
note      equ       13

;********************************
;     Constant Assignments
;********************************
CARRY     equ       00
MSB       equ       07
BORROW    equ       00
LED       equ       07
W      equ        00
F      equ        01
Z      equ         02
C      equ        00
dx        equ       05

;********************************
;     Port Assignments
;********************************
PCL      equ        02
STATUS      equ        03
PORTA      equ        05
PORTB      equ        06


;************************************
;    PROGRAMME Reset Point
;************************************

          org       0
          goto      INIT

;*************************************
;    Subroutines
;*************************************

delay1    movlw .27
          movwf dlyreg
dly1      nop

          decfsz dlyreg
          goto dly1
          nop
          return

delay2    movlw .17
          movwf dlyreg
dly2      nop
          decfsz dlyreg
          goto dly2
          nop
          return

rxdata    btfsc PORTA,4
          goto rxdata
          movlw .8
          movwf rcount
          clrf rcvreg
          call delay1

rnext     bcf STATUS,CARRY
          rrf rcvreg
          btfsc PORTA,4
          bsf rcvreg,MSB
          call delay2
          decfsz rcount
          goto rnext
          return


keysel    call rxdata
          movf rcvreg,W
          andlw #$F0
          sublw #$90
          btfss STATUS,Z
          goto keysel
          call rxdata
          movlw .184
          addwf rcvreg,W
          btfsc STATUS,CARRY
          goto keysel
          movlw .60
          subwf rcvreg,W
          btfss STATUS,BORROW
          goto keysel
          movwf offsetreg

          bcf PORTB,LED
          return

;************************************
;    Initialise Software
;************************************

INIT      clrf      PORTB
          movlw     00H
          TRIS      PORTB     ;MAKE PORTB ALL O/P'S

          movlw #$F8
          movwf PORTB

          clrf      PORTA
          movlw     0FFH
          TRIS      PORTA     ;make PORTA all I/P'
s

          clrf      noteval1
          clrf      noteval2

          movf PORTA,W ; read midich. switches
          andlw #$0F
          movwf midich

;**************************************
;    Main Programme Start
;**************************************

main      call keysel

start     call rxdata ; is it status?
          movf rcvreg,W
          andlw #$80
          sublw #$80
          btfss STATUS,Z
          goto start

midich?   movf rcvreg,W ; correct MIDI Ch.?
          andlw #$0F
          subwf midich,W
          btfss STATUS,Z
          goto start

noteon?   movf rcvreg,W
          andlw #$F0
          sublw #$90
          btfsc STATUS,Z
          goto noteon

          movf rcvreg,W
          andlw #$F0
          sublw #$80
          btfsc STATUS,Z
          goto noteoff

          goto start



noteon    call rxdata  ; check note range
nrange    movf rcvreg,W
          movwf noteval2
          movf offsetreg,W
          sublw .184
          addwf noteval2,W
          btfsc STATUS,C
          goto start
          movf offsetreg,W
          addlw .48
          subwf noteval2,W
          btfss STATUS,BORROW
          goto start
          movwf note

vel       call rxdata
          movf rcvreg,F
          btfsc STATUS,Z
          goto zerovel

          movf note,W
          call convert
          movwf PORTB

val2to1   movf noteval2,W
          movwf noteval1

          call rxdata ; status or note?
          movf rcvreg,W
          andlw #$80
          sublw #$80
          btfss STATUS,Z
          goto nrange
          goto midich?

zerovel   movf noteval2,W
          subwf noteval1,F
          btfss STATUS,Z
          goto val2to1
          movlw #$08 ; harm off
          movwf PORTB
          goto val2to1


noteoff   call rxdata ; note value?
match     movf rcvreg,W
          subwf noteval2,W
          btfss STATUS,Z
          goto offvel


          movlw #$08 ; harm off
          movwf PORTB

offvel    call rxdata ; vel-off value

          call rxdata ; status or note-off
          movf rcvreg,W
          andlw #$80
          sublw #$80
          btfss STATUS,Z
          goto match
          goto midich?

convert   addwf PCL
          retlw 00
          retlw #$08
          retlw #$08
          retlw #$01
          retlw #$02
          retlw #$03
          retlw #$08
          retlw #$04
          retlw #$05
          retlw #$06
          retlw #$08
          retlw #$07
          retlw #$08
          retlw #$09
          retlw #$08
          retlw #$0A
          retlw #$0B
          retlw #$0C
          retlw #$08
          retlw #$0D
          retlw #$0E
          retlw #$0F
          retlw #$08
          retlw #$08
          retlw #$08




          end



Das PRoblem sind die zeilen mit

kommando #$..

Der www.microchip.com - Assembler versteht die Zeilen nicht, und ich hab keine Ahnung was die bedeuten sollen
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.01.2005, 14:23 Uhr
Hans
Library Walker
(Operator)


Hi Flo,

ich bin mir zwar nicht Sicher, weil ich von PIC-Assembler keine Ahnung habe, aber zum Vergleich: beim 6502 und kompatiblen Prozessoren wurden mit dem $-Zeichen Hex-zahlen gekennzeichnet, (was bei Intel mit dem angehängten "h" bewerkstelligt wird) und mit dem "#" -Zeichen wurden Konstanten gekennzeichnet. Wenn die Notation da oben die gleiche ist, dann bedeutet

Code:
#$08

das es sich um die hexadezimale Konstante 08 handelt.
Hoffe, das hilft weiter.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.01.2005, 16:18 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hmm nur wie teile ich dem mpasm das mit das das eine hexzahl ist? (sowas hab ich mir schon gedacht gehabt, hab nur keine ahnung wie der das normal kennzeichnet) Denn z.b 08h funktioniert auch nicht, sagt er dann undefined constant "08h". Das # erkennt er scheinbar, nur die $-Notation nicht


Bearbeitung:

rein 08 funktioniert, nur bei F0 z.b nicht, da gibts wieder "undefined symbol (F0)"


--
class God : public ChuckNorris { };

Dieser Post wurde am 07.01.2005 um 16:40 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.01.2005, 16:44 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


MAN ICH BIN SO BLÖD...

hab nun mal das #$ durch 0x ersetzt, nun hat er assembliert


HexOutput:

:100000002F281B308C0000008C0B032800000800F8
:1000100011308C0000008C0B0A2800000800051A23
:100020000F2808308D008E01012003108E0C051A58
:100030008E1708208D0B152808000F200E08F039A8
:10004000903C031D1D280F20B8300E0703181D28F3
:100050003C300E02031C1D288F0086130800860109
:1000600000306600F83086008501FF3065009001A1
:10007000910105080F3992001D200F200E088039CC
:10008000803C031D3D280E080F391202031D3D2838
:100090000E08F039903C031953280E08F039803CC3
:1000A000031978283D280F200E0891000F08B83C4E
:1000B000110703183D280F08303E1102031C3D288C
:1000C00093000F208E0803197128130887208600DB
:1000D000110890000F200E088039803C031D542821
:1000E000432811089002031D6828083086006828FC
:1000F0000F200E081102031D7F28083086000F20F4
:100100000F200E088039803C031D79284328820780
:10011000003408340834013402340334083404341D
:1001200005340634083407340834093408340A34F2
:100130000B340C3408340D340E340F3408340834C6
:02014000083481
:00000001FF


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
07.01.2005, 17:52 Uhr
Hans
Library Walker
(Operator)



Zitat von FloSoft:
MAN ICH BIN SO BLÖD...

hab nun mal das #$ durch 0x ersetzt, nun hat er assembliert



Ach tröste Dich, mir geht es auch oft so, das ich bildlich gesprochen den Wald nicht sehe, nur weil da ein Strauch/Baum steht, den ich nicht kenne...

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
07.01.2005, 20:31 Uhr
(un)wissender
Niveauwart


Aber das du eine Bücherei nicht siehst, weil du ein Buch nicht kennst, kann zum Glück nicht passieren!
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Assembler ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: