PIC10F200 output

M

me_guitarist

Guest
Jeg ønsker å stille GP0, GP1 & GP2 som output men nå bare GP0 & GP1 har utgang, noe galt i koden?
GP2 er ingen produksjon nå ..... kan noen hjelpe?listen p = 10f200
#
include <p10f200.inc>
errorlevel -302; ingen advarsel om register

; *** Processor Configuration *****
__CONFIG _MCLRE_ON & _WDT_OFF & _CP_OFF

;***** Veriables defination *****
UDATA
dc1 res 1
dc2 res 1
dc3 res 1

;***** Oscillator Kalibreringsstasjon Verdi *****
org 0x0000
movwf OSCCAL

;***** Main loop *****
flash1
movlw b'0001 '; konfigurere GPIO som en inngang / utgang: 1 = skriving, 0 = output
movwf GPIO; skrive til GPIO
movlw 0x00
TRIS GPIO
movlw ,20; opphold på for 0.2s
samtale delay10; forsinkelse 20 x 10ms = 200ms
clrf GPIO; slå av lyset
movlw ,80; opphold av for 0.8s
samtale delay10; forsinkelse 80 x 10ms = 800ms

flash2
movlw b'0010 '; konfigurere GPIO som en inngang / utgang: 1 = skriving, 0 = output
movwf GPIO; skrive til GPIO
movlw 0x00
TRIS GPIO
movlw ,20; opphold på for 0.2s
samtale delay10; forsinkelse 20 x 10ms = 200ms
clrf GPIO; slå av lyset
movlw ,80; opphold av for 0.8s
samtale delay10; forsinkelse 80 x 10ms = 800ms

flash3
movlw b'111111 '; konfigurere GPIO som en inngang / utgang: 1 = skriving, 0 = output
movwf GPIO; skrive til GPIO
movlw 0x00
TRIS GPIO
movlw ,20; opphold på for 0.2s
samtale delay10; forsinkelse 20 x 10ms = 200ms
clrf GPIO; slå av lyset
movlw ,80; opphold av for 0.8s
samtale delay10; forsinkelse 80 x 10ms = 800ms

av
movlw b'0 '; konfigurere GPIO som en inngang / utgang: 1 = skriving, 0 = output
movwf GPIO; skrive til GPIO
movlw 0x00
TRIS GPIO
movlw ,20; opphold på for 0.2s
samtale delay10; forsinkelse 20 x 10ms = 200ms
clrf GPIO; slå av lyset
movlw ,80; opphold av for 0.8s
samtale delay10; forsinkelse 80 x 10ms = 800ms

goto flash1

;***** Subroutine
delay10; forsinkelse W x 10ms
movwf dc3; forsinkelse = 1 W x (3 10009 3) -1 4 -> B x 10.015ms

dly2 movlw ,13; gjenta indre loop 13 ganger
movwf dc2; -> 13 x (767 3) -1 = 10009 sykluser

clrf dc1; indre loop = 256 x 3 -1 = 767 sykluser
dly1 decfsz dc1, f
goto dly1
decfsz dc2, f
goto dly1

decfsz dc3, f
goto dly2

tilbakeEND

 
Jeg tror du trenger å tømme bit-5 i OPTION registrere eller GP2 er brukt som en inngang til tidtaker.

Du angir GPI0 data retninger med TRIS instruksjon.

movlw 0x08
TRIS GPI0; GP0, GP1, GP2 som utgang.

Deretter kan du sette output pin.

bsf GPI0, 2
BCF GPI0, 2; Toggle utdataene

Selv om det
er lurt å oppdatere I / O data retninger nå og igjen, trenger du ikke å TRIS hver gang du trenger å endre utdataene staten.

 
Takk for yr svare btbass,

Jeg vil gjøre meg kjent for å tilordne porten som input eller output.

 
meste av opplæringen på nettet viser én port instruksjon.Hvordan kan jeg konfigurere to eller flere porten til utdatakoding forskjellen sekvens samtidig?

for eksempel:
GP0 kjører 0.5Hz blinkende
GP1 kjører 1HZ blinkende

osv. .....

 
Du kan sette I/O- ved å skrive til den, for eksempel

Code:movlw 0x03

movwf GPIO

samtale forsinkelse rutine

movlw 0x02

movwf GPIO

 
Takk tbass.

hva er 0x03 eller 0x02 betyr?Lagt etter 1 minutt:Jeg mener alle port arbeid samtidig.følger ikke ....Lagt til etter 7 minutter:her er mt på GP0 at blitsen på 1Hz.
Hvordan lage GP1 flash samtidig men med forskjellen sekvens?bare bo på eller noe annet ...

hovedsaklig
movlw b'1110 '
tris GPIO
movlw b'0001 '
movwf GPIO
movlw ,50
samtale delay10
clrf GPIO
movlw ,50
samtale delay10goto hovedinnhold

 
0x03 er et heksadesimalt tall, samme som b'0011 '
0x02 er et heksadesimalt tall, samme som b'0010 '

Code:hovedsaklig

movlw b'1100 '

tris GPIO; init I/O-Loopmovlw b'0011 '; Samme som movlw 0x03

movwf GPIOmovlw ,50

samtale delay10movlw b'0010 '; Samme som movlw 0x02

movwf GPIOmovlw ,50

samtale delay10movlw b'0000 '

movwf GPIOmovlw ,50

samtale delay10goto Loop
 
Takk btbass.

Jeg prøvde, men mislyktes.Gjør det innebære TMR0?

 
Eksempelet var bare for å demonstrere håndtering I / O.Kopierer og limt inn koden, jeg antar du fikk "delay10 'rutine oppe og kjører?

 
Yup.

men jeg trenger forskjellen port kjører forskjellen sekvens samtidig.Som GP0 kjører en buzzer til 1HZ.

GP1 kjører LED på 0.5Hz.Jeg
vil bruke btfss eller btfsc instruksjonen å kontrollere GP1 så hvis jeg stengt en bryter GP1 vil kjøre andre sekvens uten å avbryte GP0's sekvens.

 
hvordan du konfigurerer en port for å oppdage mer enn 1 skriving samtidig bruker btfss eller btfsc undervisningen?

btfss GPIO, GP2
dette er bare 1 inngang

kan jeg konfigurere dette?
btfss GPIO, b'1100 "for å få 2 innspill?

am bruker PIC10f200

 
Nei, du skrånende gjøre det!
Du må teste hver bit seperatlly eller du har å lese port og deretter sammenligne resultatet til en konstant.

En tid siden skrev jeg et lite program for å hjelpe til med å skrive Assembler koden her.

www.elektroda.pl/eboard/viewtopic.php?p=205856

Prøve.

 
Takk btbass.

Jeg tester hver bit
og får det jeg vil.

er jeg lære TMR0 modul.Vil legge inn noen spørsmål senere.

Ha en fin dag!

 
Hva skjer hvis vi setter CP & CPD PÅ?
kan vi fortsatt i stand til å lese
og eksportere hex?

 

Welcome to EDABoard.com

Sponsor

Back
Top