SM39R16A3新茂单片机头文件

[复制链接]
5204|6
手机看帖
扫描二维码
随时随地手机跟帖
FOSVOSSH|  楼主 | 2013-6-15 21:29 | 显示全部楼层 |阅读模式
//=========================================================================
// SyncMos/On-Bright MCU   FOSVOS            
// 021-58998693
//=========================================================================
/*--------------------------------------------------------------------------
Header file for SM39R16A3/OB39R16A3, SM39R08A3/OB39R08A3 microcontroller.
Modify on 2012/12/18
--------------------------------------------------------------------------*/
#ifndef                __SM39R16A3_H__
#define                __SM39R16A3_H__

/*  BYTE Registers  */
sfr        P0        = 0x80;
sfr        P1        = 0x90;
sfr        P3        = 0xB0;
sfr        PSW        = 0xD0;
sfr        ACC        = 0xE0;
sfr        B        = 0xF0;
sfr        SP        = 0x81;
sfr        DPL        = 0x82;
sfr        DPH        = 0x83;

sfr        PCON        = 0x87;        /*        SMOD,X,X,X,X,X,STOP,IDLE  */
sfr        TCON        = 0x88;
sfr        TMOD         = 0x89;
sfr        TL0        = 0x8A;
sfr        TL1        = 0x8B;
sfr        TH0        = 0x8C;
sfr        TH1        = 0x8D;
sfr CKCON        = 0x8E;
sfr        SCON        = 0x98;
sfr        SBUF        = 0x99;
sfr        IE        = 0x0A8; /*        Separate IEN0&IEN1        */
sfr        IP        = 0x0A9; /*        Separate IP0&IP1        */

/*  Dual DPTR control register */
sfr        DPL1        = 0x84;
sfr        DPH1        = 0x85;
sfr        AUX        = 0x91;        /*BRS,x,x,x,x,DPS */

/*ISP SFR */
sfr        IFCON        = 0x8F;        /*X,CDPR,X,X,X,X,X,ISPE*/
sfr        TAKEY        = 0xF7;
sfr        ISPFAH        = 0xE1;
sfr        ISPFAL        = 0xE2;
sfr        ISPFD        = 0xE3;
sfr         ISPFC        = 0xE4;

/*        Enhance UART control register        */
sfr        S0CON        = 0x98;
sfr        S0BUF        = 0x99;
sfr        S0RELL        = 0xAA;
sfr        S0RELH        = 0xBA;
sfr        SRELL        = 0xAA;
sfr        SRELH        = 0xBA;
sfr        PFCON        = 0xD9;

/*        Enhance Interrupt control register */
sfr        IEN2        = 0x9A;
sfr        IEN0        = 0xA8;
sfr        IEN1        = 0xB8;
sfr        IP0        = 0xA9;
sfr        IP1        = 0xB9;
sfr        IRCON        = 0xC0;

/*          KBI  */
sfr         KBLS        = 0x93;
sfr         KBE        = 0x94;                  
sfr         KBF        = 0x95;
sfr         KBD        = 0x96;

/*        IRCON2        */
sfr        IRCON2        = 0x97;

/*        Reset rule        */
sfr        RSTS        = 0xA1;
sfr        LVC        = 0x0E6; /*        LVI_EN,X,LVRXE,X,X,X,X,X  */
sfr        SWRES        = 0x0E7;

/*        ADC        */
sfr        ADCC1        = 0xAB;
sfr        ADCC2        = 0xAC;
sfr        ADCDH        = 0xAD;
sfr        ADCDL        = 0xAE;
sfr        ADCCS        = 0xAF;

/*        PWM        */
sfr        PWMC        = 0x0B5;
sfr        PWMD0H        = 0x0BC;
sfr        PWMD0L        = 0x0BD;
sfr        PWMD1H        = 0x0BE;
sfr        PWMD1L        = 0x0BF;
sfr        PWMD2H        = 0x0B1;
sfr        PWMD2L        = 0x0B2;
sfr        PWMD3H        = 0x0B3;
sfr        PWMD3L        = 0x0B4;
sfr        PWMMDH        = 0x0CE;
sfr        PWMMDL        = 0x0CF;

/*        WDT        */
sfr        WDTC        = 0xB6;
sfr        WDTK        = 0xB7;

