Forum: Mikrocontroller und Digitale Elektronik Frage zu Programm


von Michel (Gast)


Lesenswert?

hallo leute,

ich schreibe seit gestern an einem kleinen programm (frequenz teiler) in 
assambler, bei der simmulation hat nun alles super funktioniert, nur auf 
dem steckbrett gibt der pic leider nichts am ausgang aus.

am eingang habe ich eine 100hz frequenz angelegt die der pic nun eigtl 
durch einfache "btfss" fehle runter teilt, nur wieso kommt am ausgang 
nicht?

vll habt ihr ja eine idee :)

lg Michel

von Justus S. (jussa)


Lesenswert?

Michel schrieb:
> vll habt ihr ja eine idee :)

nein..und überleg mal, warum...

von Klaus W. (mfgkw)


Lesenswert?

doch, ich habe eine Idee!

von Karl H. (kbuchegg)


Lesenswert?

Klaus Wachtler schrieb:
> doch, ich habe eine Idee!

Gute Idee!
Ich geh jetzt auch auf einen Kaffee.

von Klaus W. (mfgkw)


Lesenswert?

Auch nicht schlecht. Das mache ich auch.
Aber meine war noch besser!

von Michel (Gast)


Lesenswert?

hmm

ok, ich kann euch ja den quelltext hohladen :)

;  Böttner
;  10.05.2010
;  Programmbeschreibung: Frequenzteiler

;  ***********************************
;  Beschreibung der Ein - Ausgänge
;
;  Eingänge:  Pin-A-0:  1 = 1Bit hoch zählen
;        Pin-A-3:  1 = Rücksetzen / Sprung an anfang des Programmes

;  Ausgänge:  Pin-B-0    Led - 1  Binärzähler 2hoch0
;        Pin-B-1    Led - 2  Binärzähler  2hoch1
;        Pin-B-2    Led  - 3  Binärzähler  2hoch2
;        Pin-B-3    Led - 4  Binärzähler  2hoch3
;        Pin-B-4    Led  - 5  Blinken wenn F erreicht
;        Pin-B-5    Led - 6  Blinken wenn F erreicht
;  ***********************************

;  ***********************************

;  Syntax zur PIC - Programmierung

;  Einbindung der Includedatei
   #include <P16F84A.INC>

;  Konfigurationseinstellungen
   List P=16F84A
  __CONFIG _PWRTE_ON & _CP_OFF & _WDT_OFF
;  ***********************************
;  Festlegung der Variablen
  Zeit1    equ 0x20
  Zeit2     equ 0x21
  Zeit3    equ  0x22
  bitmuster  equ 0x23
  teilung    equ 0x24
  vergleich  equ  0x25
  x1      equ  0x26
  x2      equ  0x27
  x3      equ  0x28
  x4      equ  0x29
  x5      equ  0x30
  x6      equ  0x31
  x7      equ  0x32
  stufe1    equ  0x33
  stufe2    equ  0x34
  stufe3    equ  0x35
  stufe4    equ  0x36
  stufe5    equ  0x37
  stufe6    equ  0x38
  stufe7    equ  0x39

;  Festlegung der Konstanten

;  Definition einzelner Bits

;  ***********************************

; PROGRAMMSTART

  org    0x00
  goto  Init


; Grundinitialisierung

Init

  clrw
  bsf    STATUS,RP0      ;Status-Register auf Ein/Ausgang Port setzen
  movlw  B'11111111'      ;W-Reg mit Konstanter Laden
  movwf  TRISA        ;W-Reg Konstante als Eingang Deklarieren
  movlw  B'00000010'      ;W-Reg mit Konstanter Laden
  movwf  TRISB
  bcf    STATUS,RP0      ;Status-Register Rücksetzen
  clrf  PORTA
  clrf  PORTB
  goto  main


; Hauptprogramm

main              ;MAIN

  btfss  PORTA, 0
  goto  test1
  bsf    bitmuster, 0
