AT89S8252 Port "stikker"

G

GrandAlf

Guest
Jeg har et program opprinnelig skrevet med Bascom for 89S8252. For å gjøre det gå litt fortere Jeg har besluttet å skrive i "C" (K * E * i * l). Jeg har et problem med Port 1 er dette delt mellom input og output på ulike pinner. Inngangen side er aktiv Low via opto, med 4k7 pullups direkte til pins. Problemet er når en inngang pin går lavt, det vanligvis forblir lav, selv når souce tilbake til høy. Nullstille cpu klarner det til høy igjen. Det fungerer alt fint med Bascom prog, så maskinvaren er OK. 8052 serien ser ikke ut til å ha retning kontroll, så dette kan ikke være årsaken. Snarere forvirret av dette. Jeg bruker AT898252.h, og bruke "if (P1_7 == 0) {etc}" for lesing. Noen hjelp verdsatt.
 
Du bør være svært forsiktig når du bruker en port av et 8051 "splited" (noen få innganger, noen utganger) fordi når du endrer port som dette: port | = 0x1C; Hvis en av inngangene var lav, mens du gjorde dette du overskrive inngang og det blir en effekt som er lavt og forblir lav :-( For å overvinne denne skrive innganger med en "1" som betyr i eksempelet ovenfor forutsatt at Bit7 og 6 port dine brukes som innganger: port | = 0xDC;. Begge inngangene er skrevet med en "1", men som 8051 bare kan trekke pinner lav den ikke "låse" input om det var lavt under skrive drift håper dette hjelper
 
C-Man, dette hjelper, vil jeg sjekke min timing. Takk for innspill din.
 

Welcome to EDABoard.com

Sponsor

Back
Top