亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? i2ctestmaster.c

?? pic單片機作為I2C從機的通訊程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*----filename:CT_Test_V1.0-------*/
/*----version:V1.0---------------*/
/*----jchaodong-----------------*/
/*----2008.04.15---------------*/
//程序中接收數據時還應加上定時器判斷數據是否接收完成

#define SDA_Derection TRISA2
#define SCL_Derection TRISC2
#define SDA        RA2
#define SCL        RC2

#define Idle 0
#define buf1_len 30
#define buf2_len 15
#define buf3_len 2
#define Node_Addr 0x00

#include <htc.h>
#include <pic.h>
#include <pic16f685.h>
//---------CONFIGbits,important------------//
__CONFIG(HS&WDTEN&PWRTDIS&MCLREN&UNPROTECT);

//---------variable declare---------------//
unsigned char State=0;

unsigned char I2C_Buff[buf1_len]={0};
unsigned char Buffer2[buf2_len]={"CT_TEST_V1.0"};
unsigned char Ad_Buffer[buf3_len];
unsigned char buff[2]={0x43,0x54};
bank2 unsigned char I2C_ptr=0;
bank2 unsigned char URT_ptr=0;
bank2 unsigned int  second10ms=0;
bank2 unsigned char second=0;
bank2 unsigned char Rx_Start=0;
bank2 unsigned char Rx_Over=0;
bank2 unsigned char Ad_Over=0;
bank2 unsigned char I2c_Rd_Over=0;
bank2 unsigned char I2c_Wr_Start=0;
bank2 unsigned char I2c_Wr_Over=0;

//---------for i2c
bank2 unsigned char I2C_Ack=0;
unsigned char test_i=0;
//-------function declare---------//
void delayus(unsigned char);
void delayms(unsigned char);
//-------------------------------
void Slave_I2C_Initial(void);
void uart_initial(void);
void ad_initial(void);
void timer0_initial(void);
void timer1_initial(void);
void device_initial(void);
//-------------------------------
void interrupt isf(void);
void i2c_service(void);
void Write_I2c(unsigned char);
void uart_send_byte(unsigned char);
void uart_send_data(unsigned char *,unsigned char);
void ad_test(void);
void pulse_test(void);
//-------------------------------
void ad_deal_service(void);
void uart_deal_service(void);
void i2c_rd_deal(void);
void i2c_wr_deal(void);



//--------
void I2C_Start(void);
void I2C_Stop(void);
unsigned char I2C_CheckAcK(void);
void I2C_SendB(unsigned char);
unsigned char I2C_RceB(void);
void I2C_Ackn(unsigned char);
unsigned char Send_Nbyte(unsigned char,unsigned char*);
unsigned char Read_Nbyte(unsigned char);
//-------------------------------
void main(void)
{
    unsigned char i,jcd;
    unsigned char temp;
    device_initial();
    delayms(100);
    delayms(100);
    delayms(100);
    delayms(100);
    //uart_send_data(Buffer2,12);
    while(1)
    {
        
         I2C_Stop();
        {
        delayms(100);
        delayms(100);
        delayms(100);
        delayms(100);
        delayms(100);
        delayms(100);
        delayms(100);
        delayms(100);
        delayms(100);
        delayms(100);
        delayms(100);
        delayms(100);
        }
        URT_ptr=0;
       // I2C_Stop();
       /*
        I2C_Start();
        I2C_SendB(0x03);
        
        if(!I2C_Ack)
            RC0=0;
        else 
            RC0=1;
       
        delayus(12);
        jcd=I2C_RceB();
        I2C_Ackn(0);
        for(i=0;i<9;i++)
        {
           delayus(20);//20
           I2C_Buff[i]=I2C_RceB();
           I2C_Ackn(0);
           
        }
        delayus(20);
        I2C_Buff[9]=I2C_RceB();
        I2C_Ackn(1);
        I2C_Stop();
        uart_send_data(I2C_Buff,10);
        */
        jcd=Read_Nbyte(15);
        if(jcd)
        {    
            if((I2C_Buff[0]==0x68)&&(I2C_Buff[14]==0x16))
            {
                temp=0;
                for(i=1;i<13;i++)
                {
                    temp+=I2C_Buff[i];
                }
                if(temp==I2C_Buff[13])
                {
                    uart_send_data(I2C_Buff,15);
                }
            }
            /*
            else
            {
                 I2C_Stop();
                 jcd=Read_Nbyte(15);
                 uart_send_data(I2C_Buff,15);
            }*/
            //Send_Nbyte(15,I2C_Buff);
        }  
        else 
        {
            I2C_Stop();
        }
        NOP();
        NOP();
        NOP();
        NOP();
       // delayms(100);
        //Send_Nbyte(URT_ptr,Buffer2);
        Send_Nbyte(12,Buffer2);
        CLRWDT();
    }
}

