-         
+ Antworten
Ergebnis 1 bis 3 von 3

Thema: Schleife erstellen mit Assembler

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    09.08.2004
    Alter
    38
    Beiträge
    77

    Schleife erstellen mit Assembler

    Hi Leute

    ich hab da ein Problem in meinem Code.
    ich weiss nich wie ich diese schleife richtig machen soll.
    ich habe schon vieles versucht nur ich bekomms nich hin, das der dann immer bei 125 anfängt und nich bei 0.

    also wenn ihr mir helfen könntet wäre ich euch sehr dankbar

    Code:
    list      p=16F84A           	  ; list directive to define processor
    #include <p16F84A.inc>        	  ; processor specific variable definitions
    
    __CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _RC_OSC
    
    ;***** VARIABLE DEFINITIONS *****
    w_temp        Equ     0x0C        	  ; variable used for context saving 
    status_temp   Equ     0x0D       	  ; variable used for context saving
    
    w_copy  Equ     0x20            	  ; Backup für Akkuregister 
    s_copy  Equ     0x21            	  ; Backup für Statusregister
    
    T0SC	Equ OPTION_REG
    
    ORG     0x000           	  ; processor reset vector
    goto    main            	  ; go to beginning of program
    
    ;Interrupt routine falls diese mal benötigt wird
    ORG     0x004           	  ; interrupt vector location
    movwf   w_temp          	  ; save off current W register contents
    movf	STATUS,w       		  ; move status register into W register
    movwf	status_temp    		  ; save off contents of STATUS register
    		
    movf    status_temp,w   	  ; retrieve copy of STATUS register
    movwf	STATUS          	  ; restore pre-isr STATUS register contents
    swapf   w_temp,f
    swapf   w_temp,w        	  ; restore pre-isr W register contents
    retfie                   	  ; return from interrupt
    
    main	
    ;       PortA wird hier initialisiert  
    BCF STATUS, RP0				  ; RP0=0
    CLRF PORTA					  ; Initialisierung von PortA
    ; durch löschen des Data latches
    BSF STATUS, RP0				  ; Markiere Bank 1
    MOVLW 0x0F					  ; nutzen für den DatenVerzeichniss
    		
    MOVWF TRISA&0x7f			  ; SET RA<3:0> als Input
    						
    ; SET RA4 als Output
    ;   	PortB wird hier initialisiert  
    BCF STATUS, RP0				  ; RP0=0
    CLRF PORTB					  ; Initialisierung von PortA
    						
    ; durch löschen des Data latches
    BSF STATUS, RP0				  ; Markiere Bank 1
    MOVLW 0xCF					  ; nutzen für den DatenVerzeichniss
    
    MOVWF TRISB&0x7f			  ; SET RA<3:0> als Input
    						
    ; SET RB<5:4> als Output
    
    ; SET RB<7:6> als Output
    									  
    movwf   w_copy       		  ; w retten 
    swapf   STATUS, w      		  ; STATUS retten 
    movwf   s_copy      		  ;
    
    NOCHMAL 
    BCF STATUS, RP0				  ; auf Bank 0 wechseln
    MOVLW   0x7D			  	  ; 0x83 = 131 ; 0x7D = 125
    MOVWF   TMR0				  ; 131 oder 125 müsste hier drin stehen
    MOVLW 1
    TIMER   
    BSF STATUS, RP0				  ; auf Bank 1 wechseln
    ;		BCF OPTION_REG&0x7f, T0SE	  ; bin mir nich sicher ob ichs brauche beim Vorteiler
    
    ;		Flanke
    BSF OPTION_REG&0x7f, T0SE	  ; hier wird für RA4 die Low Flanke gewählt
    MOVF T0SE, F			  	  ; hier wird es unter der Speicherzelle gesichert
    		
    ;		movf TMR0, F			 
    ; das ist das Timer-Register
    
    ;		Vorverteiler Aktivieren
    BCF OPTION_REG&0x7f, PSA	  ; hier mit wird der Vorverteiler auf 0 gesetzt und aktiviert
    BCF OPTION_REG&0x7f, PS2	  ; damit man den vorverteiler auf 16/1 einstellt
    BSF OPTION_REG&0x7f, PS1	  ; hier wird PS1 auf 1 gesetzt
    BSF OPTION_REG&0x7f, PS0	  ; hier wird PS0 auf 1 gesetzt	
    		
    ;Timer
    ;BSF OPTION_REG&0x7f, T0CS	  ; T0SC wird auf 1 gesetzt damit der Vorverteiler mit benutzt werden kann
    BCF OPTION_REG&0x7f, T0CS     ; hier wird in der Speicherzelle T0SC die 0 gesetzt
    MOVF T0CS, F			      ; nun wird es unter der Speicherzelle gesichert
    		
    NOP
    NOP
    
    ADDWF TMR0,W  ; +1 ergibt 0x00 in w, wenn TMR0=0xFF 
    BTFSS STATUS,Z  ; Sprung, wenn Z-Flag gesetzt 
    GOTO TIMER 
    GOTO NOCHMAL
    		
    END
    wenn fehler im code sind bitte sagt sie mir und ich versuche es entweder mit euch oder alleine zu lösen.

    aber ich bin für alle hilfe dankbar die ihr mir gebt

    mit freundlichen grüßen
    d.stolarek
    ---

  2. #2
    Gast
    Hallo Damian,

    BITTE BEACHTE AUCH MEIN POSTING IM PIC-FORUM VOM 04.11.04
    http://www.fernando-heitor.de/picfor...hp?p=3155#3155

    GRUSS
    INGO

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.10.2004
    Ort
    Nordschwarzwald
    Alter
    33
    Beiträge
    506
    @Ingo: gute Idee... =D>

    @damian: auch ich hab mal klein mit den pics angefangen... Meine ersten Erfahrungen mit PICs machte in ner Projektarbeit musste ich nen Protokollkonverter für ein I2C-ähnliches Protokoll nach RS232 bauen...
    Da hab ich auch erstmal den Wald vor lauter Bäumen nicht gesehen.
    Dann hab ich mir mal das Datenblatt durchgelesen (und zwar wirklich das ganze) und mal versucht ein paar LED's blinken zu lassen...
    Das hat dann auch nach ner Weile geklappt... (die Fuses waren am Anfang mein Hauptproblem) und ab da an gings dann problemlos...

    Nur solltest du dir unbedingt die Sachen durchlesen.

    Du sagst, dass du ein Praktikum machst, also bist du da um zu lernen. Das erste, das man in nem Praktikum lernt, ist, dass man nicht nur seine Zeit absitzt, sondern sich auch in der Zeit mit dem Thema beschäftigt. Wenn du als Thema bekommen hast, von einer Funkstrecke den Datenanfang zu detektieren, dann ist das auch das Thema... und wenn mich einer dann davon wegholt, dass ich irgendwas kopieren soll, dann würde ich mal mit meinem Chef reden, denn sowas kann nicht wirklich sein...

    Ansonsten würde ich dich bitten nicht von einem Forum zum nächsten zu springen, nur weil die dir gesagt haben, dass du mal was selber erarbeiten sollst.

    Sowohl hier wie auch dort helfen dir alle gerne, aber wenn du nicht bereit bist auch selber mal was zu tun, dann kannst du nicht erwarten, dass man dir fertige Lösungen präsentiert.

    Ingo wird sich ja jetzt mit dir treffen und ich hoffe, dass du dann etwas daraus gelernt hast.

    Wenn du dann noch ein Problem hast, kannst du dich gerne melden, aber bitte stell nicht die gleichen Fragen nochmal, die wir schon beantwortet haben...

    MfG
    Stefan

    PS: mit der Beantwortung deiner Frage warte ich mal dein Treffen mit Ingo ab; und dann sehen wir weiter...

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •