PIC 16F877 kod montaže

P

prohladan

Guest
Ja sam raditi sa PIC 16F877
Moj PIC program za čitanje podataka sa porta onda pokazati izlaz u portB
Moj problem je kada se porta 10001 onda će RB0 = 1, kada je 10.011 porta to će učiniti RB1 = 1
ali kad je porta 10011, učinit će se obje RB0, RB1 = 1
Kako mogu riješiti ovaj problem?Želim se kad porta 10011 je napraviti RB1 = 1 samo
Hvala za bilo koji sugestija.

 
Ne mogu uhvatiti problem, ako kopirate PORTA na PORTB to će biti jednaki za definiciju, ti napisati da u svom programu PORTB jednaka PORTA onda gdje je problem?Ako imate 10011 na PORTA (RA0 = RA1 = 1) onda trebate imati RB0 = RB1 = 1.

Probajte ovaj kod (koji nisu testirani, ali treba raditi

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />

).

Šifra:# Include p16F877.inc

__config _HS_OSC _WDT_OFF & & & _LVP_OFF _PWRTE_ONORG 0RESET

nop

goto STARTORG 4START

BSF STATUS, RP0

movlw b'11111111 '; Postavite PORTA smjera svih ulaznih

movwf TRISA

movlw b'00000000 '; Postavite PORTB smjeru svi izlazni

movwf TRISB

BCF STATUS, RP0GLAVNI

movf PORTA, W; Kopiraj PORTA na W

movwf PORTB; Kopiraj W do PORTB

goto GLAVNI

kraj

 
moj problem je u tome: kad sam napisao u 10001 porta RB0 = 1, kad sam napisao na 10011 porta ne želim RB0 = 1, Ja samo želim RB1 = 1
Hvala za odgovor

 
Postoji više znati, što bi trebalo biti stanje druge igle, nepromijenjeno u odnosu na prijašnje stanje, prisiljeni na 0, prisiljen 1?

Ako ne briga za druge igle Vi svibanj pokušati iskoristiti kaskadni spoj btfss, btfsc upute za postavljanje ili jasan izlazni pin accordling tvoj potreba.

Bye
Pow

 
hladno napisao / la:

Ja sam raditi sa PIC 16F877

Moj PIC program za čitanje podataka sa porta onda pokazati izlaz u portB

Moj problem je kada se porta 10001 onda će RB0 = 1, kada je 10.011 porta to će učiniti RB1 = 1

ali kad je porta 10011, učinit će se obje RB0, RB1 = 1

Kako mogu riješiti ovaj problem?
Želim se kad porta 10011 je napraviti RB1 = 1 samo

Hvala za bilo koji sugestija.
 
Hvala za sve podržava.Dobio sam rješenje već.Ovdje je moj izvorni kod

Quote:

POPIS P = 16F877, W =- 302

__CONFIG 0x3D32; MODE HS, WDT OFFStatus EQU H'0003 '

z EQU H'0002 '

PORTA EQU 0x05; Bank0

PORTB EQU 0x06TRISA EQU 0x85; Bank1

TRISB EQU 0x86

ADCON1 EQU 0x9FX EQU 0x70; RAM

Y 0x71 EQU

Z EQU 0x72

OKRUGLI EQU 0x73

;************************************************* ***********

ORG 0x0000BANKSEL ADCON1; Odaberite ADCON1 <bank1>

MOVLW B'00000111 '; PORTA, PORTE = digitalni port

; MOVLW B'00000000 '; PORTA, PORTE = analogni port

MOVWF ADCON1

MOVLW B'11111111 '; RA3: RA0

MOVWF TRISA

MOVLW B'00000000 '; PORTB = izlaz

MOVWF TRISBBANKSEL PORTA; Odaberite PORTA <bank0>Petlja

movlw 0x01; w = 10001

xorwf PORTA, w

btfsc status, z, Z-flag, ako nije postavljen, preskočite natrag

BSF PORTB, 0; vratiti ako RA0 zalazak

movlw 0x02

xorwf PORTA, w

btfsc status, z

BSF PORTB, 1

movlw 0x03

xorwf PORTA, w

btfsc status, z

BSF PORTB, 2

goto Loop
DELAY CLRF X; Odgođeno ~ 500 ms

CLRF Y

MOVLW ,13

MOVWF Z

DECFSZ X, 1

GOTO -1 $

DECFSZ Y, 1

GOTO $ -3

DECFSZ Z, 1

GOTO -5 $

POVRATAKEND

 

Welcome to EDABoard.com

Sponsor

Back
Top