C8051F040的SMBus程序1

合集下载

C8051F系列单片机串口通讯程序-推荐下载

C8051F系列单片机串口通讯程序-推荐下载

C8051F系列单片机串口通讯程序采用C8051F020单片机//串口编程--接收PC发过来的字符串,回发字符串.发送期间中断控制LED灯闪烁//采用外部晶振22.1184MHz 使用定时器1,方式2产生波特率,SMOD = 0或者1 //定时器初值X=256-SYSCLK*(SMOD+1)/(BAUDRATE*384)/#include <C8051F020.h>sfr16 TMR3RL = 0x92; //定时器3重装载寄存器sfr16 TMR3 = 0x94; //定时器3计数器#define uchar unsigned char#define uint unsigned int//----------------------------------------------------------------------//参数设置区//----------------------------------------------------------------------#define BAUDRATE 4800 //波特率bps#define CLKOUT 22118400 //外部晶振,修改也要修改OSCXCN#define SMODVAL 0 //SMOD的值,修改请也修改PCONVAL#define PCONVAL 0x00 //PCON的值,=0x00时SMOD0=0; =0x80时SMOD0=1 #define TXVAL (256-CLKOUT*(SMODVAL+1)/BAUDRATE/384) //定时器初值#define MAX_LEN 10 //每次接收/发送字符串的长度//---------------------------------------------------------------------//全局变量//---------------------------------------------------------------------sbit LED = P1^6; //LED '1'亮'0'灭bit readFlag = 0; //读标志uchar readCounts = 0; //已经读取的字符个数,与MAX_LEN比较uchar idata trdata[MAX_LEN]; //要接收/发送的字符串//----------------------------------------------------------------------//子函数声明//----------------------------------------------------------------------void SYSCLK_Init(void); //系统时钟初始化void PORT_Init(void); //端口初始化void UART0_Init(void); //串口UART0初始化void Send_Char(uchar ch); //发送单个字符void Send_String(uchar * str, uint len); //发送一个字符串void UART0_ISR(); //串口中断服务程序,接收字符void Timer3_Init(uint counts); //定时器3初始化void Timer3_ISR(void); //定时器3中断服务程序//----------------------------------------------------------------------//主函数//----------------------------------------------------------------------void main(void){WDTCN = 0xde; //禁止看门狗WDTCN = 0xad;SYSCLK_Init(); //时钟初始化PORT_Init(); //端口初始化UART0_Init(); //串口初始化Timer3_Init(CLKOUT/12/10); //定时器初始化EA = 1; //开全局中断while(1){if(readFlag) //已经读取{readFlag = 0; //清零Send_String(trdata,MAX_LEN); //发送字符串}}}//----------------------------------------------------------------------//子函数具体实现//----------------------------------------------------------------------//系统时钟初始化void SYSCLK_Init(void){uint i;OSCXCN = 0x67; //采用外部晶振22.1184MHz,不分频. 选型OSCXCN=0110,0111 for(i=0;i<256;i++); //等待>1mswhile(!(OSCXCN&0x80)); //查询直到XTLVLD=1,晶振稳定OSCICN = 0x88; //切换到外部振荡器,允许时钟失效监测器. OSCICN=1000,1000 }//端口初始化void PORT_Init(void){XBR0 = 0x04; //允许UART0,RX,TX连到2个端口引脚. XBR0=0000,0100XBR1 = 0x00;XBR2 = 0x40; //交*开关使能P0MDOUT |= 0x03; //P0.0为推拉方式输出,即TX0,RX0所在的端口0000,0011P1MDOUT |=0x40; //P1.6为推拉方式输出,即LED所在的端口0100,0000}//串口初始化void UART0_Init(void){SCON0 = 0x50; //选择串口方式1,波特率可变SCON0=0101,0000TMOD = 0x20; //选择T1,方式2,自动再装入8位计数器TH1 = (int)TXVAL; //T1初值,根据波特率,时钟等计算. 0xF4, bps=4800bpsTL1 = (int)TXVAL;ES0 = 1; //UART0中断开启TR1 = 1; //启动定时器T1PCON |= PCONVAL; //PCON=0x00,SMOD = 0 ; PCON=0x80,SMOD=1 TI0 = 1; //声明TX0就绪,可以发送TR0 = 1;}//定时器初始化void Timer3_Init(uint counts){TMR3CN = 0x00; //禁止定时器T3,清TF3,采用SYSCLK/12为时基TMR3RL = -counts; //初始化重装载值TMR3 = 0xffff; //设置为立即重装载EIE2 |= 0x01; //T3中断开启TMR3CN |= 0x04; //启动T3}//发送单个字符void Send_Char(uchar ch){SBUF0 = ch; //送入缓冲区while(TI0 == 0); //等待发送完毕TI0 = 0; //软件清零}//发送字符串,调用Send_Char() len字符串长度void Send_String(uchar * str,uint len){uint k = 0;do{Send_Char(*(str + k));k++;} while(k < len);}//定时器3中断服务程序void Timer3_ISR(void) interrupt 14 using 0{TMR3CN &= ~(0x80); //清TF3LED = ~LED;}//UART0中断服务程序. 接收字符void UART0_ISR(void) interrupt 4 using 1{uchar rxch;if(RI0) //中断标志RI0=1 数据完整接收{RI0 = 0; //软件清零rxch = SBUF0; //读缓冲if(readCounts>=MAX_LEN){readCounts = 0;readFlag = 1;}trdata[readCounts] = rxch; //存入数组,供发送readCounts++;}}//-------------------------------------------------------------//程序结束。

c8051单片机smbus传输程序

c8051单片机smbus传输程序

/* SMBUS传输实验多字节传输————YZ **********************************************************************//*-----------------------------------------------------------------------------------------------*/#include <c8051f020.h>#define DS3231 0xD0;#define CA T24C256 0xA0;char SLA VE;unsigned char addr_h; rec_h;unsigned char addr_l; rec_l;char sendchar[8];char receivechar[8];int LENGTH,data_length;int length_rec;int sum;int sum_rec;int i=0;int j=0;int n;//char p=0;//发送子程序从地址+R/W位void send(char chip,unsigned int address,int data_length) //chip从地址,address数据地址,dat数据{while(BUSY==1);// SMB0CN=0x44;BUSY=1;n=2;i=0;sum=1;SLA VE=chip|0x00;addr_h=(address>>8)&0xff;addr_l=(address&0xff);LENGTH=data_length;STA=1;while(BUSY==1); //等待完成}//接收子程序void receive(char chip,char l){while(BUSY==1);// SMB0CN=0x44;BUSY=1;j=0;sum_rec=0;length_rec=l;SLA VE=chip|0x01;STA=1;while(BUSY==1); //等待完成}// SMBUS中断子程序一共28个状态,在此次试验中只用到了主发送接收的12种状态void SMBUS_ISR() interrupt 7{// SI=0;switch(SMB0STA){case 0x08:SMB0DA T=(SLA VE);STA=0;break;case 0x10:SMB0DA T=SLA VE;STA=0;break;/*******主发送器****************************/case 0x18:SMB0DA T=addr_h;sum=1;break;case 0x20:i++;if(i<10){STO=1;STA=1; }else{STO=1;BUSY=0;} //超过十次错误则释放总线break;case 0x28:switch(n){ case 2:SMB0DA T=addr_l;n=1;break;case 1:if((LENGTH-sum)>=0){sum--;SMB0DA T=sendchar[sum];sum=sum+2;}else{STO=1;BUSY=0;}break;}break;case 0x30:if((LENGTH-sum)==0){STO=1;BUSY=0;}else{ i++;if(i<10){STO=1;STA=1;}else{STO=1;BUSY=0;}}break;case 0x38:i++;if(i<10){ STO=1;STA=1; }else{STO=1;BUSY=0;}break;/********主接收器********************************/ case 0x40:if(length_rec==1)AA=0;break;case 0x48:j++;if(j<10){ STO=1;STA=1;}else{ STO=1;BUSY=0;}break;case 0x50:receivechar[sum_rec]=SMB0DA T;sum_rec++;if((length_rec-sum_rec)==1)AA=0;break;case 0x58:receivechar[sum_rec]=SMB0DA T;STO=1;BUSY=0;break;default: //其余情况恢复总线j++;if(j<10){ STO=1;STA=1;}else{STO=1;BUSY=0;}break;}SI=0;}//系统时钟设置void SYSCLK_INT(){int a;// OSCICN=0x88;OSCXCN=0x67;for(a=1;a<300;a++);while( OSCXCN&&0x80==0); OSCXCN=0x67;OSCICN=0x88;}//端口设置void PORT_INT(){XBR0=0x05;XBR1=0x14;XBR2=0x40;P0MDOUT=0x01;}//主程序void main(){ int q=0;WDTCN = 0xde;WDTCN = 0xad; //关看门狗SYSCLK_INT();PORT_INT();P0MDOUT=0x11;SMB0CN=0x44;SMB0CR=0xc4;EA=1; //开中断ES0=1; //使能UART0中断EIE1=0x02; //允许SMBUS中断EIE2=0x42; //允许ADC0中断sendchar[0]=0x00;sendchar[1]=0x02;sendchar[2]=0x03;sendchar[3]=0x04;sendchar[4]=0x05;sendchar[5]=0x06;sendchar[6]=0x07;sendchar[7]=0x00;send(0xa0,0x000,7); //测试while(BUSY==1);for(q=0;q<10000;q++);sendchar[0]=0x1c;sendchar[1]=0x00;send(0xa0,0x000e,2);while(BUSY==1);for(q=0;q<10000;q++);send(0xa0,0x0000,0);for(q=0;q<1000;q++);length_rec=8;receive(0xa0,8);while(BUSY==1);for(q=0;q<5000;q++);while(1);}。

