A
asic1984
Guest
Salut
Vreau sa fac un cod care citesc ADC si trimite valorile prin RS232
am încercat să fac urmatorul cod şi simulează o în Proteus, dar lucrează nimic nu
pentru i canal Evert trimit mai întâi un caracter care reprezintă canalul, atunci mai mică şi apoi valori ridicate ale ADC
dorinţa ca orice unul mă poate ajuta pentru a găsi problema
Codrocesor 16f877
# include "p16f877.inc"org 0x00
Du-te la început
org 0x04org 0x06porni
BSF STATUS, RP0; Bank 1
Movlw 0x00
Movwf TRISB; PORTURILE î.Hr. ieşire (OUTPUT DIGITAL valoare)
Movwf TRISC; Pins Configuraţi analog / de referinţă de tensiune şi de I / O digitale (ADCON1)Movlw B'10000000 '; VREF ESTE Vdd ŞI VSS ŞI PINS toate sunt ANALOG
Movwf ADCON1; aliniate la dreaptade apel Irs232;------------------------------------------------- ------------
loop
;------------------------------------------------- ------------; Selectaţi A / D canal de intrare (ADCON0)
; Selectaţi A / D ceas de conversie (ADCON0)
; Porniţi A / D modulul (ADCON0)
BCF STATUS, RP0; Bank 0
Movlw B'10000001 "
Movwf ADCON0; Start conversie: GO setează / DONE biţi (ADCON0)
BSF ADCON0, 2
CALL DELAY; De votare pentru go / DONE de biţi pentru a fi eliminate (cu întrerupe activat);
WAIT1 BTFSC ADCON0, 2
GOTO WAIT1
; READ VALOAREA DE CONVERSIEBCF STATUS, 5
Movlw 84; TRIMITE T
Movwf TXREG
LOOP1 BTFSS PIR1, 4
GOTO LOOP1
BSF STATUS, 5
MOVFW ADRESL
BCF STATUS, 5
Movwf TXREG
LOOP2 BTFSS PIR1, 4
GOTO LOOP2
MOVFW ADRESH
Movwf TXREG
LOOP3 BTFSS PIR1, 4
GOTO LOOP3
;------------------------------------------------- -------------; Selectaţi A / D canal de intrare (ADCON0)
; Selectaţi A / D ceas de conversie (ADCON0)
; Porniţi A / D modulul (ADCON0)
; BCF STATUS, RP0; Bank 0
Movlw B'10001001 "
Movwf ADCON0; Start conversie: GO setează / DONE biţi (ADCON0)
BSF ADCON0, 2; De votare pentru go / DONE de biţi pentru a fi eliminate (cu întrerupe activat);
WAIT2 BTFSC ADCON0, 2
GOTO WAIT2
; READ VALOAREA DE CONVERSIEBCF STATUS, 5
Movlw 69; TRIMITE E
Movwf TXREG
LOOP4 BTFSS PIR1, 4
GOTO LOOP4
BSF STATUS, 5
MOVFW ADRESL
BCF STATUS, 5
Movwf TXREG
LOOP5 BTFSS PIR1, 4
GOTO LOOP5
MOVFW ADRESH
Movwf TXREG
LOOP6 BTFSS PIR1, 4
GOTO LOOP6
;------------------------------------------------- -------------; Selectaţi A / D canal de intrare (ADCON0)
; Selectaţi A / D ceas de conversie (ADCON0)
; Porniţi A / D modulul (ADCON0)
; BCF STATUS, RP0; Bank 0
Movlw B'10010001 "
Movwf ADCON0; Start conversie: GO setează / DONE biţi (ADCON0)
BSF ADCON0, 2; De votare pentru go / DONE de biţi pentru a fi eliminate (cu întrerupe activat);
WAIT3 BTFSC ADCON0, 2
GOTO WAIT3
; READ VALOAREA DE CONVERSIEBCF STATUS, 5
Movlw 65; TRIMITE O
Movwf TXREG
LOOP7 BTFSS PIR1, 4
GOTO LOOP7
BSF STATUS, 5
MOVFW ADRESL
BCF STATUS, 5
Movwf TXREG
LOOP8 BTFSS PIR1, 4
GOTO LOOP8
MOVFW ADRESH
Movwf TXREG
LOOP9 BTFSS PIR1, 4
GOTO LOOP9;------------------------------------------------- -------; Selectaţi A / D canal de intrare (ADCON0)
; Selectaţi A / D ceas de conversie (ADCON0)
; Porniţi A / D modulul (ADCON0)
; BCF STATUS, RP0; Bank 0
Movlw B'10011001 "
Movwf ADCON0; Start conversie: GO setează / DONE biţi (ADCON0)
BSF ADCON0, 2; De votare pentru go / DONE de biţi pentru a fi eliminate (cu întrerupe activat);
Wait4 BTFSC ADCON0, 2
GOTO wait4
; READ VALOAREA DE CONVERSIEBCF STATUS, 5
Movlw 82; TRIMITE R
Movwf TXREG
LOOP10 BTFSS PIR1, 4
GOTO LOOP10
BSF STATUS, 5
MOVFW ADRESL
BCF STATUS, 5
Movwf TXREG
LOOP11 BTFSS PIR1, 4
GOTO LOOP11
MOVFW ADRESH
Movwf TXREG
LOOP12 BTFSS PIR1, 4
GOTO LOOP12
;------------------------------------------------- -------; Bucla goto
;------------------------------------------------- ------------
Irs232
; Iniţializaţi registrul SPBRG pentru corespunzătoare
; Rata baud.
În cazul în care o viteză ridicată rată baud este de dorit,
; Set BRGH de biţi
BSF STATUS, 5; Bank 1
Movlw 42
Movwf SPBRG; Baud Rate 28.8 K
BSF TXSTA, 2; pentru High Baud Rate
; Activaţi portul serial asincron prin compensare
; bit Sync şi Spen setarea de biţi.BCF TXSTA, 4
BCF STATUS, 5; Bank 0
BSF RCSTA, 7; ENABLE Serial Port; Permite transmiterea prin stabilirea de TXEN de biţi,
; care va stabili, de asemenea, TXIF biţi.BSF STATUS, 5
BSF TXSTA, 5întoarce;------------------------------------------------- -----------SFÂRŞIT
Vreau sa fac un cod care citesc ADC si trimite valorile prin RS232
am încercat să fac urmatorul cod şi simulează o în Proteus, dar lucrează nimic nu
pentru i canal Evert trimit mai întâi un caracter care reprezintă canalul, atunci mai mică şi apoi valori ridicate ale ADC
dorinţa ca orice unul mă poate ajuta pentru a găsi problema
Codrocesor 16f877
# include "p16f877.inc"org 0x00
Du-te la început
org 0x04org 0x06porni
BSF STATUS, RP0; Bank 1
Movlw 0x00
Movwf TRISB; PORTURILE î.Hr. ieşire (OUTPUT DIGITAL valoare)
Movwf TRISC; Pins Configuraţi analog / de referinţă de tensiune şi de I / O digitale (ADCON1)Movlw B'10000000 '; VREF ESTE Vdd ŞI VSS ŞI PINS toate sunt ANALOG
Movwf ADCON1; aliniate la dreaptade apel Irs232;------------------------------------------------- ------------
loop
;------------------------------------------------- ------------; Selectaţi A / D canal de intrare (ADCON0)
; Selectaţi A / D ceas de conversie (ADCON0)
; Porniţi A / D modulul (ADCON0)
BCF STATUS, RP0; Bank 0
Movlw B'10000001 "
Movwf ADCON0; Start conversie: GO setează / DONE biţi (ADCON0)
BSF ADCON0, 2
CALL DELAY; De votare pentru go / DONE de biţi pentru a fi eliminate (cu întrerupe activat);
WAIT1 BTFSC ADCON0, 2
GOTO WAIT1
; READ VALOAREA DE CONVERSIEBCF STATUS, 5
Movlw 84; TRIMITE T
Movwf TXREG
LOOP1 BTFSS PIR1, 4
GOTO LOOP1
BSF STATUS, 5
MOVFW ADRESL
BCF STATUS, 5
Movwf TXREG
LOOP2 BTFSS PIR1, 4
GOTO LOOP2
MOVFW ADRESH
Movwf TXREG
LOOP3 BTFSS PIR1, 4
GOTO LOOP3
;------------------------------------------------- -------------; Selectaţi A / D canal de intrare (ADCON0)
; Selectaţi A / D ceas de conversie (ADCON0)
; Porniţi A / D modulul (ADCON0)
; BCF STATUS, RP0; Bank 0
Movlw B'10001001 "
Movwf ADCON0; Start conversie: GO setează / DONE biţi (ADCON0)
BSF ADCON0, 2; De votare pentru go / DONE de biţi pentru a fi eliminate (cu întrerupe activat);
WAIT2 BTFSC ADCON0, 2
GOTO WAIT2
; READ VALOAREA DE CONVERSIEBCF STATUS, 5
Movlw 69; TRIMITE E
Movwf TXREG
LOOP4 BTFSS PIR1, 4
GOTO LOOP4
BSF STATUS, 5
MOVFW ADRESL
BCF STATUS, 5
Movwf TXREG
LOOP5 BTFSS PIR1, 4
GOTO LOOP5
MOVFW ADRESH
Movwf TXREG
LOOP6 BTFSS PIR1, 4
GOTO LOOP6
;------------------------------------------------- -------------; Selectaţi A / D canal de intrare (ADCON0)
; Selectaţi A / D ceas de conversie (ADCON0)
; Porniţi A / D modulul (ADCON0)
; BCF STATUS, RP0; Bank 0
Movlw B'10010001 "
Movwf ADCON0; Start conversie: GO setează / DONE biţi (ADCON0)
BSF ADCON0, 2; De votare pentru go / DONE de biţi pentru a fi eliminate (cu întrerupe activat);
WAIT3 BTFSC ADCON0, 2
GOTO WAIT3
; READ VALOAREA DE CONVERSIEBCF STATUS, 5
Movlw 65; TRIMITE O
Movwf TXREG
LOOP7 BTFSS PIR1, 4
GOTO LOOP7
BSF STATUS, 5
MOVFW ADRESL
BCF STATUS, 5
Movwf TXREG
LOOP8 BTFSS PIR1, 4
GOTO LOOP8
MOVFW ADRESH
Movwf TXREG
LOOP9 BTFSS PIR1, 4
GOTO LOOP9;------------------------------------------------- -------; Selectaţi A / D canal de intrare (ADCON0)
; Selectaţi A / D ceas de conversie (ADCON0)
; Porniţi A / D modulul (ADCON0)
; BCF STATUS, RP0; Bank 0
Movlw B'10011001 "
Movwf ADCON0; Start conversie: GO setează / DONE biţi (ADCON0)
BSF ADCON0, 2; De votare pentru go / DONE de biţi pentru a fi eliminate (cu întrerupe activat);
Wait4 BTFSC ADCON0, 2
GOTO wait4
; READ VALOAREA DE CONVERSIEBCF STATUS, 5
Movlw 82; TRIMITE R
Movwf TXREG
LOOP10 BTFSS PIR1, 4
GOTO LOOP10
BSF STATUS, 5
MOVFW ADRESL
BCF STATUS, 5
Movwf TXREG
LOOP11 BTFSS PIR1, 4
GOTO LOOP11
MOVFW ADRESH
Movwf TXREG
LOOP12 BTFSS PIR1, 4
GOTO LOOP12
;------------------------------------------------- -------; Bucla goto
;------------------------------------------------- ------------
Irs232
; Iniţializaţi registrul SPBRG pentru corespunzătoare
; Rata baud.
În cazul în care o viteză ridicată rată baud este de dorit,
; Set BRGH de biţi
BSF STATUS, 5; Bank 1
Movlw 42
Movwf SPBRG; Baud Rate 28.8 K
BSF TXSTA, 2; pentru High Baud Rate
; Activaţi portul serial asincron prin compensare
; bit Sync şi Spen setarea de biţi.BCF TXSTA, 4
BCF STATUS, 5; Bank 0
BSF RCSTA, 7; ENABLE Serial Port; Permite transmiterea prin stabilirea de TXEN de biţi,
; care va stabili, de asemenea, TXIF biţi.BSF STATUS, 5
BSF TXSTA, 5întoarce;------------------------------------------------- -----------SFÂRŞIT