A
asic1984
Guest
nazdar
Chcem, aby kód, ktorý ADC čítať a posielať hodnôt cez RS232
Snažil som sa urobiť nasledujúci kód a simulovať v Proteus ale nič práce
prevrátiť na kanál som odosielanie prvý znak, ktorý zastupuje kanála potom dolnú a potom na vysokej hodnoty z ADC
želanie, aby bol niektorý mi môže pomôcť nájsť problém
Kódrocesor 16f877
# Include "p16f877.inc"org 0x00
goto start
org 0x04org 0x06začať
BSF STATUS, RP0; BANK 1
MOVLW 0x00
MOVWF TRISB; PRÍSTAVY BC VÝSTUP (VÝSTUP NA DIGITÁLNE VALUE)
MOVWF smietke; Nakonfigurujte analógové piny / referenčné napätie a digitálne I / O (ADCON1)MOVLW B'10000000 '; VREF IS VDD a VSS A VŠETKY SÚ PINS ANALOG
MOVWF ADCON1; PRÁVO odôvodnenýchcall Irs232;------------------------------------------------- ------------
slučky
;------------------------------------------------- ------------; Vyberte A / D vstup kanála (ADCON0)
; Vyberte A / D konverzie hodiny (ADCON0)
Obráťte sa na A / D modul (ADCON0)
BCF STATUS, RP0; BÁNK 0
MOVLW B'10000001 '
MOVWF ADCON0; Štart konverzie: Set GO Done bit (ADCON0)
BSF ADCON0, 2
CALL OMEŠKANIA; Polling pre GO Done bit byť vymazaný (s narušili povolené);
WAIT1 BTFSC ADCON0, 2
Choď WAIT1
; Čítať hodnotu konverzieBCF STATUS, 5
MOVLW 84; POSLAŤ T
MOVWF TXREG
LOOP1 BTFSS PIR1, 4
Choď LOOP1
BSF STATUS, 5
MOVFW ADRESL
BCF STATUS, 5
MOVWF TXREG
LOOP2 BTFSS PIR1, 4
Choď LOOP2
MOVFW ADRESH
MOVWF TXREG
LOOP3 BTFSS PIR1, 4
Choď LOOP3
;------------------------------------------------- -------------; Vyberte A / D vstup kanála (ADCON0)
; Vyberte A / D konverzie hodiny (ADCON0)
Obráťte sa na A / D modul (ADCON0)
; BCF STATUS, RP0; BÁNK 0
MOVLW B'10001001 '
MOVWF ADCON0; Štart konverzie: Set GO Done bit (ADCON0)
BSF ADCON0, 2; Polling pre GO Done bit byť vymazaný (s narušili povolené);
WAIT2 BTFSC ADCON0, 2
Choď WAIT2
; Čítať hodnotu konverzieBCF STATUS, 5
MOVLW 69; POSLAŤ E
MOVWF TXREG
LOOP4 BTFSS PIR1, 4
Choď LOOP4
BSF STATUS, 5
MOVFW ADRESL
BCF STATUS, 5
MOVWF TXREG
LOOP5 BTFSS PIR1, 4
Choď LOOP5
MOVFW ADRESH
MOVWF TXREG
LOOP6 BTFSS PIR1, 4
Choď LOOP6
;------------------------------------------------- -------------; Vyberte A / D vstup kanála (ADCON0)
; Vyberte A / D konverzie hodiny (ADCON0)
Obráťte sa na A / D modul (ADCON0)
; BCF STATUS, RP0; BÁNK 0
MOVLW B'10010001 '
MOVWF ADCON0; Štart konverzie: Set GO Done bit (ADCON0)
BSF ADCON0, 2; Polling pre GO Done bit byť vymazaný (s narušili povolené);
WAIT3 BTFSC ADCON0, 2
Choď WAIT3
; Čítať hodnotu konverzieBCF STATUS, 5
MOVLW 65; Odoslať
MOVWF TXREG
LOOP7 BTFSS PIR1, 4
Choď LOOP7
BSF STATUS, 5
MOVFW ADRESL
BCF STATUS, 5
MOVWF TXREG
LOOP8 BTFSS PIR1, 4
Choď LOOP8
MOVFW ADRESH
MOVWF TXREG
LOOP9 BTFSS PIR1, 4
Choď LOOP9;------------------------------------------------- -------; Vyberte A / D vstup kanála (ADCON0)
; Vyberte A / D konverzie hodiny (ADCON0)
Obráťte sa na A / D modul (ADCON0)
; BCF STATUS, RP0; BÁNK 0
MOVLW B'10011001 '
MOVWF ADCON0; Štart konverzie: Set GO Done bit (ADCON0)
BSF ADCON0, 2; Polling pre GO Done bit byť vymazaný (s narušili povolené);
WAIT4 BTFSC ADCON0, 2
Choď WAIT4
; Čítať hodnotu konverzieBCF STATUS, 5
MOVLW 82; POSLAŤ R
MOVWF TXREG
LOOP10 BTFSS PIR1, 4
Choď LOOP10
BSF STATUS, 5
MOVFW ADRESL
BCF STATUS, 5
MOVWF TXREG
LOOP11 BTFSS PIR1, 4
Choď LOOP11
MOVFW ADRESH
MOVWF TXREG
LOOP12 BTFSS PIR1, 4
Choď LOOP12
;------------------------------------------------- -------; Goto slučky
;------------------------------------------------- ------------
Irs232
; Inicializova SPBRG sa zaregistrovať pre príslušné
, Prenosové rýchlosti.
Ak vysokorýchlostné prenosová rýchlosť je žiaduce,
; Nastaviť bit BRGH
BSF STATUS, 5; BANK 1
MOVLW 42
MOVWF SPBRG, prenosová rýchlosť 28,8 K
BSF TXSTA, 2; PRE VYSOKÚ rýchlosť
; Povoľte asynchronní sériový port a zúčtovanie
; Bit SYNC a nastavenie bitovej ŠPENÁT.BCF TXSTA, 4
BCF STATUS, 5; BÁNK 0
BSF RCSTA, 7; ENABLE SERIAL PORT; Povoliť prenos nastavením bitu TXEN,
, Ktorá bude tiež nastaviť bit TXIF.BSF STATUS, 5
BSF TXSTA, 5návrat;------------------------------------------------- -----------END
Chcem, aby kód, ktorý ADC čítať a posielať hodnôt cez RS232
Snažil som sa urobiť nasledujúci kód a simulovať v Proteus ale nič práce
prevrátiť na kanál som odosielanie prvý znak, ktorý zastupuje kanála potom dolnú a potom na vysokej hodnoty z ADC
želanie, aby bol niektorý mi môže pomôcť nájsť problém
Kódrocesor 16f877
# Include "p16f877.inc"org 0x00
goto start
org 0x04org 0x06začať
BSF STATUS, RP0; BANK 1
MOVLW 0x00
MOVWF TRISB; PRÍSTAVY BC VÝSTUP (VÝSTUP NA DIGITÁLNE VALUE)
MOVWF smietke; Nakonfigurujte analógové piny / referenčné napätie a digitálne I / O (ADCON1)MOVLW B'10000000 '; VREF IS VDD a VSS A VŠETKY SÚ PINS ANALOG
MOVWF ADCON1; PRÁVO odôvodnenýchcall Irs232;------------------------------------------------- ------------
slučky
;------------------------------------------------- ------------; Vyberte A / D vstup kanála (ADCON0)
; Vyberte A / D konverzie hodiny (ADCON0)
Obráťte sa na A / D modul (ADCON0)
BCF STATUS, RP0; BÁNK 0
MOVLW B'10000001 '
MOVWF ADCON0; Štart konverzie: Set GO Done bit (ADCON0)
BSF ADCON0, 2
CALL OMEŠKANIA; Polling pre GO Done bit byť vymazaný (s narušili povolené);
WAIT1 BTFSC ADCON0, 2
Choď WAIT1
; Čítať hodnotu konverzieBCF STATUS, 5
MOVLW 84; POSLAŤ T
MOVWF TXREG
LOOP1 BTFSS PIR1, 4
Choď LOOP1
BSF STATUS, 5
MOVFW ADRESL
BCF STATUS, 5
MOVWF TXREG
LOOP2 BTFSS PIR1, 4
Choď LOOP2
MOVFW ADRESH
MOVWF TXREG
LOOP3 BTFSS PIR1, 4
Choď LOOP3
;------------------------------------------------- -------------; Vyberte A / D vstup kanála (ADCON0)
; Vyberte A / D konverzie hodiny (ADCON0)
Obráťte sa na A / D modul (ADCON0)
; BCF STATUS, RP0; BÁNK 0
MOVLW B'10001001 '
MOVWF ADCON0; Štart konverzie: Set GO Done bit (ADCON0)
BSF ADCON0, 2; Polling pre GO Done bit byť vymazaný (s narušili povolené);
WAIT2 BTFSC ADCON0, 2
Choď WAIT2
; Čítať hodnotu konverzieBCF STATUS, 5
MOVLW 69; POSLAŤ E
MOVWF TXREG
LOOP4 BTFSS PIR1, 4
Choď LOOP4
BSF STATUS, 5
MOVFW ADRESL
BCF STATUS, 5
MOVWF TXREG
LOOP5 BTFSS PIR1, 4
Choď LOOP5
MOVFW ADRESH
MOVWF TXREG
LOOP6 BTFSS PIR1, 4
Choď LOOP6
;------------------------------------------------- -------------; Vyberte A / D vstup kanála (ADCON0)
; Vyberte A / D konverzie hodiny (ADCON0)
Obráťte sa na A / D modul (ADCON0)
; BCF STATUS, RP0; BÁNK 0
MOVLW B'10010001 '
MOVWF ADCON0; Štart konverzie: Set GO Done bit (ADCON0)
BSF ADCON0, 2; Polling pre GO Done bit byť vymazaný (s narušili povolené);
WAIT3 BTFSC ADCON0, 2
Choď WAIT3
; Čítať hodnotu konverzieBCF STATUS, 5
MOVLW 65; Odoslať
MOVWF TXREG
LOOP7 BTFSS PIR1, 4
Choď LOOP7
BSF STATUS, 5
MOVFW ADRESL
BCF STATUS, 5
MOVWF TXREG
LOOP8 BTFSS PIR1, 4
Choď LOOP8
MOVFW ADRESH
MOVWF TXREG
LOOP9 BTFSS PIR1, 4
Choď LOOP9;------------------------------------------------- -------; Vyberte A / D vstup kanála (ADCON0)
; Vyberte A / D konverzie hodiny (ADCON0)
Obráťte sa na A / D modul (ADCON0)
; BCF STATUS, RP0; BÁNK 0
MOVLW B'10011001 '
MOVWF ADCON0; Štart konverzie: Set GO Done bit (ADCON0)
BSF ADCON0, 2; Polling pre GO Done bit byť vymazaný (s narušili povolené);
WAIT4 BTFSC ADCON0, 2
Choď WAIT4
; Čítať hodnotu konverzieBCF STATUS, 5
MOVLW 82; POSLAŤ R
MOVWF TXREG
LOOP10 BTFSS PIR1, 4
Choď LOOP10
BSF STATUS, 5
MOVFW ADRESL
BCF STATUS, 5
MOVWF TXREG
LOOP11 BTFSS PIR1, 4
Choď LOOP11
MOVFW ADRESH
MOVWF TXREG
LOOP12 BTFSS PIR1, 4
Choď LOOP12
;------------------------------------------------- -------; Goto slučky
;------------------------------------------------- ------------
Irs232
; Inicializova SPBRG sa zaregistrovať pre príslušné
, Prenosové rýchlosti.
Ak vysokorýchlostné prenosová rýchlosť je žiaduce,
; Nastaviť bit BRGH
BSF STATUS, 5; BANK 1
MOVLW 42
MOVWF SPBRG, prenosová rýchlosť 28,8 K
BSF TXSTA, 2; PRE VYSOKÚ rýchlosť
; Povoľte asynchronní sériový port a zúčtovanie
; Bit SYNC a nastavenie bitovej ŠPENÁT.BCF TXSTA, 4
BCF STATUS, 5; BÁNK 0
BSF RCSTA, 7; ENABLE SERIAL PORT; Povoliť prenos nastavením bitu TXEN,
, Ktorá bude tiež nastaviť bit TXIF.BSF STATUS, 5
BSF TXSTA, 5návrat;------------------------------------------------- -----------END