📄 iic.bak
字号:
#pragma sfr
//Format of IIC Control Register 0 (IICC0)
//
#define IIC_Operation_Enable() IICE0 = 1 // bit 7
#define IIC_Operation_Disable() IICE0 = 0
#define IIC_StopCondition_Interrupt_Enable 0x10 // SPIE0
#define IIC_StopCondition_Interrupt_Disable 0x00
#define IIC_Interrupt_8clock_FallingEdge 0x00 // WTIM0
#define IIC_Interrupt_9clock_FallingEdge 0x08
#define IIC_Generate_Start_Condition() STT0 = 1 // bit 1
#define IIC_NotGenerate_Start_Condition() STT0 = 0
#define IIC_Wait_Cancel 0x20 // WREL0
#define IIC_Wait_NotCancel 0x00
#define IIC_ACK_Enable 0x04 // ACKE0
#define IIC_ACK_Disable 0x00
#define IIC_Generate_Stop_Condition 0x01 // SPT0
#define IIC_NotGenerate_Stop_Condition 0x00
#define IIC_Normal_Operation 0x00 // LREL0
#define IIC_Exit_Communication 0x40
//
//Format of IIC Flag Register 0 (IICF0)
//
#define IIC_Start_Condition_WithStopDetect 0x02 // STCEN
#define IIC_Start_Condition_WithoutStopDetect 0x00
#define IIC_Communication_Reservation_Enable 0x00 // IICRSV
#define IIC_Communication_Reservation_Disable 0x01
#define IIC_StartCondition_Generate_Flag 0x00 // STCF, read-only
#define IIC_StartCondition_Unsuccessful_Flag 0x80
#define IIC_Bus_Release_Status 0x00 // IICBSY, read-only
#define IIC_Bus_Communication_Status 0x40
//
//Format of IIC Status Register 0 (IICS0), read-only
//
#define IIC_Master_Communication_Status 0x80 // MSTS0
#define IIC_Slave_Or_CommunicateStandby_Status 0x00
#define IIC_ArbitrationResult_Win_Or_No 0x00 // ALD0
#define IIC_ArbitrationResult_Loss 0x40
#define IIC_Extension_Code_Received 0x20 // EXC0
#define IIC_Extension_Code_NotReceived 0x00
#define IIC_Address_Match 0x10 // COI0
#define IIC_Address_Not_Match 0x00
#define IIC_Receive_Status 0x00 // TRC0
#define IIC_Transmit_Status 0x08
#define IIC_ACK_Detected 0x04 // ACKD0
#define IIC_ACK_Not_Detected 0x00
#define IIC_Start_Condition_Detected 0x02 // STD0
#define IIC_Start_Condition_Not_Detected 0x00
#define IIC_Stop_Condition_Detected 0x01 // SPD0
#define IIC_Stop_Condition_Not_Detected 0x00
//
//Format of IIC Clock Selection Register 0 (IICCL0)
//
#define IIC_SCL0_Pin_LowLevel 0x00 // read-only
#define IIC_SCL0_Pin_HighLevel 0x20
#define IIC_SDA0_Pin_LowLevel 0x00 // read-only
#define IIC_SDA0_Pin_HighLevel 0x10
#define IIC_Operation_HighSpeed_Mode 0x08 // SMC0
#define IIC_Operation_Standard_Mode 0x00
#define IIC_Digital_Filter_Off 0x00 // DFC0
#define IIC_Digital_Filter_On 0x04 // digital filter can be used only in high-speed mode
//
//Format of IIC Function Expansion Register 0 (IICX0)
//
#define IIC_Expansion_Enable() IICX0 = 0x01
#define IIC_Expansion_Disable() IICX0 = 0x00
//
// IIC Clock Selection, pls refer to page423 in manual
//
#define IIC_Clk_Select_Standard_1() IICX0=0x00;SMC0=0;CL01=0;CL00=0;
#define IIC_Clk_Select_Standard_2() IICX0=0x00;SMC0=0;CL01=0;CL00=1;
#define IIC_Clk_Select_Standard_3() IICX0=0x00;SMC0=0;CL01=1;CL00=0;
#define IIC_Clk_Select_Standard_4() IICX0=0x00;SMC0=0;CL01=1;CL00=1;
#define IIC_Clk_Select_HighSpeed_1() IICX0=0x00;SMC0=1;CL01=0;
#define IIC_Clk_Select_HighSpeed_2() IICX0=0x00;SMC0=1;CL01=1;CL00=0;
#define IIC_Clk_Select_HighSpeed_3() IICX0=0x00;SMC0=1;CL01=1;CL00=1;
#define IIC_Clk_Select_HighSpeed_Extension_1() IICX0=0x01;SMC0=1;CL01=0;
#define IIC_Clk_Select_HighSpeed_Extension_2() IICX0=0x01;SMC0=1;CL01=1;CL00=0;
//
//Format of Port Mode Register 6 (PM6)
//
#define IIC_SCL0_Port_Mode PM6.0
#define IIC_SDA0_Port_Mode PM6.1
#define IIC_SCL0_Port_Level P6.0
#define IIC_SDA0_Port_Level P6.1
//
// INTIIC0 mask setting
//
#define IIC_Interrupt_Enable() IICMK0 = 0
#define IIC_Interrupt_Disable() IICMK0 = 1
//
// flag define
//
sreg unsigned char IIC_Flag=0;
#define IIC_Master_Start_Flag IIC_Flag.0
#define IIC_Slave_Start_Flag IIC_Flag.1
#define output 0
#define low 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -