ADC si RS232 porblem codul?

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

Cod:procesor 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
 
a putea anyone ajuta la tipul ăsta?Aş dori să ştiu acest lucru eu însumi.

 
Sfătui meu este:1) simula A / cod D singur şi RS232 numai atunci când au r ambele cu succes de lucru unificarea celor două coduri, împreună
2) trecerea la un limbaj de nivel înalt (de bază, c, ... etc), din cauza ur pierzi timpul

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Wink" border="0" />Hope i, am ajutat u

 
Salut

În exemple Proteus exista un exemplu bazat pe Pic 16f877 care utilizează ADC si dispalyes O / P, la data de 7 segment.
Puteţi porni de la acest punct, apoi adăugaţi codul RS232

Salam
Hossam AlzomorAdăugat dupa 4 ore 42 minute:Salut

Ataşat puteţi găsi sursa de asamblare, după ce am modifide aceasta pentru a lucra la RS232
Tocmai am folosit Cele mai segneficant 8 biţi a ADC

Salam
Hossam Alzomor

 

Welcome to EDABoard.com

Sponsor

Back
Top