
4. Using the I/O Address Map
32
CNT16-8(FIT)GY,
CNT16-8L(FIT)GY
/* ----- Read Data ----------------------------------------------------------
*/
void
ReadData( unsigned char ch, unsigned short *data, unsigned char *sts )
{
outp( ADR+0x10, 0x10 );
/* data latch */
outp( ADR+0x11, 0xff );
outp( ADR+0x10, ch );
/* read data */
CountData.Byte[ch].lower = inp( ADR+0x11 ); /* lower */
CountData.Byte[ch].upper = inp( ADR+0x11 ); /* upper */
*data
=
CountData.Whole[ch].count;
outp( ADR+0x10, 0x12 );
/* status*/
*sts = (unsigned char)inp(ADR+0x11);
}
/* ------ main ------------------------------------------------------------- */
void main(
void
)
{
unsigned char ch, sts;
unsigned short data;
ch = 0;
/* channel 0 */
CountData.Whole[ch].count
=
0x0000;
/* count data */
Initialize( ch );
outp( ADR+0x10, 0x14 );
/* count start */
outp( ADR+0x11, (0x01 << ch));
while( !kbhit() ) {
ReadData( ch, &data, &sts );
printf("%01dch %08d Status %02x \n", ch, data, sts );/* display */
}
outp( ADR+0x10, 0x14 );
/* count stop */
outp( ADR+0x11, 0x00 );
}
/* -------------------------------------------------------- End of file --- */