AT89C52 Port0 got problema!

T

Tulong

Guest
Hi,

Kahit sino ay maaaring makatulong sa akin ang code sa ibaba:

Code:

# isama <reg52.h># define countNum P0xdata hindi linagdaan magpasinda isang [40 ];//' xdata'will couse ang P0 problem.Why??
Kung P1 OK!magpawalang-bisa Deley (hindi linagdaan int Dly)

(

int i, j, k;

para sa (i = 0; i <255; i )

(

para sa (j = 0; j <Dly; j )

(

para sa (k = 0; k <1; k );

)

)

)magpawalang-bisa Run (walang laman)

(

static na hindi linagdaan magpasinda count;kung (count <16)

(

countNum = count;

isang [count] = 1;

count ;

)

kung (count> 15)

(

count = 0;

)

)magpawalang-bisa pangunahing ()

(

habang (1)

(

Patakbuhin ang ();

Deley (100);

)

bumalik;

)
 
Francuska stacja telewizyjna TV5 Monde została zaatakowana 8 kwietnia przez hakerów identyfikujących się, jako Islamscy terroryści. Jest to pierwszy tak poważny, paraliżujący infrastrukturę firmy, atak na świecie.

Read more...
 
P0 ay ginagamit para sa mga panlabas na data, kapag ikaw ay idedeklara xdata aabutin P0 para sa comunication sa panlabas na data source.
Subukan idedeklara sa "code"
na hindi "xdata" ito mus gumagana ang code deklarasyon ay plase variable sa flash memory, data -> Ram, Xdata -> panlabas na memorya

pagbati

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Ngiti" border="0" />
 
Hi,

Pagkatapos na ako ay nagbago na ito saCode:

code ng hindi linagdaan magpasinda isang [40];
 
"static na hindi linagdaan magpasinda count;"

tanggalin ang static

 
@ Tulong,

ang code ay maaaring hindi gumana tulad ng P0 ay ginagamit bilang data / address bus para sa mga panlabas na ram kapag ikaw pagpapahayag ng iyong mga variable na xdata.

Subukan idedeklara iyong array bilang data o idata ...

data ng hindi linagdaan magpasinda isang [40];
idata hindi linagdaan magpasinda isang [40];

Din ng 8051 tingnan ang manual para sa mga detalye:
Port 0 ay isang 8-bit buksan patuluin bi-itinuro I / O port.Bilang isang
output port,
ang bawat isa ay maaaring pin lababo walong TTL inputs.Kapag ang 1s
sa nakasulat na mga port 0 mapakali, ang mapakali ay maaaring magamit bilang mga mataas-na-impedance
inputs.
Port 0 ay maaari ring maisaayos upang maging multiplexed mababa-order
address / bus habang accesses data sa mga panlabas na
programa at ang data memory.Sa mode na ito, P0 ay may panloob na
pull-ups.
Port 0 rin natatanggap ang code bytes habang Flash programa-ming
at outputs ang code bytes habang programa verifica-tion.
Panlabas na mga pull-ups ay kinakailangan sa panahon na programa
beripikasyon.

malugod na pagbati

 
yes ako isipin na may data ang trabaho, code ay unwritalble.Siya ninyo maaari ilan giya upang flash

 
Hi,

Salamat sa inyong tulong.

Kung sabihin na ipaalam sa aking mga array na sukat ay 250 (isang [250]), ako mangilangan sa paghahalili sa data na xdata ibang matalino aking data ay puno!Ako ay gumagamit ng AT89C52, ano ang magagawa ko?at ang I / O para sa P1, P2, P3 na ganap na ginagamit.

Salamat

 
maaari mong ilagay panlabas eeprom at isulat tha data doon, ngunit ito ay isang maliit na dahan-dahan.maaari mong gamitin ang P0 na may panlabas na pullups.kung nais mong gamitin ang P0 bilang output lamang ilagay sa beging ng mga programa ng simpleng functio:

magpawalang-bisa Port_Init (walang laman)
(
P0 = 0x00;
)

ito mus trabaho

pagbati

 
Hi,

Mayroon ka na ang ibig sabihin?

Code:

# isama <reg52.h># define countNum P0

xdata hindi linagdaan magpasinda isang [250] = (0);magpawalang-bisa Deley (hindi linagdaan int Dly)

(

int i, j, k;

para sa (i = 0; i <255; i )

(

para sa (j = 0; j <Dly; j )

(

para sa (k = 0; k <1; k );

)

)

)magpawalang-bisa Run (walang laman)

(

hindi linagdaan magpasinda count;kung (count <16)

(

countNum = count;

isang [count] = 1;

count ;

)

kung (count> 15)

(

count = 0;

)

)magpawalang-bisa Port_Init (walang laman)

(

countNum = 0x00;

)magpawalang-bisa pangunahing ()

(

Port_Init ();habang (1)

(

Patakbuhin ang ();

Deley (100);

)

bumalik;

)
 
Tulong wrote:

Hi,Salamat sa inyong tulong.Kung sabihin na ipaalam sa aking mga array na sukat ay 250 (isang [250]), ako mangilangan sa paghahalili sa data na xdata ibang matalino aking data ay puno!
Ako ay gumagamit ng AT89C52, ano ang magagawa ko?
at ang I / O para sa P1, P2, P3 na ganap na ginagamit.Salamat
 
Hi,

Ako ay subukang gamitin syrax paraan.
Talagang kung ano ang xdata sukat para sa AT89C52.