//---------name:Slave_I2C_Initial---------//
//input: none
//output:none
//---------function :initial i2c----------//
void Slave_I2C_Initial(void)
{

    PORTB=0x00;
    PIR1=0x00;
    // for slave i2c mode,both input
	TRISB4=1;
    TRISB6=1;  
	// slave i2c mode,7 bit address// enable i2c and clock
	SSPCON=0x36;
    // set address for the device
	SSPADD=Node_Addr;
	// enable i2c and clock
//	SSPEN=1;
//	CKP=1;
	// enable interrupt
	SSPIE=1;
    
}
//---------name:interrupt isf---------//
//input: none
//output:none
//----function :interrupt service----//

void interrupt isf(void)
{
    
    CLRWDT();
    if(TMR1IE&&TMR1IF)
    {
        TMR1IF=0;
        TMR1L=0xD8;
        TMR1H=0xF1;
        second10ms++;
        if(second10ms%100==0)
        {
            //second10ms=0;
            second++;
            if(second%2==1)
            {
               //RC0=1;
            }
            else 
               RC0=0;
        }
       
      
        if(Rx_Start==1)
        {
            if(second10ms>3)
            {
                Rx_Over=1;
            }
        }
        if(I2c_Wr_Start==1)
        {
            if(second10ms>3)
            {
                I2c_Wr_Over=1;
            }
        }
    }
// I2C service
	if(SSPIE&&SSPIF)
	{
		SSPIF=0;
        //i2c_service();
	}
// uart service
    if(RCIE&&RCIF)
    {
               
        second10ms=0;
        if(Rx_Start==0)
        {
            Rx_Start=1;
            URT_ptr=0;
        }
        Buffer2[URT_ptr%buf2_len]=RCREG;
        URT_ptr++;
        if(URT_ptr>buf2_len)
        {
            URT_ptr=0;
        }
// if error occur
        if(FERR==1 || OERR==1)  
        {
            CREN=0;
            CREN=1;
        }
    }
 // A/D service  
    if(ADIE&&ADIF)
    {
        ADIF=0;
        Ad_Buffer[0]=ADRESH;
        Ad_Buffer[1]=ADRESL;
        Ad_Over=1;
    }
}

//---------name:i2c_service-----------//
//input: none
//output:none
//----function:i2c interrupt service--//
void i2c_service(void)
{
    //CLRWDT();   
	if(START==1 && RW==0 && DA==0 && BF==1)
	{
		State=1;        
	}
	if(START==1 && RW==0 && DA==1 && BF==1)
	{
		State=2;
	}
	if(START==1 && RW==1 && DA==0 && BF==0)
	{ 
		State=3;
	}
	if(START==1 && RW==1 && DA==1 && BF==0)
	{
		State=4;
	}
	if(START==1 && RW==0 && DA==1 && BF==0)
	{
		State=5;
	}
	if(SSPOV==1)
	{
		SSPOV=0;
	}
    
	switch(State)
	{
		case 1: //master write data,this byte is address
		{
			I2C_Buff[0]=SSPBUF;
            I2C_ptr=0;
			break;
		}
		case 2://master write data,this byte is data
		{
			I2C_Buff[I2C_ptr%buf1_len]=SSPBUF;
            I2C_ptr++;
			if(I2C_ptr>buf1_len)
			{
				I2C_ptr=0;
			}
            if(I2c_Wr_Start==0)
            {
                I2c_Wr_Start=1;
            }
            second10ms=0;
            break;
		}
		case 3://master read data,this byte is data
        {
            I2C_ptr=0;
            Write_I2c(I2C_Buff[I2C_ptr%buf1_len]);
            I2C_ptr++;
            break;
        }
		case 4://master read data,this byte is data
		{
			//CKP=0;
			Write_I2c(I2C_Buff[I2C_ptr]);
            I2C_ptr++;
            if(I2C_ptr>buf1_len)
            {
                I2C_ptr=0;
            }
			break;
		}
		case 5:
		{
			I2c_Rd_Over=1;
            break;
		}
		default:
        {
            NOP();//something wrong happens
            while(1);// wait for watch dog reset
        }
		
	}
    State=0;
    CLRWDT();
}
//---------name:Write_I2c---------//
//input: data want to send via I2C
//output:none
//--function :send data via i2c--//
void Write_I2c(unsigned char datain)
{
     unsigned char i=0;
     while(BF==1)
     {
         //delayus(5);
         for(i=0;i<5;i++)
         {
            NOP();
            NOP();
            NOP();
         }
         CLRWDT();
     }
repeat:
     WCOL=0;
     SSPBUF=datain;
     while(WCOL==1)
     {
         goto repeat;
     }
     CKP=1;
     return;     
}

