欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單總線通訊接口的單片機源碼
[打印本頁]
作者:
tendy
時間:
2018-3-30 12:05
標題:
單總線通訊接口的單片機源碼
/*********單總線通信脈沖時間定義**********/
#define H_LVL 5
#define L_LVL_0 5
#define L_LVL_1 10
#define S_H 10 //起始位高電平,起始位用于將期間從休眠中喚醒并做好接收數據的準備,暫沒使用
#define S_L 5 //起始位低電平
#define START_T0() {TMR0=158;T0IF=0;T0IE=1;}
#define STOP_T0() {T0IE=0;}
/*
函數功能:數據位發送,數據位0或1都包括固定寬度的高電平脈沖和不同寬度的低電平
說明:
*/
void SendBit(uchar databit)
{
timeout=H_LVL;
START_T0();
ORDER=1; //信號線高電平
while(timeout);
STOP_T0(); //禁止T0中斷
if(databit)
timeout=L_LVL_1; //數據位1
else
timeout=L_LVL_0; //數據位0
START_T0();
ORDER=0; //信號線低電平
while(timeout);
STOP_T0();
}
/*發送結束脈沖,用于標記最后一個數據位的脈沖寬度,*/
void SendEnd()
{
timeout=5;
START_T0();
ORDER=1; //信號線高電平
while(timeout);
STOP_T0(); //禁止T0中斷
timeout=20;
START_T0();
ORDER=0;
while(timeout);
STOP_T0();
}
void SendStart()
{
timeout=S_H;
START_T0();
ORDER=1; //信號線高電平
while(timeout);
STOP_T0(); //禁止T0中斷
timeout=S_L;
START_T0();
ORDER=0;
while(timeout);
STOP_T0();
}
/*
函數功能:數據字節發送,低位在前
參數說明:dat 要發送的數據字節
*/
void SendData(uchar dat)
{
uchar i,j;
CCP1IE=0; //關閉捕捉中斷
se_ccp1_int++;
TMR2IE=0;
// SendStart(); //起始位高電平,起始位用于將期間從休眠中喚醒并做好接收數據的準備
for(i=0;i<8;i++)
{
j=(dat>>i)&0x01;
SendBit(j);
}
SendEnd();
CTR_LED=1;
delay(200);
CTR_LED=0;
se_ccp1_int--;
if(se_ccp1_int==0)
{
CCP1IF=0;
CCP1IE=1; //開捕捉中斷
}
TMR2IE=1;
}
復制代碼
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1