基于C8051F的SMBus实现智能测温系统

基于C8051F的SMBus实现智能测温系统

摘要:本文介绍了基于C8051F的SMBus串行接口实现的智能测温系统,利用硬件SMBus资源和具有SMBus接口的双通道智能温度传感器MAX6654进行数据通信,并应用于智能测温系统中。

文中介绍了该系统的工作原理,并给出了软硬件的设计思想和方法。

该系统具有检测精度高且不易受环境干扰的优点。

关键词:测温系统;智能温度传感器;C8051F单片机;SMBus1 引言C8051F005是美国Cygnal公司推出的一种高性能混合信号系统级单片机,即SOC(System on chip)。

C8051F系列器件使用CYGNAL的专利:CIP-51微控制器内核。

C8051F系列单片机内部有一个全双工的UART、SPI总线以及I2C/SMBus[1]。

每种串行总线都完全用硬件实现,都能向CIP-51产生中断,因此很少需要CPU的干预。

这些串行总线不共享定时器中断或I/O端口,可以按需要使用一个或全部。

本文介绍的是基于这种具有硬件实现I2C/ SMBus的单片机和具有SMBus接口的双通道智能温度传感器MAX6654进行数据通信而构成的智能测温系统。

利用该系统可对PC机、笔记本电脑和服务器中CPU的温度进行监控等[2]。

2 C8051F005的SMBus配置和信号时序C8051F系列单片机的SMBus串行接口完全符合系统管理总线标准1.1版。

SMBus接口的工作电压可以在(3.0~5.0) V之间。

总线上不同器件的工作电压可以不同。

因为SCL串行时钟线和SDA串行数据线是双向的,因此两条线上都需要上拉电阻或类似电路将它们连到电源电压,在没有数据传输时,两条线都处于高电平。

典型的SMBus配置如图1所示。

SMBus采用多种线路条件作为器件的握手信号。

在一次数据传输过程中,SDA只能在SCL为低电平时改变。

在SCL为高电平时,SDA发生改变则代表如下的开始和停止信号:⑴开始。

该条件启动一次传输过程,当SCL为高电平时,SDA上出现一个下降沿。

C8051F040的SMBus程序2

C8051F040的SMBus程序2

unsigned char SMB_DATA_OUT;
unsigned char TARGET; bit SMB_BUSY;
bit SMB_RW;
unsigned long NUM_ERRORS; // 16-bit SFR declarations sfr16 RCAP4 = 0xCA; sfr16 TMR4 = 0xCC; sbit LED = P1^6; sbit SDA = P0^0; sbit SCL = P0^1;
#define SMB_MTARBLOST 0x38 #define SMB_MRADDACK 0x40 #define SMB_MRADDNACK 0x48 #define SMB_MRDBACK #define SMB_MRDBNACK 0x50 0x58
//----------------------------------------------------------------------------// Global VARIABLES //----------------------------------------------------------------------------unsigned char SMB_DATA_IN; // Global holder for SMBus data // All receive data is written here // Global holder for SMBus data. // All transmit data is read from here // Target SMBus slave address // Software flag to indicate when the // SMB_Read() or SMB_Write() functions // have claimed the SMBus // Software flag to indicate the // direction of the current transfer // Counter for the number of errors.