/*  Timer2 Compare/Capture control register  */
sfr         CCEN        = 0x0C1;
sfr         CCEN2        = 0x0D1;
sfr         CCL1        = 0x0C2;
sfr         CCH1        = 0x0C3;
sfr         CCL2        = 0x0C4;
sfr         CCH2        = 0x0C5;
sfr         CCL3        = 0x0C6;
sfr         CCH3        = 0x0C7;
sfr        T2CON        = 0X0C8;
sfr         CCCON        = 0x0C9;
sfr         CRCL        = 0x0CA;
sfr         CRCH        = 0x0CB;
sfr        TL2        = 0x0CC;
sfr        TH2        = 0x0CD;

sfr16         CC1        = 0xC2;
sfr16         CC2        = 0xC4;
sfr16         CC3        = 0xC6;
sfr16         CRC        = 0xCA;
sfr16         T2        = 0xCC;        // TH2 | TL2

/*        GPIO mode control register */
sfr        P0M0        = 0x0D2;
sfr        P0M1        = 0x0D3;
sfr        P1M0        = 0x0D4;
sfr        P1M1        = 0x0D5;
sfr        P3M0        = 0x0DA;
sfr        P3M1        = 0x0DB;

/*        SPI        */
sfr        SPIC1        = 0x0F1;
sfr        SPIC2        = 0x0F2;
sfr        SPITXD        = 0x0F3;
sfr        SPIRXD        = 0x0F4;
sfr        SPIS        = 0x0F5;

/*        IIC        */
sfr        IICS        = 0x0F8;
sfr        IICCTL        = 0x0F9;
sfr        IICA1        = 0x0FA;
sfr        IICA2        = 0x0FB;
sfr        IICRWD        = 0x0FC;
sfr        IICEBT        = 0x0FD;

/*        Comparator        */
sfr        OpPin        = 0x0F6;
sfr        Cmp0CON        = 0x0FE;
sfr        Cmp1CON        = 0x0FF;

/*  BIT Registers  */
sbit P0_0        = 0x80;
sbit P0_1        = 0x81;
sbit P0_2        = 0x82;
sbit P0_3        = 0x83;
sbit P0_4        = 0x84;
sbit P0_5        = 0x85;
sbit P0_6        = 0x86;
sbit P0_7        = 0x87;
sbit P1_0        = 0x90;
sbit P1_1        = 0x91;
sbit P1_2        = 0x92;
sbit P1_3        = 0x93;
sbit P1_4        = 0x94;
sbit P1_5        = 0x95;
sbit P1_6        = 0x96;
sbit P1_7        = 0x97;
sbit P3_0        = 0x0B0;
sbit P3_1        = 0x0B1;

/*  PSW  */
sbit CY                = PSW^7;
sbit AC                = PSW^6;
sbit F0                = PSW^5;
sbit RS1        = PSW^4;
sbit RS0        = PSW^3;
sbit OV                = PSW^2;
sbit P                = PSW^0; //8052 only

/*  TCON  */
sbit TF1         = TCON^7;
sbit TR1         = TCON^6;
sbit TF0         = TCON^5;
sbit TR0         = TCON^4;
sbit IE1         = TCON^3;
sbit IT1         = TCON^2;
sbit IE0         = TCON^1;
sbit IT0         = TCON^0;

/*  IE  */
sbit EA                = IE^7;
sbit ET2        = IE^5;
sbit ES                = IE^4;
sbit ET1        = IE^3;
sbit EX1        = IE^2;
sbit ET0        = IE^1;
sbit EX0        = IE^0;

/*  P3  */
sbit T1                = P3^5;
sbit T0            = P3^4;
sbit INT1          = P3^3;
sbit INT0          = P3^2;
sbit TXD           = P3^1;
sbit RXD           = P3^0;

/*  S0CON  */
sbit SM0           = S0CON^7;
sbit SM1           = S0CON^6;
sbit SM2           = S0CON^5;
sbit REN           = S0CON^4;
sbit TB8           = S0CON^3;
sbit RB8           = S0CON^2;
sbit TI            = S0CON^1;
sbit RI            = S0CON^0;        

/*        IICS        */
sbit MPIF        = IICS^6;
sbit LAIF        = IICS^5;
sbit RXIF        = IICS^4;
sbit TXIF        = IICS^3;
sbit RXAK        = IICS^2;
sbit TXAK        = IICS^1;
sbit RW                = IICS^0;
sbit BB                = IICS^0;