test1
  btfss  PORTA, 1
  goto  test2
  bsf    bitmuster, 1
test2
  btfss  PORTA,2
  goto  bit0
  bsf    bitmuster, 2
  goto  bit0


; Bitmuster Abfrage + Auswertung

bit0
  incf  bitmuster
  decfsz  bitmuster
  goto  bit1
  goto  main
bit1
  decfsz  bitmuster
  goto  bit2
  goto  laden1
bit2
  decfsz  bitmuster
  goto  bit3
  goto  laden2
bit3
  decfsz  bitmuster
  goto  bit4
  goto  laden3
bit4
  decfsz  bitmuster
  goto  bit5
  goto  laden4
bit5
  decfsz  bitmuster
  goto  bit6
  goto  laden5
bit6
  decfsz  bitmuster
  goto  bit7
  goto  laden6
bit7
  decfsz  bitmuster
  goto  main
  goto  laden7

;Teiler Einstellen

laden1
  movlw  B'00000001'
  movwf  teilung
  goto  t1.0a
laden2
  movlw  B'00000010'
  movwf  teilung
  goto  t1.0a
laden3
  movlw  B'00000011'
  movwf  teilung
  goto  t1.0a
laden4
  movlw  B'00000100'
  movwf  teilung
  goto  t1.0a
laden5
  movlw  B'00000101'
  movwf  teilung
  goto  t1.0a
laden6
  movlw  B'00000110'
  movwf  teilung
  goto  t1.0a
laden7
  movlw  B'00000111'
  movwf  teilung
  goto  t1.0a

;Frequenz Teilung1

t1.0a
  movlw  B'00001010'
  movwf  x1
t1.0b
  btfss  PORTB, 1
  goto   t1.0b
t1.0c
  btfsc  PORTB, 1
  goto  t1.0c

  decfsz  x1
  goto  t1.0b

  movlw  B'00000001'
  xorwf  teilung
  movwf  vergleich
  decfsz  vergleich
  goto  t1.0d
  goto  ausgabe
t1.0d
  incf  stufe1
  decfsz  stufe1
  goto  t2.0b
  goto  t2.0a

;Frequenz Teilung2

t2.0a
  movlw  B'00001010'
  movwf  x2
  incf  stufe1
t2.0b
  btfss  PORTB, 1
  goto   t2.0b
t2.0c
  btfsc  PORTB, 1
  goto  t2.0c

  decfsz  x2
  goto  t1.0a

  movlw  B'00000010'
  xorwf  teilung
  movwf  vergleich
  decfsz  vergleich
  goto  t2.0d
  goto  ausgabe
t2.0d
  incf  stufe2
  decfsz  stufe2
  goto  t3.0b
  goto  t3.0a


;Frequenz Teilung3

t3.0a
  movlw  B'00001010'
  movwf  x3
  incf  stufe2
t3.0b
  btfss  PORTB, 1
  goto   t3.0b
t3.0c
  btfsc  PORTB, 1
  goto  t3.0c

  decfsz  x3
  goto  t1.0a

  movlw  B'00000011'
  xorwf  teilung
  movwf  vergleich
  decfsz  vergleich
  goto  t3.0d
  goto  ausgabe
t3.0d
  incf  stufe3
  decfsz  stufe3
  goto  t4.0b
  goto  t4.0a

;Frequenz Teilung4

t4.0a
  movlw  B'00001010'
  movwf  x4
  incf  stufe3
t4.0b
  btfss  PORTB, 1
  goto   t4.0b
t4.0c
  btfsc  PORTB, 1
  goto  t4.0c

  decfsz  x4
  goto  t1.0a

  movlw  B'00000100'
  xorwf  teilung
  movwf  vergleich
  decfsz  vergleich
  goto  t4.0d
  goto  ausgabe
t4.0d
  incf  stufe4
  decfsz  stufe4
  goto  t5.0b
  goto  t5.0a