C8051f410利用SMBUS实现基于I2C器件操作实验

C8051f410利用SMBUS实现基于I2C器件操作实验

实验参 实验参考代码: 代码: #include <C8051F410.h> #define SYSCLK 24500000 #define SMB_FREQUENCY 50000 #define EEPROM_ADDR 0xA0 #define WRITE 0x00 #define READ 0x01 unsigned char bit WORD_ADDR; SMB_RW; // System clock frequency in Hz // SCL clock rate, between 10kHz and 100kHz // Device address(7 bits, lsb is a don't care). // SMBus WRITE command // SMBus READ command
// 是否伪读 // 时候重复发送 START 信号,轮询 // Timer3 reload registers // Timer3 counter registers
sbit LED = P0^5; sbit SDA = P0^2; sbit SCL = P0^3; void SMBus_Init (void) { SMB0CF = 0x5D; SMB0CF |= 0x80; }
// Used by the ISR to flag failed transfers // 收发字符个数 // Send a start
switch (SMB0CN & 0xF0) // Status vector { case 0xE0: // Master Transmitter/Receiver: START condition transmitted. SMB0DAT = EEPROM_ADDR; // Load address of the target slave SMB0DAT &= 0xFE; // Clear the LSB of the address for the R/W bit SMB0DAT |= SMB_RW; // Load R/W bit STA = 0; // Manually clear START bit i = 0; // Reset data byte counter break; case 0xC0: // Master Transmitter: Data byte (or Slave Address) transmitted if (ACK) // Slave Address or Data Byte Acknowledged? { if (SEND_START) { STA = 1; SEND_START = 0; break; } if(SMB_SENDWORDADDR) { SMB_SENDWORDADDR = 0; SMB0DAT = WORD_ADDR; if (SMB_RANDOMREAD) { SEND_START = 1; // Send a START after the next ACK cycle SMB_RW = READ;

C8051F410例程简介

C8051F410例程简介

ADC 2个IDAC 1个外部中断Interrupts 1个PCA(可编程计数器阵列)6个PortIO 1个定时器Timer 7个UART 2个Watchdog 1个Oscillators 6个Comparators 1个SMBus 6个SPI 3个ADC例1:单通道输入程序描述:ADC0对P1.1端口输入电压采样2048次,累加后,求平均;结果通过UART输出,到电脑,串口调试程序,接收,显示。

ADC例2:多通道输入程序描述:使用ADC0内部多路选择器,逐个循环采样6个输入端口电压,并输出到电脑显示。

IDAC例:程序描述:使用IDAC输出一个正弦波。

Interrupts例:程序描述:配置外部中断INT0或INT1作为中断源,按键触发中断,执行中断程序(P0.0电平改变,连接在P0.0的LED亮灭)。

PCA例1:8位输出模式PWM波程序描述:利用PCA8位输出模式,输出PWM波。

PCA例2:16位输出模式PWM波程序描述:利用PCA16位输出模式,输出PWM波。

PCA例3:捕获模式程序描述:利用PCA捕获模式,测量输入引脚事件发生时间。

PCA例4:频率输出模式程序描述:利用PCA频率输出模式,产生一个方波,输出到端口。

PCA例5:高速输出模式(?)程序描述:利用PCA高速输出模式,产生一个方波,输出到端口。

PCA例6:软件定时器模式程序描述:利用PCA软件定时器模式,产生定时的中断;中断程序中,触发LED闪耀。

PortIO例1:端口匹配程序描述:配置端口匹配事件作为中断源,程序执行;当按键时,端口匹配事件触发中断,执行中断程序(触发LED亮)。

PortIO例2:数字输入/输出程序描述:演示怎样设置数字输入/输出方式;两个按键和两个LED分别连接到端口;程序持续检测按键,如果按键按下,则点亮下相应的LED。

