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
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
? 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.