xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 0.32M
    文件類型: .rar
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2021-02-23
  • 標(biāo)簽: c??通信??

資源簡(jiǎn)介

/*******************************************************************
                     起動(dòng)總線函數(shù)               
函數(shù)原型: void  Start_I2c();  
功能:     啟動(dòng)I2C總線,即發(fā)送I2C起始條件.  
********************************************************************/
void Start_I2c()
{
  SDA=1;   /*發(fā)送起始條件的數(shù)據(jù)信號(hào)*/
  _nop_();
  SCL=1;     
  delay_5us(); //起始條件建立時(shí)間大于4.7us
  SDA=0;   //發(fā)送起始信號(hào)
  delay_5us(); //起始條件鎖定時(shí)間大于4us
  SCL=0;   /*鉗住I2C總線,準(zhǔn)備發(fā)送或接收數(shù)據(jù) */
  delay_2us();

}

/*******************************************************************
                      結(jié)束總線函數(shù)               
函數(shù)原型: void  Stop_I2c();  
功能:     結(jié)束I2C總線,即發(fā)送I2C結(jié)束條件.  
********************************************************************/
void Stop_I2c()
{
  SDA=0;   //發(fā)送結(jié)束條件的數(shù)據(jù)信號(hào)
  delay_2us();
  SCL=1;   //發(fā)送結(jié)束條件的時(shí)鐘信號(hào)
delay_5us(); //結(jié)束條件建立時(shí)間大于4μ
  SDA=1;   /*發(fā)送I2C總線結(jié)束信號(hào)*/
delay_5us();

}

/*******************************************************************
                 字節(jié)數(shù)據(jù)發(fā)送函數(shù)               
函數(shù)原型: void  SendByte(uchar c);
功能:     將數(shù)據(jù)c發(fā)送出去,可以是地址,也可以是數(shù)據(jù),發(fā)完后等待應(yīng)答,并對(duì)
          此狀態(tài)位進(jìn)行操作.(不應(yīng)答或非應(yīng)答都使ack=0)     
       發(fā)送數(shù)據(jù)正常,ack=1; ack=0表示被控器無(wú)應(yīng)答或損壞。
********************************************************************/
void  SendByte(uchar c)
{ uchar BitCnt,count;
  for(BitCnt=0;BitCnt<8;BitCnt )  /*要傳送的數(shù)據(jù)長(zhǎng)度為8位*/
    {  
      if(c&0x80)SDA=1;   /*判斷發(fā)送位*/
        else  SDA=0;                
      delay_2us();
      SCL=1;       //置時(shí)鐘線為高,通知被控器開始接收數(shù)據(jù)位
      delay_5us(); //保證時(shí)鐘高電平周期大于4us
SCL=0;

        c=c<<1;  
    }
    _nop_();
_nop_();
    SDA=1;         /*8位發(fā)送完后釋放數(shù)據(jù)線,準(zhǔn)備接收應(yīng)答位*/   
  delay_5us(); 
    delay_5us();   //為了在示波器上更好看出應(yīng)答時(shí)鐘,多增加一個(gè)延時(shí), 間隔大一點(diǎn)
    SCL=1;
_nop_();
_nop_();
/*********************************************************************************************
由于BQ500414Q工作很忙,應(yīng)答太慢,動(dòng)態(tài)的不準(zhǔn)時(shí),所以做這個(gè)保證應(yīng)答時(shí)鐘是有效的。如果從端BQ500414Q還
沒(méi)有應(yīng)答時(shí),但此時(shí)主控MCU把SCL置高了,此時(shí)BQ500414Q會(huì)拉強(qiáng)行把SCL拉低,一直要到BQ500414Q發(fā)出的SDA
應(yīng)答是有效時(shí),BQ500414Q才會(huì)放開對(duì)SCL的拉低。這是BQ500414Q與EEPROM的I2C一個(gè)差大的差別。
*********************************************************************************************/
    for(count=0;count<100;count )  //等待從端從BUSY狀態(tài)恢復(fù)出來(lái), 放開SCL才能置高.此循環(huán)最大延時(shí)110uS.
{ if(SCL==1)
break;
_nop_();
}
    delay_2us();  //應(yīng)答高電平>=4us
delay_2us();  


    if(SDA==1)ack=0;     /*判斷是否接收到應(yīng)答信號(hào)*/
       else ack=1;      
    SCL=0;
delay_5us();       

}