Timer例1: 8位重载方式程序描述:演示如何使用定时器0的8位定时计数重载方式;利用定时器0在一定频率下产生一个中断,并且,当用户的中断计数到达选择值时,LED被触发。

C8051F040开发系统板使用说明书

C8051F040开发系统板使用说明书

第一章 C8051F040开发系统板简介1.1 开发系统的组成Cygnal C8051F040单片机开发系统主要由Cygnal 片上系统单片机开发工具、C8051F040片上系统单片机和系统试验板三部分组成,应用该系统可进行片上系统单片机较典型应用的试验,请参见以下介绍。

1.2 Cygnal C8051F单片机开发工具简介开发工具概述Cygnal 的开发工具实质上就是计算机IDE 调试环境软件及计算机RS-232到C8051F单片机JTAG 口的协议转换器(EC2-N1)的组合。

Cygnal C8051F系列全部的单片机片内均设计有调试电路该调试电路通过边界扫描方式获得单片机片内信息,通过10线的JTAG接口与开发工具连接以便于进行对单片机在片编程调试。

该开发系统板中的核心部分是Cygnal C8051F040单片机。

适配器(EC2-N1)一端与计算机相连,另一端与C8051F单片机的JTAG口相连,应用Cygnal 供应的IDE调试环境就可以进行非侵入式、全速的在系统编程(ISP)和调试。

Cygnal 开发工具支持视察和修改存储器和寄存器支持断点、视察点、堆栈指示器、单步、运行和停止吩咐。

调试时不须要额外的目标RAM、程序存储器、定时器或通信通道,并且全部的模拟和数字外设都正常工作。

开发工具主要技术指标●支持的目标系统:全部C8051Fxxx 系列单片机;●系统时钟:最大可达25MHz;●通过RS232接口与PC机连接;●支持汇编语言和C51源代码级调试;●第三方工具支持Keil C。

IDE 软件运行环境要求PC机能够运行开发工具软件并能与串行适配器通信。

对PC机有如下系统要求:●Windows 95/98/Me/NT/2000/XP 操作系统;●32MB RAM;●40MB 自由硬盘空间;●空闲的COM 口。

开发工具与PC 机硬件连接硬件连接及软件安装:●将JTAG 扁平电缆与串行示配器EC2 连接●将JTAG 扁平电缆的另一端与目标系统连接●将RS232 串行电缆的一端与EC2 连接●连接RS232 串行电缆的另一端到PC●给目标系统上电●插入CD 并运行SETUP.EXE 将IDE 软件安装到您的PC 机●在PC 机的起先菜单的程序项中选择Cygnal IDE 点击Cygnal 图标运行IDE软件。

C8051F040的ADC程序

C8051F040的ADC程序

//----------------------------------------------------------------------------// main() Routine //----------------------------------------------------------------------------void main (void) { unsigned char i; long measurement; WDTCN = 0xde; WDTCN = 0xad; OSCILLATOR_Init (); PORT_Init (); UART1_Init (); TIMER2_Init (); ADC0_Init (); SFRPAGE = ADC0_PAGE; AD0EN = 1; EA = 1; while (1)
sbit LED = P1^6; sbit SW1 = P3^7;
//----------------------------------------------------------------------------// Function Prototypes //-----------------------------------------------------------------------------
//----------------------------------------------------------------------------// 16-bit SFR Definitions for 'F04x //----------------------------------------------------------------------------sfr16 sfr16 sfr16 sfr16 sfr16 sfr16 sfr16 sfr16 sfr16 sfr16 sfr16 sfr16 sfr16 DP RCAP2 RCAP3 RCAP4 TMR2 TMR3 TMR4 ADC0 ADC0GT ADC0LT DAC0 DAC1 CAN0DAT = = = = = = = = = = = = = 0x82; 0xCA; 0xCA; 0xCA; 0xCC; 0xCC; 0xCC; 0xBE; 0xC4; 0xC6; 0xD2; 0xD2; 0xD8; // // // // // // // // // // // // // data pointer Timer2 reload/capture value Timer3 reload/capture value Timer4 reload/capture value Timer2 counter/timer Timer3 counter/timer Timer4 counter/timer ADC0 data ADC0 greater than window ADC0 less than window DAC0 data DAC1 data CAN data window
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

