ADC a RS232 kód porblem?

A

asic1984

Guest
nazdar

Chci, aby kód, který ADC číst a posílat hodnot přes RS232

Snažil jsem se učinit následující kód a simulovat v Proteusi ale nic práce

převrátit na kanál jsem odesílání první znak, který zastupuje kanálu pak dolní a potom na vysoké hodnoty z ADC

přání, aby byl některý mi může pomoci najít problém

Kód:procesor 16f877

# include "p16f877.inc"org 0x00

goto start

org 0x04org 0x06začít

BSF STATUS, RP0; BANK 1

MOVLW 0x00

MOVWF TRISB; PŘÍSTAVY BC VÝSTUP (VÝSTUP NA DIGITÁLNÍ VALUE)

MOVWF TRISC; Nakonfigurujte analogové piny / referenční napětí a digitální I / O (ADCON1)MOVLW B'10000000 '; VREF IS VDD a VSS A VŠECHNY JSOU PINS ANALOG

MOVWF ADCON1; PRÁVO odůvodněnýchcall Irs232;------------------------------------------------- ------------

smyčky

;------------------------------------------------- ------------; Vyberte A / D vstup kanálu (ADCON0)

; Vyberte A / D konverzí hodiny (ADCON0)

Obraťte se na A / D modul (ADCON0)

BCF STATUS, RP0; BANK 0

MOVLW B'10000001 '

MOVWF ADCON0; Start konverze: Set GO Done bit (ADCON0)

BSF ADCON0, 2

CALL PRODLENÍ; Polling pro GO Done bit být vymazána (s přerušovaly povoleny);

WAIT1 BTFSC ADCON0, 2

Jdi WAIT1

; Číst hodnotu konverzeBCF STATUS, 5

MOVLW 84; POSLAT T

MOVWF TXREG

LOOP1 BTFSS PIR1, 4

Jdi LOOP1

BSF STATUS, 5

MOVFW ADRESL

BCF STATUS, 5

MOVWF TXREG

LOOP2 BTFSS PIR1, 4

Jdi LOOP2

MOVFW ADRESH

MOVWF TXREG

LOOP3 BTFSS PIR1, 4

Jdi LOOP3

;------------------------------------------------- -------------; Vyberte A / D vstup kanálu (ADCON0)

; Vyberte A / D konverzí hodiny (ADCON0)

Obraťte se na A / D modul (ADCON0)

; BCF STATUS, RP0; BANK 0

MOVLW B'10001001 '

MOVWF ADCON0; Start konverze: Set GO Done bit (ADCON0)

BSF ADCON0, 2; Polling pro GO Done bit být vymazána (s přerušovaly povoleny);

WAIT2 BTFSC ADCON0, 2

Jdi WAIT2

; Číst hodnotu konverzeBCF STATUS, 5

MOVLW 69; POSLAT E

MOVWF TXREG

LOOP4 BTFSS PIR1, 4

Jdi LOOP4

BSF STATUS, 5

MOVFW ADRESL

BCF STATUS, 5

MOVWF TXREG

LOOP5 BTFSS PIR1, 4

Jdi LOOP5

MOVFW ADRESH

MOVWF TXREG

LOOP6 BTFSS PIR1, 4

Jdi LOOP6

;------------------------------------------------- -------------; Vyberte A / D vstup kanálu (ADCON0)

; Vyberte A / D konverzí hodiny (ADCON0)

Obraťte se na A / D modul (ADCON0)

; BCF STATUS, RP0; BANK 0

MOVLW B'10010001 '

MOVWF ADCON0; Start konverze: Set GO Done bit (ADCON0)

BSF ADCON0, 2; Polling pro GO Done bit být vymazána (s přerušovaly povoleny);

WAIT3 BTFSC ADCON0, 2

Jdi WAIT3

; Číst hodnotu konverzeBCF STATUS, 5

MOVLW 65; Odeslat

MOVWF TXREG

LOOP7 BTFSS PIR1, 4

Jdi LOOP7

BSF STATUS, 5

MOVFW ADRESL

BCF STATUS, 5

MOVWF TXREG

LOOP8 BTFSS PIR1, 4

Jdi LOOP8

MOVFW ADRESH

MOVWF TXREG

LOOP9 BTFSS PIR1, 4

Jdi LOOP9;------------------------------------------------- -------; Vyberte A / D vstup kanálu (ADCON0)

; Vyberte A / D konverzí hodiny (ADCON0)

Obraťte se na A / D modul (ADCON0)

; BCF STATUS, RP0; BANK 0

MOVLW B'10011001 '

MOVWF ADCON0; Start konverze: Set GO Done bit (ADCON0)

BSF ADCON0, 2; Polling pro GO Done bit být vymazána (s přerušovaly povoleny);

WAIT4 BTFSC ADCON0, 2

Jdi WAIT4

; Číst hodnotu konverzeBCF STATUS, 5

MOVLW 82; POSLAT R

MOVWF TXREG

LOOP10 BTFSS PIR1, 4

Jdi LOOP10

BSF STATUS, 5

MOVFW ADRESL

BCF STATUS, 5

MOVWF TXREG

LOOP11 BTFSS PIR1, 4

Jdi LOOP11

MOVFW ADRESH

MOVWF TXREG

LOOP12 BTFSS PIR1, 4

Jdi LOOP12

;------------------------------------------------- -------; Goto smyčky

;------------------------------------------------- ------------

Irs232

; Inicializovat SPBRG se zaregistrovat pro příslušná

, Přenosovou rychlostí.
Pokud vysokorychlostní přenosová rychlost je žádoucí,

; Nastavit bit BRGH

BSF STATUS, 5; BANK 1

MOVLW 42

MOVWF SPBRG, přenosová rychlost 28,8 K

BSF TXSTA, 2; PRO VYSOKOU rychlost
; Povolte asynchronní sériový port a zúčtování

; bit SYNC a nastavení bitové SPEN.BCF TXSTA, 4

BCF STATUS, 5; BANK 0

BSF RCSTA, 7; ENABLE SERIAL PORT; Povolit přenos nastavením bitu TXEN,

, která bude také nastavit bit TXIF.BSF STATUS, 5

BSF TXSTA, 5návrat;------------------------------------------------- -----------END
 
Moje poradit se:1) simulovat A / D kódům a RS232 sám pak, když r jak úspěšně pracují sloučit obě kódy spolu
2) přechod na vysokou úroveň jazyka (základní, c, ... atd.), protože ur ztrácíš čas

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Wink" border="0" />Doufám, že i to pomohlo u

 
Nazdar

V Proteusi příklady zde je příklad založený na Obr 16f877 která používá ADC a dispalyes O / P na 7 segment.
Můžete začít od tohoto bodu poté přidejte RS232 kód

Salam
Hossam AlzomorPřidáno po 4 hodiny 42 minut:Nazdar

Přiložené najdete shromáždění zdrojem když jsem ho modifide práce na RS232
Jen jsem použil Most segneficant 8 bitů z ADC

Salam
Hossam Alzomor

 

Welcome to EDABoard.com

Sponsor

Back
Top