;Frequenz Teilung5

t5.0a
  movlw  B'00001010'
  movwf  x5
  incf  stufe4
t5.0b
  btfss  PORTB, 1
  goto   t5.0b
t5.0c
  btfsc  PORTB, 1
  goto  t5.0c

  decfsz  x5
  goto  t1.0a

  movlw  B'00000101'
  xorwf  teilung
  movwf  vergleich
  decfsz  vergleich
  goto  t5.0d
  goto  ausgabe
t5.0d
  incf  stufe5
  decfsz  stufe5
  goto  t6.0b
  goto  t6.0a

;Frequenz Teilung6

t6.0a
  movlw  B'00001010'
  movwf  x6
  incf  stufe5
t6.0b
  btfss  PORTB, 1
  goto   t6.0b
t6.0c
  btfsc  PORTB, 1
  goto  t6.0c

  decfsz  x6
  goto  t1.0a

  movlw  B'00000110'
  xorwf  teilung
  movwf  vergleich
  decfsz  vergleich
  goto  t6.0d
  goto  ausgabe
t6.0d
  incf  stufe6
  decfsz  stufe6
  goto  t7.0b
  goto  t7.0a

;Frequenz Teilung7

t7.0a
  movlw  B'00001010'
  movwf  x7
  incf  stufe6
t7.0b
  btfss  PORTB, 1
  goto   t7.0b
t7.0c
  btfsc  PORTB, 1
  goto  t7.0c

  movlw  B'00000111'
  xorwf  teilung
  movwf  vergleich
  decfsz  vergleich
  goto  t7.0d
  goto  ausgabe
t7.0d
  incf  stufe7
  decfsz  stufe7
  goto  ausgabe
  goto  ausgabe



ausgabe
  btfss  PORTB, 2
  goto  hoch
  goto  runter
hoch
  bsf    PORTB, 2
  goto  main
runter
  bcf    PORTB, 2
  goto  main

end                ;ENDE


habe nun zum testen einfach mal ein bitmuster 0 0 1 angelegt

:-/

lg

von Flo (Gast)


Lesenswert?

In Zeile 42 ist der Fehler.

von Fabian (Gast)


Lesenswert?

und Kuchen!

von Michel (Gast)


Lesenswert?

sinniger beitrag danke :O

von Karl H. (kbuchegg)


Lesenswert?

?
Erklärst du uns auch noch das Prinzip deines Frequenzteilers? Vielleicht 
versteht du ja unter einem Frequenzteiler etwas anderes als ich.

Der kommt mir nämlich sehr ..... umständlich vor
(nach dem wenigen, was ich in dem Programm verstanden habe. Ich hab noch 
nicht mal rausgefunden, was im Programm eigentlich Eingang und was 
Ausgang ist. Aber soviel denke ich hab ich schon gesehen, dass dieser 
Kommentar
1
;  Eingänge:  Pin-A-0:  1 = 1Bit hoch zählen
2
;        Pin-A-3:  1 = Rücksetzen / Sprung an anfang des Programmes
3
4
;  Ausgänge:  Pin-B-0    Led - 1  Binärzähler 2hoch0
5
;        Pin-B-1    Led - 2  Binärzähler  2hoch1
6
;        Pin-B-2    Led  - 3  Binärzähler  2hoch2
7
;        Pin-B-3    Led - 4  Binärzähler  2hoch3
8
;        Pin-B-4    Led  - 5  Blinken wenn F erreicht
9
;        Pin-B-5    Led - 6  Blinken wenn F erreicht
mit dieser Portbelegung
1
  movlw  B'11111111'      ;W-Reg mit Konstanter Laden
2
  movwf  TRISA        ;W-Reg Konstante als Eingang Deklarieren
3
  movlw  B'00000010'      ;W-Reg mit Konstanter Laden
4
  movwf  TRISB
nicht zusammenstimmen kann.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.