Atmel 89

// 1h 11h 891051 .

// 12 ,

// FFh.


void signature( cptr )

BYTE *cptr;

{

BYTE tmp1, tmp2, tmp3;


reset( cptr ); //

pulse_RST( cptr, 10 ); //

set_function( READ_SIGNATURE ); //

enable_address( cptr ); // func, PROG*

delay( (BIGINT)(10 * TCVT) ); // address->data

tmp1 = get_data(); //


pulse_XTAL1( cptr, 10 ); //

delay( (BIGINT)(10 * TCVT) ); // address->data

tmp2 = get_data(); //


pulse_XTAL1( cptr, 10 ); //

delay( (BIGINT)(10 * TCVT) ); // address->data

tmp3 = get_data(); //


printf( "signature byte 1: %.2X\n", tmp1 );

printf( "signature byte 2: %.2X\n", tmp2 );

printf( "signature byte 3: %.2X\n", tmp3 );

reset( cptr ); //

}



// Lock Bits.


void lock( cptr, lbit )

BYTE *cptr;

int lbit;

{

reset( cptr ); //


switch (lbit) { //

case 1:

set_function( WRITE_LOCK_1 );

break;

case 2:

set_function( WRITE_LOCK_2 );

break;

}


enable_address( cptr ); // function, PROG*

enable_RST( cptr ); // RST=12

delay( (BIGINT)(15000 * TCVT) ); // 15 RST ->PROG*

pulse( cptr, 100 ); // 100 PROG*

delay( (BIGINT)(10 * TCVT) ); // PROG*->adr/data

reset( cptr ); //

delay( (BIGINT)(15000 * TCVT) ); // 15 RST

}


// .


void reset( cptr )

BYTE *cptr;

{

outp( pdata, 0 ); //


outp( pctrl, 0x08 ); // control latch

outp( pctrl, 0x09 ); // latch data

outp( pctrl, 0x08 );


outp( pctrl, 0x0c ); // latch

outp( pctrl, 0x0d ); // latch data

outp( pctrl, 0x0c );


outp( pctrl, 0x00 ); // latch

outp( pctrl, 0x01 ); // latch data

outp( pctrl, 0x00 );


outp( pdata, 0xff ); //


outp( pctrl, 0x04 ); // data latch

outp( pctrl, 0x05 ); // latch data


outp( pctrl, 0x04 ); //

outp( pdata, 0 ); //


*cptr = 0; // control latch

}


// .

// 3


void set_function( func )

BYTE func;



// .


void set_data( outdata )

BYTE outdata;

{

outp( pdata, outdata ); //


outp( pctrl, 0x04 ); // data latch

outp( pctrl, 0x05 ); // latch data

outp( pctrl, 0x04 );


// outp( pctrl, 0x04 ); //

outp( pdata, 0 ); //

}



// .

// latch .

//

// 5- .


BYTE get_data( void )

{

BYTE tmp;


outp( pdata, 0xff ); // LPT

outp( pctrl, 0x24 ); // LPT

outp( pctrl, 0x26 ); //


delay( (BIGINT)(10 * TCVT) ); // 10

tmp = inp( pdata ); //


outp( pctrl, 0x04 ); //

outp( pdata, 0 ); //


return( tmp );

}



// : address and function latches.

// PROG* (P3.2) .


void enable_address( cptr )

BYTE *cptr;



// : address and function latches.

// PROG* (P3.2) .


void disable_address( cptr )

BYTE *cptr;

{

outp( pdata, (*cptr &= ~0x10) ); //


outp( pctrl, 0x08 ); // control latch

outp( pctrl, 0x09 ); // latch data

outp( pctrl, 0x08 );


outp( pctrl, 0x04 ); //

outp( pdata, 0 ); //

}



// .


void enable_data( cptr )

BYTE *cptr;



// .


void disable_data( cptr )

BYTE *cptr;

{

outp( pdata, (*cptr &= ~0x20) ); // set up data


outp( pctrl, 0x08 ); // control latch

outp( pctrl, 0x09 ); // latch data

outp( pctrl, 0x08 );


outp( pctrl, 0x04 ); //

outp( pdata, 0 ); //

}



// 12 RST.

// , RST

// .


void enable_RST( cptr )

BYTE *cptr;



// RST 5 .

// , RST

// .



void disable_RST( cptr )

BYTE *cptr;

{

outp( pdata, (*cptr &= ~0x80) ); //


outp( pctrl, 0x08 ); // control latch

outp( pctrl, 0x09 ); // latch data

outp( pctrl, 0x08 );


outp( pctrl, 0x04 ); //

outp( pdata, 0 ); //

}



// RST . // .


void pulse_RST( cptr, time )

BYTE *cptr;

int time;



// XTAL1

// . .


void pulse_XTAL1( cptr, time )

BYTE *cptr;

int time;

outp( pctrl, 0x08 );


// PROG*

// . .


void pulse( cptr, time )

BYTE *cptr;

int time;



// .

// 1/1193180 (0,838)


void delay( xcount )

BIGINT xcount;

{

BIGINT count0;


// printf( " = %lu\n", xcount );


tread(); //

count0 = tcount; //

do // >=

tread(); //

while (tcount - count0 < xcount);

}


7. OrCAD


OrCAD 9.2. 815. OrCAD- , . 4.1 , OrCAD Capture.

7.1.

Place/Part. Pspice/New Simulation Profile, . , . , Stimulus Editor. DigStim, Edit Pspice Stimulus.

Stimulus Editor , 4.1


7.2. Stimulus Editor` sig

7.3. Pspice A/D

 

, Pspice/Run Pspice A/D ( 4.3)

. , Trace/Add Trace .


.

Atmel 89 LPT- . , , , Atmel 89 , .

.

.

, .

.

1.            . Atmel 89. , 2003, 9, . 24 25.

2.            . 89. , 2004, 2, . 28 31.

3.            . . P-CAD - .: -, 2003.-224.:.

4.            AT89 Series Programmer Interface <http://www.atmel.com/dyn/resources/ prod_documents/APCPGM.EXE >.

5.            .-., . : . ./ . . . . .: . 1980. 464 ., .

6.            . ., . ., . . . . .: , 2003. 160 .

7.            . . : . .: , .: -, 1998. 720.: .


23751-86. . .




: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10