/*******************************************************************
                 字節(jié)數(shù)據(jù)接收函數(shù)               
函數(shù)原型: uchar  RcvByte();
功能:    用來(lái)接收從器件傳來(lái)的數(shù)據(jù),并判斷總線錯(cuò)誤(不發(fā)應(yīng)答信號(hào)),
          發(fā)完后請(qǐng)用應(yīng)答函數(shù)應(yīng)答從機(jī)。  
********************************************************************/
uchar RcvByte()
{
  uchar retc=0,BitCnt,count; 
  SDA=1;     
delay_5us();   //由于BQ500414Q芯片工作很忙, 延時(shí)

  for(BitCnt=0;BitCnt<8;BitCnt )
    {
        SCL=0;                 
delay_5us();   /*時(shí)鐘低電平周期大于4.7μs*/
        SCL=1;                  
        _nop_();
_nop_();

/*********************************************************************************************
由于BQ***工作很忙,發(fā)出數(shù)據(jù)太慢,動(dòng)態(tài)的不準(zhǔn)時(shí),時(shí)快時(shí)慢。處理完1字節(jié)后,有時(shí)要大于50us才發(fā)下一個(gè)字節(jié).
如果從端BQ500414Q還沒(méi)有發(fā)出有效的數(shù)據(jù),但此時(shí)主控MCU把SCL置高了,此時(shí)BQ500414Q會(huì)拉強(qiáng)行把SCL拉低,
直要到BQ500414Q發(fā)出的SDA是有效時(shí),BQ500414Q才會(huì)放開對(duì)SCL的拉低。這是BQ500414Q與EEPROM的I2C一個(gè)差大的差別。
*********************************************************************************************/
for(count=0;count<100;count )  //等待從端由BUSY狀態(tài)恢復(fù)出來(lái), 放開SCL才能置高.此循環(huán)最大延時(shí)110mS.
{
if(SCL==1)
break;
_nop_();
}
delay_2us();

        retc=retc<<1;
        if(SDA==1)retc=retc | 1;  
        _nop_();
    
     }
  SCL=0;  
_nop_();
_nop_();
    return(retc);
}

/********************************************************************
                     應(yīng)答子函數(shù)
函數(shù)原型:  void Ack_I2c(bit a);
功能:      主控器進(jìn)行應(yīng)答信號(hào)(可以是應(yīng)答或非應(yīng)答信號(hào),由位參數(shù)a決定)
********************************************************************/
void Ack_I2c(bit a)
{
  if(a==0)SDA=0;       
        else SDA=1;
delay_5us();
  SCL=1;
    delay_5us();
  SCL=0;                
delay_5us();
}

   
/*******************************************************************
                 用戶接口函數(shù)                                   
*******************************************************************/

/*******************************************************************
                    向有子地址器件發(fā)送多字節(jié)數(shù)據(jù)函數(shù)               
函數(shù)原型: bit  ISendStr(uchar sla,uchar suba,ucahr *s,uchar no);  
功能:     從啟動(dòng)總線到發(fā)送地址,子地址,數(shù)據(jù),結(jié)束總線的全過(guò)程,從器件
          地址sla,子地址suba,發(fā)送內(nèi)容是s指向的內(nèi)容,發(fā)送no個(gè)字節(jié)。
          如果返回1表示操作成功,否則操作有誤。
注意:    使用前必須已結(jié)束總線。
********************************************************************/
uchar ISendStr(uchar sla,uchar suba,uchar *s,uchar no)
{   uchar i;
    if(no == 0)
      return(1);

    Start_I2c();              
    SendByte(sla);             
    if(ack==0)return(0);
    SendByte(suba);            
    if(ack==0)return(0);

    for(i=0;i<no;i )
    {   
      SendByte(*s);            
      if(ack==0)return(0);
      s ;
   } 
   Stop_I2c();                
   return(1);
}