// 16-bit SFR declarations sfr16 RCAP4 = 0xCA; sfr16 TMR4 = 0xCC;
// Timer4 reload registers // Timer4 counter registers
sbit LED = P1^6;
// LED on P1.6
sbit SDA = P0^0; sbit SCL = P0^1;
unsigned char* pSMB_DATA_IN;
// Global pointer for SMBus data // All receive data is written here
unsigneห้องสมุดไป่ตู้ char SMB_SINGLEBYTE_OUT;
// Global holder for single byte writes.
#include <C8051F040.h>
// SFR declarations
//----------------------------------------------------------------------------// Global CONSTANTS //-----------------------------------------------------------------------------
// 2) Run the code:
//
a) the test will indicate proper communication with the EEPROM by
//
turning on the LED at the end the end of the test
//
b) the test can also be verified by running to the if statements
//
in main and checking the sent and received values by adding
//
the variables to the Watch Window
//
// FID:
04X000009
// Target:
C8051F04x
// Tool chain: Keil C51 7.50 / Keil EVAL C51
//-----------------------------------------------------------------------------
// F04x_SMBus_EEPROM.c
//-----------------------------------------------------------------------------
#define SMB_MRDBNACK 0x58
// ACK transmitted // (MR) data byte rec'vd; // NACK transmitted
//----------------------------------------------------------------------------// Global VARIABLES //-----------------------------------------------------------------------------
#define SMB_MRADDNACK 0x48
#define SMB_MRDBACK 0x50
// (all modes) BUS ERROR // (MT & MR) START transmitted // (MT & MR) repeated START // (MT) Slave address + W transmitted; // ACK received // (MT) Slave address + W transmitted; // NACK received // (MT) data byte transmitted; // ACK rec'vd // (MT) data byte transmitted; // NACK rec'vd // (MT) arbitration lost // (MR) Slave address + R transmitted; // ACK received // (MR) Slave address + R transmitted; // NACK received // (MR) data byte rec'vd;
unsigned char* pSMB_DATA_OUT;
// Global pointer for SMBus data. // All transmit data is read from here
unsigned char SMB_DATA_LEN;
// Global holder for number of bytes // to send or receive in the current // SMBus transfer.
// with a 256 byte I2C Serial EEPROM (Microchip 24LC02B).
// - Interrupt-driven SMBus implementation
// - Only master states defined (no slave or arbitration)
// SMBus on P0.0 // and P0.1
// Command Line: None
//
// Release 1.0
// -Initial Revision (TP)
// -20 APR 2006
//
//----------------------------------------------------------------------------// Includes //-----------------------------------------------------------------------------
bit SMB_BUSY = 0;
// Software flag to indicate when the // EEPROM_ByteRead() or // EEPROM_ByteWrite() // functions have claimed the SMBus
bit SMB_RW;
// Software flag to indicate the // direction of the current transfer
SMB_BUS_ERROR SMB_START SMB_RP_START SMB_MTADDACK
0x00 0x08 0x10 0x18
#define SMB_MTADDNACK 0x20
#define SMB_MTDBACK 0x28
#define SMB_MTDBNACK 0x30
#define SMB_MTARBLOST 0x38 #define SMB_MRADDACK 0x40
// switchover if the <SMB_RANDOMREAD> // bit is set.
bit SMB_ACKPOLL;
// When set, this flag causes the ISR // to send a repeated START until the // slave has acknowledged its address
unsigned char WORD_ADDR;
// Global holder for the EEPROM word // address that will be accessed in // the next transfer
unsigned char TARGET;
// Target SMBus slave address
// Copyright 2006 Silicon Laboratories, Inc.
//
//
// Program Description:
//
// This example demonstrates how the C8051F04x SMBus interface can communicate
// Device address for slave target
// Note: This address is specified
// in the Microchip 24LC02B
// datasheet.
#define MY_ADDR
0x02
// Address of this SMBus device // (dummy value since this device does // not have any defined slave states)
//
// P1.6 -> LED
//
// all other port pins unused
//
// How To Test:
//
// 1) Download code to a 'F04x device that is connected to a 24LC02B serial
// EEPROM (see the EEPROM datasheet for the pinout information).
bit SMB_SENDWORDADDR;
// When set, this flag causes the ISR // to send the 8-bit <WORD_ADDR> // after sending the slave address.
相关文档
最新文档