8051 (C51) -> AVR

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
PC-maniak
Příspěvky: 952
Registrován: 11 čer 2006, 00:00
Bydliště: Plzen-Jih

8051 (C51) -> AVR

#1 Příspěvek od PC-maniak »

Zdravim prepisuji tu jedno demo(LCD driver demo) z 8051 pro Atmelaka

upozornuji ze pro 8051 sem nikdy nic nepsal tak to je dost mozna banalita :lol:

EDIT: pridavam jeste priklad volani write_com / write_data

write_com( 0x36); // Scan Direction Setting
write_data( 0xc0); //COM:C160--C1 SEG: SEG384-SEG1

nejak nechapu pouziti unsigned char :

unsigned char idata i;

a pak :
void write_com(unsigned char idata cmd)
{
unsigned char idata i;

Atmel studio samozrejme rve ze mu chybi ;

prikladam i kus kodu ktereho se to tyka :

Kód: Vybrat vše

#pragma disable
void write_data(unsigned char dat)
{
   unsigned char idata i;
   RS=1;
   SCK=0;
   CS1=0;
   for(i=0;i<8;i++)
   {
      SCK=0;
      _NOP();      //_nop_();
      _NOP();      //_nop_();
      SDA=dat&0x80;
      dat=dat<<1;
      _NOP();      //_nop_();
      _NOP();      //_nop_();
      SCK=1;
      _NOP();      //_nop_();
      _NOP();      //_nop_();
   }
   CS1=1;
   return;
}

#pragma disable
void write_com(unsigned char idata cmd)
{
   unsigned char idata i;
   RS=0;
   SCK=0;
   CS1=0;
   for(i=0;i<8;i++)
   {
      SCK=0;
      _NOP();      //_nop_();
      _NOP();      //_nop_();
      SDA=cmd&0x80;
      cmd=cmd<<1;
      _NOP();      //_nop_();
      _NOP();      //_nop_();
      SCK=1;
      _NOP();      //_nop_();
      _NOP();      //_nop_();
   }
   CS1=1;
   return;
}
Tomáš
Uživatelský avatar
Zaky
Příspěvky: 7050
Registrován: 30 říj 2010, 00:00
Bydliště: Praha

#2 Příspěvek od Zaky »

Tím idata akorát říkáš kompilátoru, že má použít pro tuto proměnnou adresní prostor procesoru 8051 idata. 8051 má pomálu RAM a tvůrce programu nechtěl, aby proměnná ležela v oblasti přímo adresovatelných 128 bitů RAM. Takže to idata můžeš s klidem vypustit.
Uživatelský avatar
PC-maniak
Příspěvky: 952
Registrován: 11 čer 2006, 00:00
Bydliště: Plzen-Jih

#3 Příspěvek od PC-maniak »

aaa diky :lol: ja prave 8051 vubec neznam uz se to kompilne jak ma ted mit jeste ten hw a vyzkouset to na zivo :lol:
Tomáš
Uživatelský avatar
PC-maniak
Příspěvky: 952
Registrován: 11 čer 2006, 00:00
Bydliště: Plzen-Jih

#4 Příspěvek od PC-maniak »

Tak nevim puvodni zdrojak pouziva Bit-Bang SPI(sw spi) to sem nechal .. ale dle simulace v proteusu a osciloskopu v nem .. se na vystupu SDA(atmega2560 PC3) nic neukaze .. CS1 , RS,RES,SCK vsechno neco dela ale SDA nic..

hm vecer zas zkusim na realnym hw s realnym osciloskopem(lcd zatim nemam) zda to jen proteus nedomrsi

puvodni zdrojak pro 8051 :

Kód: Vybrat vše

http://www.buydisplay.com/download/democode/ERC240160-1_4SPI_DemoCode.txt
Tomáš
Uživatelský avatar
PC-maniak
Příspěvky: 952
Registrován: 11 čer 2006, 00:00
Bydliště: Plzen-Jih

#5 Příspěvek od PC-maniak »

tak uz to prdi data :lol: no realny vysledek se uvidi az bude lcd :D

diky vsem co mi pomohli !=)

a hlavne mtajovskemu diky kteremu sem se zameril na:

"SDA=dat&0x80;"

a diky webu prepsal na :

// AVR Bit-Bang
if (dat & 0x80)
{
SDA = 1;
}
else
{
SDA = 0;
}
//---

pouzivam sbit.h(neni soucasti atmel studia je nutne si ji pridat) ulehci to praci s pinama a myslim ze i zprehledni kod

definice pinu je pak nasledujci :
#define CS1 SBIT( PINC, 0 )
je to dost podobne sbit.h v C51
Tomáš
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“