/*******************************************************************
                    向有子地址器件讀取多字節(jié)數(shù)據(jù)函數(shù)               
函數(shù)原型: bit  RecndStr(uchar sla,uchar suba,ucahr *s,uchar no);  
功能:     從啟動(dòng)總線到發(fā)送地址,子地址,讀數(shù)據(jù),結(jié)束總線的全過(guò)程,從器件
          地址sla,子地址suba,讀出的內(nèi)容放入s指向的存儲(chǔ)區(qū),讀no個(gè)字節(jié)。
          如果返回1表示操作成功,否則操作有誤。
注意:    使用前必須已結(jié)束總線。
********************************************************************/
bit IRcvStr(uchar sla,uchar suba,uchar *s,uchar no)
{
    uchar i;

    Start_I2c();                 
    SendByte(sla);               
    if(ack==0)return(0);
    SendByte(suba);              
    if(ack==0)return(0);

    Start_I2c();  
    SendByte(sla 1);
    if(ack==0)return(0);

    for(i=0;i<no-1;i )
    {   
      *s=RcvByte();             
      Ack_I2c(0);                
      s ;
   } 
   *s=RcvByte();
   Ack_I2c(1);                   
   Stop_I2c();                    
   return(1);
}

uint8 led_state=0;
static uchar buffer_pld_monitor[32];  //PLD_MONITOR    (Read only – Command 0xD5 ),讀數(shù)據(jù)存放
static uchar buffer_tx_state[32];   //TX_STATS    (Read only – Command 0xD1)),讀數(shù)據(jù)存放

uchar COMM_GetTestvolt()
{
    uchar ret;
    ret = volt_test;
    volt_test = 0;

    return ret;
}

uchar COMM_GetTestamp()
{
    uchar ret;
    ret = amp_test;
    amp_test = 0;

    return ret;
}
uchar COMM_GetTestfod()
{
    uchar ret;
    ret = fod_test;
    fod_test = 0;

    return ret;
}
uchar COMM_GetTestpld()
{
    uchar ret;
    ret = pld_test;
    pld_test = 0;

    return ret;
}
uchar COMM_GetTestsend_power()
{
    uchar ret;
    ret = send_power_test;
    send_power_test = 0;

    return ret;
}
uchar COMM_GetTestrecv_power()
{
    uchar ret;
    ret = recv_power_test;
    recv_power_test = 0;

    return ret;
}
uchar COMM_GetTestvol_det1()
{
    uchar ret;
    ret = vol_det1_test;
    vol_det1_test = 0;

    return ret;
}
uchar COMM_GetTestvol_det2()
{
    uchar ret;
    ret = vol_det2_test;
    vol_det2_test = 0;

    return ret;
}



void ChargeCtrl_Main()
{  
led_state=buffer_tx_state[22];
switch(ch_state)
    {
    case eIDLE:
if(led_state == LED_STATE_PWR_TRANS||led_state == LED_STATE_PWR_CPLT)
{
ch_state=eSTARTED;
charge_flag=1;
}
else
{
;//do nothing
}
break;
    case eSTARTED:
charge_flag=1;
if(led_state == LED_STATE_PWR_TRANS)
{
ch_state=eCHARING;
charge_flag=2;
}
if(led_state == LED_STATE_PWR_CPLT)
{
ch_state=eFULL;
charge_flag=3;
}
if(led_state == LED_STATE_STANDBY)
{
ch_state=eREMOVE;
charge_flag=4;
}
break;
    case eCHARING:
ch_state=2;
if(led_state == LED_STATE_PWR_TRANS)
{
ch_state=eCHARING;
charge_flag=2;
}
else if(led_state == LED_STATE_PWR_CPLT)
{
ch_state=eFULL;
charge_flag=3;
}
else if((led_state == LED_STATE_STANDBY))
{
ch_state=eREMOVE;
charge_flag=4;
}

break;
    case eFULL:
ch_state=3;
if(led_state == LED_STATE_STANDBY)
{
ch_state=eREMOVE;
charge_flag=4;
}
else if(led_state == LED_STATE_PWR_TRANS)
{
ch_state=eSTARTED;
charge_flag=1;
}
                     break;
    default:
break;

    }
}

資源截圖

代碼片段和文件信息

#include?“main(st).h“
#include?“adc.h“

#define?ADC_CH_NUM???3U
#define?ADC_BUF_SIZE?8U