Walang pagbabago ng aking AT89C52 ito sa anumang ibang paraan upang malutas ang problemang ito?Salamat.

 
isa pang paraan ay ang paggamit ng istraktura ng variable ngunit i am newby na ito

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Ngiti" border="0" />

)) Ako lamang kung oyu ay maaaring magpahayag ng isang unio istraktura ng data

at pamahalaan ito sa pamamagitan ng mga payo na ito ay sa loob kung ano ako malaman.magtanong sa isang tao upang explane ka ng ganitong uri ng data na ako ay may isang PDF kung nais mo ako ay magpapadala sa iyo doon ay isang halimbawa ng ganitong uri ng data deklarasyon

 
Magdagdag ng mga panlabas na pullup resistors (8 x 10kΩ gagawin) - ang mga ito nang hindi mo maaring magamit ang PORT0's mapakali bilang pangkalahatang layunin ko / OS, gaya diyan ay wala na magbigay sa iyo ng isang "1" ..

Pagbati,
IanP

 
Hi,

Ya, ako na konektado pullup risistor na kung saan ay 8 x 10kOhm ngunit ang array ako idedeklara bilang 'xdata' ay gawin ang PORT0 problema (gamitin na humantong sa gayahin ang output resulta, ang 8xLED kumikislap at sa parehong oras ngunit hindi isang aktwal na resulta na gusto naming !!).

Matapos alisin ang xdata pagkatapos ng function na mabuti ngunit ang aking data ay puno na!

at ako na subukan syrax paraan magdagdag

magpawalang-bisa Port_Init (walang laman)
(
P0 = 0x00;
)

ngunit hindi pa rin gumagana!

Salamat

 
Hi

Subukan ang paglalagay ng isang [count] = 1 sa itaas countNum = count.Tulad ng code sa ibaba, at ang sumulat ng libro resulta ay:

data = 10.0 xdata = 40 code = 107, sa ilalim ng compiled demo bersyon ng Keil C 7.09

Code:

# isama <reg52.h># define countNum P0xdata hindi linagdaan magpasinda isang [40 ];//' xdata'will couse ang P0 problem.Why??
Kung P1 OK!magpawalang-bisa Deley (hindi linagdaan int Dly)

(

int i, j, k;

para sa (i = 0; i <255; i )

(

para sa (j = 0; j <Dly; j )

(

para sa (k = 0; k <1; k );

)

)

)magpawalang-bisa Run (walang laman)

(

static na hindi linagdaan magpasinda count;kung (count <16)

(

isang [count] = 1;

countNum = count;

count ;

)

kung (count> 15)

(

count = 0;

)

)magpawalang-bisa pangunahing ()

(

habang (1)

(

Patakbuhin ang ();

Deley (100);

)

bumalik;

)
 
TechToys wrote:

Ako ay gumamit ng isang demo board para makita ang mga resulta!
Ito ay tumatakbo.
Ang LEDs flash bilang isang binary counter, right?

U ay ang paggamit ng mga panlabas na RAM?
Kung hindi, kung bakit idedeklara xdata?
xdata ay gumagamit ng port 0 para sa addressing.
Kung ikaw ay hindi gumagamit ng mga panlabas na RAM, tila wired para sa isang [count] = 1 pahayag.
 
Quote:

Ako hindi gumagamit ng anumang hardware na panlabas na RAM.
Ako makatarungan magkulang sa gumamit PORT0 bilang normal ko / o.
 
ako ay ulitin ang lahat sa isang lugar

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Ngiti" border="0" />

)

1.Xdata ang deklarasyon para sa panlabas ng memory!
2.You MUST ilagay pullup risistor sa P0 na ito sapagkat ito ay hindi na panloob pullups tulad ng ibang port
3.You ay dapat na ilagay 0 sa P0 sa simula sa trabaho tulad ng output

kapag 3 mga patakaran na ito ay OK -> ang iyong mga circuit ay normal na trabaho

kung ikaw ay nagkaroon ng problema sa post na circuit at sabihin kung ano ang dapat gawin

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Ngiti" border="0" />

) At pagkatapos, kami ay gumawa ng isang programa ng magkasama

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Ngiti" border="0" />

)

Pagbati

 
Hi,

Quote:

Kung ikaw ay hindi gumagamit ng isang piraso ng silikon bilang isang panlabas na RAM, lamang gamit ang mga keyword na xdata ay walang silbi para sa mga data na imbakan.
Kung mayroon lamang 256 byte RAM, gamit xdata ay hindi maaaring gawin itong 512byte RAM, right?
 
Hi Tulong

Oo, ginamit ko ang parehong eskematiko sa pagsubok ang iyong mga programa na ito umaga.Paggamit ng 470 oum resistors para sa kasalukuyang takda, pullup Port0, at pagkatapos ay ikonekta katod ng LEDs sa P0-P3.

Paumanhin, hindi kumuha ng marami pansin sa code "Test A" dahil sa tingin ko, may isang konsepto ay hindi maliwanag.

Ang tanong ay:

Kailangan ba naming kumuha ng data ng RAM na mas malaki kaysa sa 256Mbyte sa pamamagitan ng deklarasyon ng data upang maging xdata mag-isa?

Data sheet sa 89S52 estado na may 256MB RAM on-maliit na tilad.Walang panlabas na RAM chip, gawin namin makakuha ng data ram ng higit sa na sa pamamagitan ng deklarasyon

xdata hindi linagdaan magpasinda isang [50]?

Kung maaari naming sagot na tanong na ito, kami ay malutas ang problema, ako isipin.Ang lahat ng malaman namin sa dulo.

John

 

Welcome to EDABoard.com

Sponsor

Back
Top