//---------name:uart_initial---------//
//input: none
//output:none
//------function :initial uart------//
void uart_initial(void)
{

    TXSTA=0x00;
    RCSTA=0x00;
//tx,rx direction   
    TRISB5=1;
    TRISB7=1;//test
// baud rate,9600
    ABDEN=0;
    BRG16=0;
    BRGH=1;
    SPBRG=71;
// 8bit data 
    TX9=0;
    RX9=0;
// enable asy uart
    SYNC=0;
    SPEN=1;
// interrupt enable
    PIR1=0;
    TXIE=0;
    RCIE=1;  
// enable receive,don't transmit
    TXEN=0;
    CREN=1; 
    CLRWDT();
}
//------------name:uart_send----------//
//input: 1 byte want to send via uart
//output:none
//-------function :send via uart------//
void uart_send_byte(unsigned char datain)
{
  //  TXEN=1;
    TXREG=datain;
    while(TRMT!=1);
 //   TXEN=0;
}
//---------name:uart_send_data---------//
//input: data pointer want to send via uart
//output:none
//-------function :send via uart------//
void uart_send_data(unsigned char *p,unsigned char len)
{
    unsigned char i=0;
    if(len<=0)
        return;
    TXEN=1;                 //enable tx
    for(i=0;i<len;i++)
    {
        uart_send_byte(*(p+i));
        CLRWDT();
    }
    TXEN=0;                 //disable tx
    
}
//---------name:ad_initial---------//
//input: none
//output:none
//------function :initial ad-------//
void ad_initial(void)
{
// config as a/d input,6 channel
     TRISC2=1;
     ANS6=1;
// a/d clock,fosc/64
     ADCON1=0x60;
// right format,AN6,,ref:VDD,turn on a/d
     ADCON0=0x99;
     CLRWDT();

}
//---------name:ad_test---------//
//input: none
//output:none
//---function :convert via ad--//
void ad_test(void)
{
// interrupt enable
     ADIF=0;
     ADIE=1;
// sample time delay

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人网页在线观看| 日韩亚洲欧美综合| 欧美一区二区精品久久911| 国产午夜精品美女毛片视频| 一区二区三区四区在线免费观看 | 亚洲视频每日更新| 奇米精品一区二区三区在线观看 | 久久精品99国产精品| 色综合欧美在线视频区| 26uuu色噜噜精品一区| 有码一区二区三区| 成人99免费视频| 久久精子c满五个校花| 日韩不卡一二三区| 91福利精品视频| 国产精品成人免费在线| 国产99久久精品| 欧美成人乱码一区二区三区| 天堂蜜桃一区二区三区| 在线观看91视频| 一区二区三区久久久| 不卡av电影在线播放| 精品福利av导航| 久久精品国产澳门| 欧美成人精品福利| 捆绑调教一区二区三区| 欧美一区二区三区不卡| 日韩精品视频网站| 欧美日本不卡视频| 天天综合色天天综合色h| 在线观看亚洲a| 亚洲激情六月丁香| 在线观看91视频| 国产午夜精品一区二区三区四区| 激情深爱一区二区| 久久综合九色综合97婷婷| 国内精品在线播放| 久久精品视频网| 国产成人高清在线| 最新国产の精品合集bt伙计| 99re热这里只有精品免费视频| 亚洲欧洲另类国产综合| 95精品视频在线| 伊人性伊人情综合网| 欧美日韩在线一区二区| 午夜视频在线观看一区二区| 日韩一区二区中文字幕| 国内精品国产成人国产三级粉色| 久久影院电视剧免费观看| 91亚洲大成网污www| 亚洲欧美日韩久久| 欧美日韩中文一区| 热久久一区二区| 久久精品视频在线免费观看| 99久久久精品| 丝袜美腿亚洲综合| 久久精品人人做人人综合| 成人av网址在线| 亚洲国产成人va在线观看天堂 | 色综合久久综合| 日韩综合一区二区| 久久精品欧美日韩精品| 99久久er热在这里只有精品15| 亚洲一区在线看| 精品国产在天天线2019| 色综合色综合色综合色综合色综合| 一区二区三区鲁丝不卡| 欧美va亚洲va香蕉在线| 99久久亚洲一区二区三区青草| 午夜成人免费电影| 国产精品欧美综合在线| 宅男噜噜噜66一区二区66| 国产成人精品综合在线观看| 亚洲主播在线观看| 国产婷婷色一区二区三区四区| 91精彩视频在线| 国产精品99久久久久久久女警| 亚洲欧美乱综合| 久久伊人中文字幕| 欧美日韩极品在线观看一区| 福利电影一区二区| 日本中文在线一区| 亚洲人被黑人高潮完整版| 欧美xxxx老人做受| 欧美三区在线视频| av爱爱亚洲一区| 国产一区二区三区四| 午夜激情综合网| 国产精品白丝在线| 精品福利一二区| 91精品国产综合久久久久久 | 国产资源在线一区| 天天综合天天综合色| 久久99精品久久久久久| 亚洲视频资源在线| 国产精品丝袜91| 久久精品亚洲乱码伦伦中文| 欧美精品久久99久久在免费线 | 亚洲欧洲精品一区二区精品久久久| 欧美一级欧美三级在线观看| 欧美在线综合视频| 91热门视频在线观看| eeuss影院一区二区三区| 韩国女主播一区| 日韩高清不卡在线| 亚洲成人精品影院| 亚洲国产精品久久久久秋霞影院| 国产精品第四页| 国产精品美女久久久久aⅴ | 夜夜揉揉日日人人青青一国产精品| 国产视频一区二区在线观看| 精品国产乱码久久久久久1区2区| 欧美精品一二三区| 欧美日韩色一区| 精品污污网站免费看| 欧美日韩精品一区二区三区四区 | 日韩一级精品视频在线观看| 欧美日韩免费视频| 欧美日本在线播放| 欧美日韩免费一区二区三区视频| 欧美婷婷六月丁香综合色| 91精彩视频在线观看| 欧美不卡一二三| 亚洲精品在线电影| 久久麻豆一区二区| 国产精品人妖ts系列视频| 国产精品色一区二区三区| 中文字幕在线观看一区二区| 亚洲天堂成人网| 亚洲精品美腿丝袜| 日韩精品亚洲专区| 激情综合网最新| 成人深夜视频在线观看| 91网站最新地址| 欧美日韩中文国产| 久久综合九色综合97婷婷| 国产精品色在线| 亚洲午夜精品久久久久久久久| 亚洲成人精品一区| 国产精品自拍毛片| 91在线视频网址| 91精选在线观看| 337p日本欧洲亚洲大胆精品| 中文字幕二三区不卡| 亚洲一区在线观看免费观看电影高清| 天天av天天翘天天综合网| 国内精品久久久久影院色 | 国产精品一二三四五| 不卡视频在线观看| 欧美美女视频在线观看| 久久久一区二区三区捆绑**| 亚洲欧美在线视频| 美女在线观看视频一区二区| 不卡一区二区在线| 欧美一二三区在线观看| 亚洲天天做日日做天天谢日日欢| 日韩电影免费一区| www.日韩av| 欧美成人乱码一区二区三区| 亚洲精品v日韩精品| 久久机这里只有精品| 91福利国产成人精品照片| 精品国产一区a| 亚洲v日本v欧美v久久精品| 成人网页在线观看| 日韩欧美一区电影| 亚洲一区二区三区在线| 国产不卡视频一区二区三区| 欧美日韩mp4| 综合av第一页| 国产ts人妖一区二区| 日韩一区二区电影网| 亚洲一区在线视频| av色综合久久天堂av综合| 欧美大片在线观看| 亚洲va韩国va欧美va| 99在线精品一区二区三区| 欧美精品一区二区久久久| 亚洲成人免费影院| 99在线热播精品免费| 国产视频一区二区三区在线观看 | 国产成人aaa| 精品嫩草影院久久| 无码av中文一区二区三区桃花岛| 91麻豆国产在线观看| 中文字幕免费不卡在线| 国产在线视频一区二区| 91精品国产一区二区三区香蕉| 伊人一区二区三区| 日本高清不卡在线观看| 亚洲日本欧美天堂| 99久久伊人久久99| 国产精品国产三级国产专播品爱网 | 色综合久久88色综合天天6| 国产精品伦理在线| 成人精品鲁一区一区二区| 国产婷婷色一区二区三区| 国产999精品久久久久久绿帽| 久久久午夜精品| 国产成人综合网|