typedef?struct?
{
????uint8?np;???????????????/*buf?point*/
????uint8?nBufNum;??????????/*num?of?valid?data*/
????uint16?nBufArray[ADC_BUF_SIZE];
}ADC_Buf_t;


static?ADC_Buf_t?ADC_Buf[ADC_CH_NUM];

/*----------------------------
Get?ADC?result
----------------------------*/
uint16?GetADCResult(BYTE?ch)
{
????uint16?adc_result=0;
????ADC_CONTR?=?ADC_POWER?|?ADC_SPEEDHH?|?ch?|?ADC_START;
????_nop_();????????????????????????//Must?wait?before?inquiry
????_nop_();
????_nop_();
????_nop_();
????while?(!(ADC_CONTR?&?ADC_FLAG));//Wait?complete?flag
????ADC_CONTR?&=?~ADC_FLAG;?????????//Close?ADC
????adc_result?=?ADC_RES;
????adc_result?=?adc_result<<2;
????adc_result|=(ADC_LOW2&0x03);
????return?adc_result;?????????????????//Return?ADC?result
}

/*----------------------------
Software?delay?function
----------------------------*/
void?Delay(WORD?n)
{
????WORD?x;


?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件???????7278??2017-01-09?19:07??stc_I2C_pro\output\adc.lst

?????文件??????16752??2017-01-09?19:07??stc_I2C_pro\output\adc.obj

?????文件??????12111??2017-01-09?19:07??stc_I2C_pro\output\app_Communct.lst

?????文件??????24708??2017-01-09?19:07??stc_I2C_pro\output\app_Communct.obj

?????文件??????20477??2017-01-09?19:07??stc_I2C_pro\output\cmpt_uart.lst

?????文件??????39018??2017-01-09?19:07??stc_I2C_pro\output\cmpt_uart.obj

?????文件???????2046??2017-01-09?19:07??stc_I2C_pro\output\delay.lst

?????文件???????3060??2017-01-09?19:07??stc_I2C_pro\output\delay.obj

?????文件???????2670??2017-01-09?19:07??stc_I2C_pro\output\driver_wrap.lst

?????文件??????10039??2017-01-09?19:07??stc_I2C_pro\output\driver_wrap.obj

?????文件??????26150??2017-01-09?19:07??stc_I2C_pro\output\iic.lst

?????文件??????37481??2017-01-09?19:07??stc_I2C_pro\output\iic.obj

?????文件???????2829??2017-01-09?19:07??stc_I2C_pro\output\interrupt.lst

?????文件???????9916??2017-01-09?19:07??stc_I2C_pro\output\interrupt.obj

?????文件??????10874??2017-01-09?19:07??stc_I2C_pro\output\lcd1602.lst

?????文件??????24380??2017-01-09?19:07??stc_I2C_pro\output\lcd1602.obj

?????文件??????17241??2017-01-09?19:07??stc_I2C_pro\output\main(ST).lst

?????文件??????23915??2017-01-09?19:07??stc_I2C_pro\output\main(ST).obj

?????文件??????15116??2017-01-09?19:07??stc_I2C_pro\output\STARTUP.lst

?????文件???????1062??2017-01-09?19:07??stc_I2C_pro\output\STARTUP.obj

?????文件?????203339??2017-01-09?19:07??stc_I2C_pro\output\stc_pro

?????文件???????2829??2016-06-24?18:48??stc_I2C_pro\output\stc_pro.build_log.htm

?????文件??????24105??2017-01-09?19:07??stc_I2C_pro\output\stc_pro.hex

?????文件??????58014??2016-06-15?13:53??stc_I2C_pro\output\stc_pro.LIB

?????文件????????368??2017-01-09?19:07??stc_I2C_pro\output\stc_pro.lnp

?????文件?????221510??2017-01-09?19:07??stc_I2C_pro\output\stc_pro.map

?????文件????????175??2017-04-13?10:43??stc_I2C_pro\output\stc_pro.plg

?????文件?????126779??2017-01-09?19:07??stc_I2C_pro\output\stc_pro.SBR

?????文件????????304??2016-06-15?13:53??stc_I2C_pro\output\stc_pro.__b

?????文件???????5094??2017-01-09?19:07??stc_I2C_pro\output\timer.lst

............此處省略80個(gè)文件信息

評(píng)論

共有 條評(píng)論