/*        IRCON        */
sbit EXF2        = IRCON^7;
sbit TF2        = IRCON^6;
sbit IICIF        = IRCON^5;
sbit LVIIF        = IRCON^4;
sbit KBIIF        = IRCON^3;
sbit ADCIF        = IRCON^2;
sbit SPIIF        = IRCON^1;
sbit PWMIF        = IRCON^0;

/*        IEN1        */
sbit EXEN2        = IEN1^7;
sbit IEIIC        = IEN1^5;
sbit IELVI        = IEN1^4;
sbit IEKBI        = IEN1^3;
sbit IEADC        = IEN1^2;
sbit IESPI        = IEN1^1;
sbit IEPWM        = IEN1^0;

/*        Interrupt Define        */
#define        d_INT0_Vector                0        // 0003h
#define        d_T0_Vector                1        // 000Bh
#define        d_INT1_Vector                2        // 0013h
#define        d_T1_Vector                3        // 001Bh
#define        d_UART0_Vector                4        // 0023h
#define        d_T2_Vector                5        // 002Bh
#define        d_PWM_Vector                8        // 0043h
#define        d_SPI_Vector                9        // 004Bh
#define        d_ADC_Vector                10        // 0053h
#define        d_KBI_Vector                11        // 005Bh
#define        d_LVI_Vector                12        // 0063h
#define        d_IIC_Vector                13        // 006Bh
#define        d_WDT_Vector                17        // 008Bh
#define        d_Comparator_Vector        18        // 0093h

#endif

相关帖子

FOSVOSSH|  楼主 | 2013-6-16 09:57 | 显示全部楼层
#include "SM39R16A3.h"
#include "LVI_LVR.h"

#define d_LVI_EN        0x00
#define d_LVR_EN        0x01

void LVI_EN(void)
{
        LVC |= 0x80;
        IELVI = 1;
        EA = 1;
}

void LVR_Disable(void)
{  
        LVC &= 0xDF;
}

void LVI(void) interrupt d_LVI_Vector
{

}
/*
//=========================================================================
// SyncMos/On-Bright MCU               
// 上海福跃电子FOSVOS.cn
// 021-58998693
// Driver file for SM39R16A3/OB39R16A3, SM39R08A3/OB39R08A3
//=========================================================================
*/

使用特权

评论回复
FOSVOSSH|  楼主 | 2013-6-16 09:58 | 显示全部楼层
/*
//=========================================================================
// SyncMos/On-Bright MCU               
// 上海福跃电子FOSVOS.cn
// 021-58998693
// Driver file for SM39R16A3/OB39R16A3, SM39R08A3/OB39R08A3
//=========================================================================
*/
#include "SM39R16A3.h"
#include "KBI.h"

#define KBI_VECTOR 11        //KBI Interrupt Vevtor
#define d_KBLS 0x00                //KBI Low/High level detection selection (0~0x0F)
#define d_KBEX 0x03         //KBI Input Enable (0~0x0F)
#define d_KBDEN 0x01        //KBI De-bounce Function Enable
#define d_KBDS 0x00         //KBD[1:0] KBI De-bounce Time Selection (0~3)
#define d_KBIIE 0x01        //KBI Interrupt Enable bit

void KBI_initialize(void)  //Initialize KBI
{
        EA=0;                                                 //Disable All Interrupt Function
        IEKBI=(d_KBIIE);                         //Enable KBI Interrupt Function
        KBD=(d_KBDEN<<7)|(d_KBDS);        //Enable KBI De-bounce and Select De-bounce Time Function
        KBLS=(d_KBLS);                                //KBI Input High/Low Level Select
        KBE=(d_KBEX);                                //KBI Input Channel Enable
    EA=1;                                                 //Enable All Interrupt
}

void KBI_Disable(void)
{
        IEKBI=0;                                         //Disable KBI Interrupt
        KBE=0;                                                //Disable KBI Function
}

void KBI_ISR(void) interrupt KBI_VECTOR //KBI Interrupt Subroutine
{
        switch(KBF)                        //Decision Occur Channel Flag (KBF)
        {
        case 0x08:                        //KBI Channel 3 Occur Interrupt(KBF3)
                P1_3=0;
                break;
               
        case 0x04:                        //KBI Channel 2 Occur Interrupt(KBF2)
                P1_2=0;
                break;
       
        case 0x02:                        //KBI Channel 1 Occur Interrupt(KBF1)
                P1_1=0;
                break;
               
        case 0x01:                        //KBI Channel 0 Occur Interrupt(KBF0)
                P1_0=0;
                break;
        }
        KBF=0;       
        ////KBIIF=0;         //Hardware Clear KBI Flag               
}

使用特权

评论回复
FOSVOSSH|  楼主 | 2013-6-16 10:00 | 显示全部楼层
/*
//=========================================================================
// SyncMos/On-Bright MCU               
// FOSVOS.cn
// 021-58998693
// Driver file for SM39R16A3/OB39R16A3, SM39R08A3/OB39R08A3
//=========================================================================
*/
#include "SM39R16A3.h"
#include "ADC.h"

#define d_ADCnEN                 0x02
#define d_ADC_CLK_Sel        d_ADC_CLK_DIV64
unsigned int n_data;

void ADCstart(unsigned char n_ADC_CH)
{  
        ADCC2 &= 0x7F;                //ADC stop conversion
        ADCC2 = n_ADC_CH;        //Set a new channel
        ADCC2 |= 0x80;                //ADC start conversion
}

void ADCInit(unsigned char n_ADCnEN, unsigned char n_ADC_CLK)
{
        ADCC1 = n_ADCnEN;        //Set ADC channel
        ADCCS = n_ADC_CLK;        //Select ADC clock
        IEADC = 1;                        //Enable ADC interrupt.
        EA = 1;
}

unsigned int ADC_Read10()//10-bit ADC
{
        unsigned int n_ADCD10 = 0x0000;
        n_ADCD10 = (ADCDH<<2)|ADCDL;        //10-bit ADC
        return n_ADCD10;       
}
       
void ADCInterrupt(void) interrupt d_ADC_Vector        // ADC Interrupt Vector Address 0053h => interrupt 10
{
        n_data = ADC_Read10();        //Read ADC                               
}

void ADC_stop(void)
{
        ADCC2 &= 0x7F;        //ADC stop conversion
        IEADC = 0;                //Disable ADC interrupt
}

void ADC(void)
{
        if (d_ADCnEN & 0x01)
        {
                ADCstart(d_ADC_CH0_IN);
                while(!ADCIF);       
        }
        if (d_ADCnEN & 0x02)
        {                       
                ADCstart(d_ADC_CH1_IN);
                while(!ADCIF);
        }
        if (d_ADCnEN & 0x04)
        {
                ADCstart(d_ADC_CH2_IN);
                while(!ADCIF);
        }
        if (d_ADCnEN & 0x08)
        {                       
                ADCstart(d_ADC_CH3_IN);
                while(!ADCIF);
        }
        if (d_ADCnEN & 0x10)
        {               
                ADCstart(d_ADC_CH4_IN);
                while(!ADCIF);
        }
        if (d_ADCnEN & 0x20)
        {               
                ADCstart(d_ADC_CH5_IN);
                while(!ADCIF);
        }
        if (d_ADCnEN & 0x40)
        {
                ADCstart(d_ADC_CH6_IN);
                while(!ADCIF);
        }
        if (d_ADCnEN & 0x80)
        {               
                ADCstart(d_ADC_CH7_IN);
                while(!ADCIF);
        }
}

使用特权

评论回复
FOSVOSSH|  楼主 | 2013-6-16 10:01 | 显示全部楼层
/*
//=========================================================================
// SyncMos/On-Bright MCU               
// 上海福跃电子FOSVOS.cn
// 021-58998693
// Driver file for SM39R16A3/OB39R16A3, SM39R08A3/OB39R08A3
//=========================================================================
*/
#include "SM39R16A3.h"
#include "IIC.h"

//===============================
//IIC DEFINITIONs
//===============================
#define        d_DEVICE_ID                        0xA0                                // user modify

#define d_BR32                                0x00
#define d_BR64                                0x01
#define d_BR128                                0x02
#define d_BR256                                0x03
#define d_BR512                                0x04
#define d_BR1024                        0x05
#define d_BR2048                        0x06
#define d_BR4096                        0x07
#define d_IIC_BR                        d_BR512                // user modify

#define d_MASTER                        0x40
#define d_SLAVE                                0x00
#define d_MODE_SEL                        d_MASTER        // use master mode
#define d_IIC_EN                        0x80
#define        d_NACK                                1
#define        d_ACK                                0
#define        d_WRITE                                0
#define        d_READ                                1

#define d_BB_DIS                        0x00
#define d_BB_EN                                0x08
#define d_BUS_BUSY                        d_BB_EN
#define d_AR_DIS                        0x00
#define d_AR_EN                                0x10
#define d_ARBITRATION                d_AR_EN

#define        d_CMD_RW                        0x40
#define        d_CMD_Start                        0x80
#define        d_CMD_Stop                        0xC0

//===============================================================
//OWNED SUBROUTINES
//===============================================================

void IIC_interrupt(void) interrupt d_IIC_Vector
{                         
        if(TXIF)
        {       
                TXIF = 0;                                        // Clear interrupt flag
        }
        if(RXIF)
        {       
                RXIF = 0;                                        // Clear interrupt flag
        }                       
        if(MPIF)
        {
                MPIF=0;                                                // Clear interrupt flag
        }
}

void IIC_Init_master(void)
{
        IICA1         = d_DEVICE_ID;
        IICS         = 0x00;                                // Clear IIC all status
        IEN0        |= 0x80;                                 // Enable interrupt All
        IEN1        |= 0x20;                                 // Enable interrupt IIC
        IICCTL         = d_IIC_EN | d_MODE_SEL | d_ARBITRATION | d_BUS_BUSY | d_IIC_BR;       
}

void IIC_Disable(void)
{
        IICCTL         = 0x00;                                // Disable IIC all function
        IEN1        &= 0xDF;                                 // Disable interrupt IIC
        IICS         = 0x00;                                // Clear IIC all status
}

//===============================================================
//This function will send out the Start or Re-Start pulse and CONTROL byte.
//===============================================================
bit IIC_SendStart(unsigned char ControlByte)
{
        IICA1        = ControlByte;                // MAS = 0
               
        IICEBT = d_CMD_Start;                // generate a start condition
        while(IICEBT != 0x00)
        {
                ;
        }
        return RXAK;
}

//===============================================================
//This function will send out the Stop pulse
//===============================================================
void IIC_SendStop(void)
{
        IICEBT = d_CMD_Stop;                        // generate a stop condition
        while(IICEBT != 0x00)                        // waiting data recive finish
        {
                ;
        }
}
//===============================================================
//This function will wait and receive one byte, then feedback ACK or NACK.
//===============================================================
unsigned char IIC_ReceiveByte(bit ACKStatus)
{
        unsigned char        temp;
        TXAK        = ACKStatus;                        // Feedback ACK/d_NACK to slave
        IICEBT        = d_CMD_RW;                                // Ready for receive

        while(IICEBT != 0x00)                        // waiting data recive finish
        {
                ;
        }
        temp        = IICRWD;
        //Delay(100);                                        // finetune by user
        return(temp);
}

void IIC_TransmitByte(unsigned char TxData)
{
        IICRWD        = TxData;                                // load data
        IICEBT        = d_CMD_RW;                                // trans. data
        while(IICEBT != 0x00)                        // waiting data trans. finish
        {
                ;
        }
        //Delay(100);                                        // finetune by user
}

void IIC_Page_Write( char Crtl_byte, unsigned char Addr, char LEN)
{
        unsigned char counter=0;

        IIC_SendStart(Crtl_byte | d_WRITE);                                // -- Send CONTROL byte --

        if(RXAK==d_ACK)
        {
                IIC_TransmitByte( Addr );                                        // -- Send ADDRESS --
                                                  
                for (counter=0; counter<LEN; counter++)                // -- Write N bytes --
                {
                        if(RXAK==d_ACK)
                        {
                                IIC_TransmitByte(Addr + counter);        // -- Transmit one byte --
                        }
                        else
                        {
                                ;                                                                        // error process
                        }
       
                }
        }
        else
        {
                ;                                                                                        // error process
        }
        IIC_SendStop();                                        // -- Send STOP -- MStart= 0
}

void IIC_Random_Read( char Crtl_byte, unsigned char Addr, char LEN)
{
        unsigned char Temp[16];       
        unsigned char counter=0;

        IIC_SendStart(Crtl_byte | d_WRITE);                                // -- Send CONTROL byte --       
        if(RXAK==d_ACK)
        {
                IIC_TransmitByte(Addr);                                                // -- Send ADDRESS --
       
                if(RXAK==d_ACK)
                {
                        IIC_SendStart(Crtl_byte | d_READ);                // -- Send CONTROL byte --       
               
                        for(counter=0; counter<LEN; counter++)        // -- Read N byte --
                        {
                                if(RXAK==d_ACK)
                                {
                                        if(counter<(LEN-1))
                                        {
                                                Temp[counter] = IIC_ReceiveByte(d_ACK);        // Receive one byte
                                        }
                                        else
                                        {
                                                Temp[counter] = IIC_ReceiveByte(d_NACK);// Receive last byte
                                        }
                                }
                                else
                                {
                                        ;                                                                // error process
                                }
                        }
                }
                else
                {
                        ;                                                                                // error process
                }
        }
        else
        {
                ;                                                                                        // error process
        }
        IIC_SendStop();                                                                        // -- Send STOP -- MStart= 0
}

void Check_Arbitration(void)                // multi-master use
{
        // arbitration lost, set by H/W
        // clear by S/W
        while(LAIF)
        {
                LAIF = 0;
        }
}

void Check_Busy(void)                                // multi-master use
{
        // Bus busy, BB set by H/W
        // Bus ready, BB clear by H/W or S/W
        while(BB)
        {
                ;
        }
}

使用特权

评论回复
FOSVOSSH|  楼主 | 2013-6-16 10:01 | 显示全部楼层
/*
//=========================================================================
// SyncMos/On-Bright MCU               
// 上海福跃电子FOSVOS.cn
// 021-58998693
// Driver file for SM39R16A3/OB39R16A3, SM39R08A3/OB39R08A3
//=========================================================================
*/
#include "SM39R16A3.h"
#include "IIC.h"

//=====================================================================
#define        d_IIC_Adress_1                0xA0                        // user modify
#define        d_IIC_Adress_2                0x60                        // user modify

#define        d_ACK                                0
#define        d_NACK                                1
#define        d_Write                                0
#define        d_Read                                1
#define        d_null                                0
#define        d_CMD_RW                        0x40
#define d_SAVE_ADDR                        10
#define d_SAVE_DATA                        20
//=====================================================================
bit RXfinish=0;
unsigned char n_RW                        = d_null;
unsigned char n_Addr                = d_null;
unsigned char n_Next_Step        = d_null;
unsigned char n_DAT[16];

//=====================================================================

void IIC_interrupt() interrupt d_IIC_Vector
{
        if(RXIF)
        {
                if ((IICA1 & 0x01) | (IICA2 & 0x01))        //match
                {
                        n_Next_Step        =        d_SAVE_ADDR;
                        n_RW = RW;
                        if (n_RW == d_Write)
                                IICEBT = d_CMD_RW;                        // IIC bus ready
                }       
                else if (n_Next_Step == d_SAVE_ADDR)
                {
                        n_Addr = IICRWD;
                        n_Next_Step        =        d_SAVE_DATA;
                        IICEBT        = d_CMD_RW;                        // IIC bus ready
                }
                else if (n_Next_Step == d_SAVE_DATA)
                {
                        n_DAT[n_Addr++] = IICRWD;
                        n_Next_Step        =        d_SAVE_DATA;
                        IICEBT        = d_CMD_RW;                        // IIC bus ready
                }
                RXIF = 0;
        }
       
        if (TXIF)
        {
                //TXIF = 0;                                        // Clear interrupt flag
        }
}

void IIC_init_slave()
{
        IFCON        |= 0x80;                                // MCU 1T       
        IICS        = 0x00;                                        // init IICS
        IRCON        = 0x00;                                        // init IRCON
        IICEBT        = d_CMD_RW;                                // IIC bus ready
        IICA1        = d_IIC_Adress_1;                // Control Byte 1
        IICA2        = d_IIC_Adress_2;                // Control Byte 2
        IEN1         |= 0x20;                                 // Enable interrupt IIC
        IEN0        |= 0x80;                                 // Enable interrupt All
        IICCTL         = 0x80;                                // Enable IIC module, slave mode, use IICA1
}

void TXIIC(char dd)
{
        IICRWD = dd;
        IICEBT        = d_CMD_RW;                                // IIC bus ready
        while(IICEBT != 0x00)
        {
                ;
        }
        TXIF=0;
}

使用特权

评论回复
ysh5888| | 2017-7-12 19:11 | 显示全部楼层
你是代理新茂的吗、

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

46

帖子

0

粉丝