⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readmac.c

📁 Small Device C Compiler 面向Inter8051
💻 C
字号:
// readmac.c//// Uses the internal 1-wire access routines in ow.c to read the MAC address// from the 2502 on the TINI.#include <stdio.h>#include "ow.h"#include "crcutil.h"void main(void){   unsigned char serial[32];      unsigned char mac[6];   unsigned char myCRC;   unsigned char rc = 0;   unsigned char i;   printf("Probing internal one-wire bus...\n");    if (owTouchReset())   {       printf("No presence pulse.\n");	       rc = 1;   }   if (!rc && !owFirst(0, 0))   {       printf("Nothing on internal 1-wire bus.\n");       rc = 1;   }   if (!rc)   {        // Find first device of type 89 on internal 1-wire.        {       	    owSerialNum(serial, 1);       	    #ifdef NOISY       	    printf("found 1-wire device: %02x%02x%02x%02x%02x%02x%02x%02x\n",       	    	   serial[0], serial[1], serial[2], serial[3],       	    	   serial[4], serial[5], serial[6], serial[7]);	    #endif       	} while (serial[0] != 0x89 && owNext(0, 0));        owTouchReset();               if (serial[0] != 0x89)        {	    printf("No DS2502 found on internal 1-wire bus.\n");	    rc = 1;        }   }       if (!rc)   {       	printf("DS2502 located (ID %02x%02x%02x%02x%02x%02x%02x%02x).\n",       	    	   serial[0], serial[1], serial[2], serial[3],       	    	   serial[4], serial[5], serial[6], serial[7]);               /* Build command packet. */	serial[0] = 0xCC;	/* Skip ROM. */	serial[1] = 0xF0;	/* Read memory. */	serial[2] = 0x00;	/* Start address least significant byte. */	serial[3] = 0x00;	/* start address MSB. */	serial[4] = 0xFF;	/* listen slot for CRC8 of 1-3. */		owBlock(0, serial, 5);		myCRC = docrc8(0, serial[1]);	myCRC = docrc8(myCRC, serial[2]);        myCRC = docrc8(myCRC, serial[3]);	if (myCRC != serial[4])	{	    printf("read failed: bogus CRC: %x != %x\n", myCRC, serial[4]);	    rc = 1;	}    }    if (!rc)    {        for (i = 0; i < 32; i++)        {	    serial[i] = 0xFF;        }        owBlock(0, serial, 32);	 	#ifdef NOISY	printf("DS2502 memory: ");	for (i = 0; i < 32; i++)        {	    printf("%02x ", serial[i]);        }               printf("\n");	#endif	{	    unsigned char *mptr = mac;	    unsigned char *sptr = &(serial[10]);	    	    for (i = 0; i < 6; i++)	    {		*mptr++ = *sptr--;	    }	}		printf("MAC address: %02x%02x%02x%02x%02x%02x\n",	        mac[0], mac[1], mac[2],	        mac[3], mac[4], mac[5]);	owTouchReset();    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -