K
kotsam
Guest
Hi All,
Ik heb Worte code hieronder aangegeven, is deze code tussen comapring op registers, RAM0 en ADC1 zoals weergegeven in onderstaande code, het probleem is in deze code, als ik writting waarde van deze registers, zonder gebruik RCREG, net verhuizen naar varibales hen, de vergelijk-functie werkt prima, maar als ik probeer te RS232 te gebruiken om wirte in de ram locatie (RAM0 bijvoorbeeld) de comapring niet werkt zoals verwacht, betekent dit dat de RAM0 heeft probleem van de ingevoerde waarde, dat wil zeggen wat ik heb ik de overgedragen waarde aan de TXREG om te zien of ik schriftelijke instructies goed, en wat ik te weten dat ik vreemde signalen (bijvoorbeeld als ik schriftelijke instructies te ram0 5 i weer (!@#$%) maar op de andere had als ik loop de Tranfer transactie i de juiste waarde te krijgen,
kan iemand please help me out Ik heb meer dan een week bezig geweest om uit te vinden waar is het probleem en ik kon vinden;Code:
# include <p18F4550.inc>CONFIG WDT = OFF; uitschakelen watchdog timer
CONFIG MCLRE = ON; geen MCLR
CONFIG DEBUG = ON; uitschakelen Debug Mode
CONFIG LVP = OFF; Low-Voltage programmering gehandicapten (nodig voor debugging)
CONFIG FOSC = HS; voor 20MHZDelay1 res 1; reserve 1 byte voor de variabele Delay1
Delay2 res 1; reserve 1 byte voor de variabele Delay2
;************************************************* *********
; Begin van uitvoerbare codeorg 0x000; Reset vector
NOP
goto Main;************************************************* *********
; Interrupt vectororg 0x008; interruptvector
goto IntService;************************************************* *********
; HoofdprogrammaBelangrijkste
Eerste oproep; Initialize allesMainLoop
goto MainLoop; Oneindige lus;************************************************* *********
; Initial RoutineInitial
Clrf RAM0
Movl W 0x0F
Movwf ADCON1; alle digitale I / O
MOVLW 0x07
Movwf CMCON; alle digitale I / OClrf LATB
Clrf TRISB; PORTB alle uitgang 0
Clrf LATD
Clrf TRISD; PORTB alle uitgang 0movlw ,129;
movwf SPBRGbsf BAUDCON, BRG16
BCF TXSTA, SYNCbsf TXSTA, txeN; inschakelen zenden
BCF TXSTA, BRGH; Selecteer hoog baudratebsf RCSTA, Spen; Enable Serial Port
bsf RCSTA, Cren; inschakelen continu bemandBCF PIR1, RCIF; Clear RCIF Interrupt Flag
bsf PIE1, RCIE; Set RCIE Interrupt Enable
bsf INTCON, PEIE; perifere Enable interrupts
bsf INTCON, GIE; Enable global interrupts; bsf TRISC, 7; Set RC7/RX als input pin
MOVLW b'10101111 '
movwf TRISC
CALL CompareFuncionLOOP
terug;************************************************* *********
; Interrupt Service Routine
; Deze routine wordt aangeroepen wanneer krijgen we een interrupt.IntService
btfsc PIR1, RCIF; Controleer voor een seriële poort Ontvangst onderbreken
gesprek ontvangt
retfie;************************************************* *********
; Ontvang Routine
; Deze routine wordt genoemd whenver krijgen we een seriële poort Ontvangst onderbreken.
Ontvangen:
; deze indirecte adressering
; proces gegevens wilde ram locatie; door schriftelijke instructies van de gegevens en het adres
movf RCREG, W;
movwf FSR0L; is hier het selecteren van het adres,, Ik weet dat het moet FSR0H maar zijn niet vereist voor deze test zijn
movf RCREG, W;
movwf INDF0; schriftelijke instructies in het geselecteerde adres
RETURNCompareFuncion:CALL SAVEINTORAM; nemen de Ram waarde hier is het probleem dat de ram de waarde van de recvied hier niet als de ingevoerde waarde
MOVLW D'51 ', maar in de andere kant, als ik niet schrijven naar RAM0 zoals ik heb gedaan voor ADC1 het werkt prima, alleen wanneer ik de waarde via RCREG het maakt problemen
Movwf ADC1; gebracht d'51 'in ADC1
; MOVF ADC1, W;
SUBWF RAM0; ADC1-RAM0 = 0
BTFSC STATUS, Z
GOTO CompareFuncion, ja herhalen
GOTO CHECKNEG; NOCHECKNEG
Clrf ADC1
MOVF ADC1, W
SUBWF RAM0; ADC1-RAM0 = negatief
BTFSC STATUS, N
GOTO PoTDownAN0
GOTO PotUPAN0PoTDownAN0:; MOVE POT omlaag
bsf PORTB, 5; / CS
NOP
bsf PORTB, 4; / UD
NOP
BCF PORTB, 5; / CS
NOP
BCF PORTB, 4; / UD
NOP
bsf PORTB, 4; / UD
bsf PORTB, 5; / CS
GOTO CompareFuncion
PotUPAN0:; MOVE POT-up
bsf PORTB, 5; / CS
NOP
BCF PORTB, 4; / UD
NOP
BCF PORTB, 5; / CS
NOP
bsf PORTB, 4; / UD
NOP
BCF PORTB, 4; / UD
bsf PORTB, 5; / CS
GOTO CompareFuncion
SAVEINTORAM:
MOVF RAM0, W
Movwf TXREG, ik ben het lezen van de waarde te zorgen dat de schreef ik in het correclty maar ik krijg vreemd signaal (als ik schrijf bijvoorbeeld 5,
, i get (! @ haohuege (geluiden)), maar ik loop; zoals GOTO SAVEINTORAM ik de juiste waarde, maar de oneindige lus;RETURN
eindigen
Ik heb Worte code hieronder aangegeven, is deze code tussen comapring op registers, RAM0 en ADC1 zoals weergegeven in onderstaande code, het probleem is in deze code, als ik writting waarde van deze registers, zonder gebruik RCREG, net verhuizen naar varibales hen, de vergelijk-functie werkt prima, maar als ik probeer te RS232 te gebruiken om wirte in de ram locatie (RAM0 bijvoorbeeld) de comapring niet werkt zoals verwacht, betekent dit dat de RAM0 heeft probleem van de ingevoerde waarde, dat wil zeggen wat ik heb ik de overgedragen waarde aan de TXREG om te zien of ik schriftelijke instructies goed, en wat ik te weten dat ik vreemde signalen (bijvoorbeeld als ik schriftelijke instructies te ram0 5 i weer (!@#$%) maar op de andere had als ik loop de Tranfer transactie i de juiste waarde te krijgen,
kan iemand please help me out Ik heb meer dan een week bezig geweest om uit te vinden waar is het probleem en ik kon vinden;Code:
# include <p18F4550.inc>CONFIG WDT = OFF; uitschakelen watchdog timer
CONFIG MCLRE = ON; geen MCLR
CONFIG DEBUG = ON; uitschakelen Debug Mode
CONFIG LVP = OFF; Low-Voltage programmering gehandicapten (nodig voor debugging)
CONFIG FOSC = HS; voor 20MHZDelay1 res 1; reserve 1 byte voor de variabele Delay1
Delay2 res 1; reserve 1 byte voor de variabele Delay2
;************************************************* *********
; Begin van uitvoerbare codeorg 0x000; Reset vector
NOP
goto Main;************************************************* *********
; Interrupt vectororg 0x008; interruptvector
goto IntService;************************************************* *********
; HoofdprogrammaBelangrijkste
Eerste oproep; Initialize allesMainLoop
goto MainLoop; Oneindige lus;************************************************* *********
; Initial RoutineInitial
Clrf RAM0
Movl W 0x0F
Movwf ADCON1; alle digitale I / O
MOVLW 0x07
Movwf CMCON; alle digitale I / OClrf LATB
Clrf TRISB; PORTB alle uitgang 0
Clrf LATD
Clrf TRISD; PORTB alle uitgang 0movlw ,129;
movwf SPBRGbsf BAUDCON, BRG16
BCF TXSTA, SYNCbsf TXSTA, txeN; inschakelen zenden
BCF TXSTA, BRGH; Selecteer hoog baudratebsf RCSTA, Spen; Enable Serial Port
bsf RCSTA, Cren; inschakelen continu bemandBCF PIR1, RCIF; Clear RCIF Interrupt Flag
bsf PIE1, RCIE; Set RCIE Interrupt Enable
bsf INTCON, PEIE; perifere Enable interrupts
bsf INTCON, GIE; Enable global interrupts; bsf TRISC, 7; Set RC7/RX als input pin
MOVLW b'10101111 '
movwf TRISC
CALL CompareFuncionLOOP
terug;************************************************* *********
; Interrupt Service Routine
; Deze routine wordt aangeroepen wanneer krijgen we een interrupt.IntService
btfsc PIR1, RCIF; Controleer voor een seriële poort Ontvangst onderbreken
gesprek ontvangt
retfie;************************************************* *********
; Ontvang Routine
; Deze routine wordt genoemd whenver krijgen we een seriële poort Ontvangst onderbreken.
Ontvangen:
; deze indirecte adressering
; proces gegevens wilde ram locatie; door schriftelijke instructies van de gegevens en het adres
movf RCREG, W;
movwf FSR0L; is hier het selecteren van het adres,, Ik weet dat het moet FSR0H maar zijn niet vereist voor deze test zijn
movf RCREG, W;
movwf INDF0; schriftelijke instructies in het geselecteerde adres
RETURNCompareFuncion:CALL SAVEINTORAM; nemen de Ram waarde hier is het probleem dat de ram de waarde van de recvied hier niet als de ingevoerde waarde
MOVLW D'51 ', maar in de andere kant, als ik niet schrijven naar RAM0 zoals ik heb gedaan voor ADC1 het werkt prima, alleen wanneer ik de waarde via RCREG het maakt problemen
Movwf ADC1; gebracht d'51 'in ADC1
; MOVF ADC1, W;
SUBWF RAM0; ADC1-RAM0 = 0
BTFSC STATUS, Z
GOTO CompareFuncion, ja herhalen
GOTO CHECKNEG; NOCHECKNEG
Clrf ADC1
MOVF ADC1, W
SUBWF RAM0; ADC1-RAM0 = negatief
BTFSC STATUS, N
GOTO PoTDownAN0
GOTO PotUPAN0PoTDownAN0:; MOVE POT omlaag
bsf PORTB, 5; / CS
NOP
bsf PORTB, 4; / UD
NOP
BCF PORTB, 5; / CS
NOP
BCF PORTB, 4; / UD
NOP
bsf PORTB, 4; / UD
bsf PORTB, 5; / CS
GOTO CompareFuncion
PotUPAN0:; MOVE POT-up
bsf PORTB, 5; / CS
NOP
BCF PORTB, 4; / UD
NOP
BCF PORTB, 5; / CS
NOP
bsf PORTB, 4; / UD
NOP
BCF PORTB, 4; / UD
bsf PORTB, 5; / CS
GOTO CompareFuncion
SAVEINTORAM:
MOVF RAM0, W
Movwf TXREG, ik ben het lezen van de waarde te zorgen dat de schreef ik in het correclty maar ik krijg vreemd signaal (als ik schrijf bijvoorbeeld 5,
, i get (! @ haohuege (geluiden)), maar ik loop; zoals GOTO SAVEINTORAM ik de juiste waarde, maar de oneindige lus;RETURN
eindigen