Kel C51 + simulace SPi u AT89C51ED2 ?

Pavel Novotny novotny.pp@atlas.cz
Úterý Únor 14 11:12:40 CET 2006


Podivejte se jak se vam prelozi prikaz SPDAT= data_example;  
Pokud to  bude 
MOV  SPDAT(0xC5),data_example(0x0A)

je program v OK a chyba je v simulatoru, moc si to  nepamatuji, ale mam
dojem, ze v okne SPI polozka Data SPDAT: je nulova a po zapisu do tohoto
registru se mi také nemenila.





Hraju si s simulatorem v C51 v 7.5 respektive 8.01 a zkousel jsme simulovat
SPPI interface u AT89C51ED2, predpokladal jsem, ze na zaklade prikazu 
SPDAT=0x44;  
se provede zapis 0x44 do registu SPDAT a  data se nasledne odvysilaji na SPI
interface, jinak receno po provedeni prikazu bude mit SPDAT hodnotu 0x44 a
nasledne pujde na pinech P1.6 a P1.7 sledovat jak se data vysilaji, v
simulatoru se nestalo ani jedno, je chyba ve me v pozdni nocni hodine, kodu
nebo v simulatoru ?

Dekuji



main ()
{

SPCON |= 0x10;                /* Master mode */
SPCON |= 0x82;                /* Fclk Periph/128 */
SPCON |= 0x20;                /* P1.1 is available as standard I/O pin */
SPCON &= ~0x08;            /* CPOL=0; transmit mode example */
SPCON |= 0x04;                /* CPHA=1; transmit mode example */
IEN1 |= 0x04;                     /* enable spi interrupt */
SPCON |= 0x40;                /* run spi */
EA=1;                                  /* enable interrupts */

while(1)			   			/* endless  */
   {
   P1_1=~P1_1;                                 /* P1.1 is available as
standard I/O pin */ 
   SPDAT=0x44;                                 /* send an data */
   while(!transmit_completed);/* wait end of transmition */
   transmit_completed = 0;    /* clear software transfert flag */

   SPDAT=0x00;                /* data is send to generate SCK signal */
   while(!transmit_completed);/* wait end of transmition */
   transmit_completed = 0;    /* clear software transfert flag */
   data_save = serial_data;   /* save receive data */  
   }

}


void it_SPI(void) interrupt 9 /* interrupt address is 0x004B */
{
	switch	( SPSTA )         /* read and clear spi status register */
	{
	case 0x80:
                                         serial_data=SPDAT;              /*
read receive data */
                                          transmit_completed=1;        /*
set software flag */
 		break;
	}
}


_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list@list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list







Další informace o konferenci Hw-list