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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? obdc.c

?? 在單片機(jī)上實(shí)現(xiàn)OBD協(xié)議的調(diào)制和解調(diào),應(yīng)用于車載OBD檢測設(shè)備.
?? C
字號:
#include <io51.h>
#include "def.h"
/*   #include "var.h" */
 /*   --VAR.H--    */
#define portmc    ((char xdata *)0xef00) /*  8255 */
#define port80    ((char xdata *)0xf400) /* 8254 port.0  */
#define port81    ((char xdata *)0xf500) /* 8254 port.1  */
#define port82    ((char xdata *)0xf600) /* 8254 port.2  */
#define port83    ((char xdata *)0xf700) /* 8254 port.3  */
data unsigned int ms10count;
data bit setpwm;    /* 0: VPW  1: PWM  */
data bit starfrm;
data bit sfflg;     /* 0: 接收  1: 發(fā)送  */
data bit recflg;    /* 0: 不接收  1: 接收幀  */
data bit pwmsflg;
data bit pwmsfack;  /* 1: 接收"發(fā)送幀"內(nèi)響應(yīng)  0: 不接收 */
data unsigned char cht2,recsj,rcount,timh0,timl0;
data unsigned char sendsj,scount,pwmd0;
data bit flag;
data bit rbflg;
data bit bflg;
data bit pwmsdf;
data bit pwmssf;
data char i;
data unsigned char ch1,ch2,ch3,ch4;
data unsigned char sett0h,sett0l,sett0md;

void time10ms(void);
void exint0(void);
void vpwc();
void pwmc();
void pwmsend();
void fout1();
void fout2();

void main()  /* CPU: 24MHz */
{ ch4=0;
  TMOD=1; IP=1; TCON=0X10;  /* T0 定時(shí)方式1(16bit),INT0 級別高于 T0,INT0,
			       T0中斷允許  INT0 電平方式*/
  enable_ET0;               /* T0 中斷控制允許  */
  EX0=0;EX1=0;ES=0;EA=1;T1=1;TXD=1;RXD=1;
  P13=0; P12=0;P16=1;
  P15=1; /* REC STA */
  P17=1; /* SEND STA */
  TH0=0XBE; TL0=0XE6;ms10count=0;
  while(ms10count<10);
  ch1= *portmc;
  T1=0; while(ms10count<20); T1=1;
  ch1=0;ch2=0;setpwm=0;pwmd0=0;
  while(1)
  {if(TXD==0)
   {T1=0;
    ch1=ch2;
    ch2=*portmc;
    T1=1;
    while(RXD==1);
    switch(ch2)
    {case 0xa0:  *portmc=0x10;break;  /* OBD-II 調(diào)制硬件號 V1.0 */
     case 0xa1:  *portmc=0x20;break;  /* OBD-II 調(diào)制軟件號 V2.0 */
     default:    *portmc=~ch2;
    }
    if(ch2==0xf0)  /* start */
    {switch(ch1)
     {case 0x10:   /* VPW */
	 P14=0;setpwm=0;
	 ms10count=0;while(ms10count<3);vpwc();
	 break;
      case 0x11:   /* PWM */
      case 0x12:
	 pwmsfack=1;
	 P14=1;setpwm=1;
	 ms10count=0;while(ms10count<3);pwmc();
	 break;
      case 0x13:  /* PWM */
	 pwmsfack=0;
	 P14=1;setpwm=1;
	 ms10count=0;while(ms10count<3);pwmc();
	 break;
      case 0x20:  /* 方波 */
	 while(TXD==1);
	 sett0md=*portmc;
	 while(TXD==1);
	 sett0h=*portmc;
	 while(TXD==1);
	 sett0l=*portmc;
	 ms10count=0;while(ms10count<2);
	 if(sett0md==0) fout1();
	 else fout2();
	 break;
     }
    }
   }
  }
}

void vpwc()
{
 P13=0; P12=0;P16=1;P17=1;
 TL0=0;TH0=0;TR0=1;
 ET0=0;EX0=0;EA=1;
 flag=1;INT0=1;
  *port83=0x32; /* T0: 方式1; RD/WR 2Byte  */
  *port80=0; *port80=0;
  *port83=0x72; /* T1: 方式1; RD/WR 2Byte  */
  *port81=0; *port81=0;
  *port83=0xb0; /* T2: 方式0; RD/WR 2Byte  */
  *port82=0; *port82=0;

 sfflg=0;   /* 0: 接收  1: 發(fā)送  */
 recflg=0;  /* 0: 不接收  1: 接收幀  */
 *port83=0x12; /* T0: 方式1; RD/WR 1Byte  */
 *port83=0x52; /* T1: 方式1; RD/WR 1Byte  */
 *port83=0x90; /* T2: 方式0; RD/WR 1Byte  */
 P10=0;P11=1;  /* 初始化 D觸發(fā)器 */
 P12=1;
 while(INT0==1);
 *port82=0xff;
 while(flag)
 {if(sfflg) /* 發(fā)送 */
  {if(P16==1)
    {
     if(scount==0) /* 轉(zhuǎn)接收幀 */
     {
       while(P16==1);
       sfflg=0;
       P12=1; P10=0;P11=1;
       *port82=0xff;
       TL0=0;TH0=0;TR0=1;EX0=0;
     }
     else
     {if((sendsj&scount)==0) /* 位為0 */
	{*port83=0x72;*port81=32;*port81=0;}
      else {*port83=0x72;*port81=64;*port81=0;}
      scount=scount>>1;
     }
     while(P16==1);
    }
    else
    {if((sendsj&scount)==0) /* 位為0 */
	{*port83=0x32;*port80=64;*port80=0;}
     else {*port83=0x32;*port80=32;*port80=0;}
     scount=scount>>1;
     if(scount==0)
     {if(TXD==0)   /* 發(fā)送下一字節(jié) */
      {sendsj=*portmc;
       scount=0x80;
      }
      else P17=1; /* 置發(fā)送結(jié)束標(biāo)記 */
     }
     while(P16==0);
    }
  }
  else      /* 接收 */
  {if(INT0==1)
   {EX0=1;    /* 160 */
    TR0=0;
    timl0=TL0;
    if((TH0==0)&&(timl0<205)) rcount=rcount>>1;  /* 137 */
    else
    {if((TH0!=0)&&(timl0>86)) recflg=0;
     else {recsj=recsj+rcount;rcount=rcount>>1;}  /* 274 */
    }
    while(INT0==1);
   }
   else
   {/*  *port83=0x90;  方式0; RD/WR 1Byte  */
     *port82=0xff;
     if(TH0>1)
     {P15=1;     /* 置接收結(jié)束標(biāo)記 */
      if(TXD==0)  /* 轉(zhuǎn)發(fā)送幀 */
      {
       sendsj=*portmc;
       sfflg=1;
       EX0=0;
       while((TH0<3)||(INT0==1)) {if(INT0==1) TH0=0;} /* 檢測空閑 */
       P10=0;P11=1;  /* 初始化 D觸發(fā)器 */
       *port83=0x32;*port80=96;*port80=0;
       P10=1;P11=0;P11=0;P11=1;P12=1;  /* 發(fā)送啟動位 */
       P17=0;       /* 置發(fā)送開始標(biāo)記 */
       scount=0x80;
      }
      TH0=3;
     }
   }
  }
 }
}
void pwmc()
{rbflg=0;pwmssf=0;
 P13=1; P12=0;P16=1;P17=1;
 TMOD=0x19;
 TL0=0;TH0=0;TR0=1; ET0=0;
 TL1=0;TH1=0;TR1=0; ET1=0;
 EX0=0;EA=0;
 flag=1;INT0=1;
  *port83=0x32; /* T0: 方式1; RD/WR 2Byte  */
  *port80=0; *port80=0;
  *port83=0x72; /* T1: 方式1; RD/WR 2Byte  */
  *port81=0; *port81=0;
  *port83=0xb0; /* T2: 方式0; RD/WR 2Byte  */
  *port82=0; *port82=0;

 sfflg=0;   /* 0: 接收  1: 發(fā)送  */
 recflg=0;  /* 0: 不接收  1: 接收幀  */
 *port83=0x12; /* T0: 方式1; RD/WR 1Byte  */
 *port83=0x52; /* T1: 方式1; RD/WR 1Byte  */
 *port83=0x9a; /* T2: 方式5; RD/WR 1Byte  */
 P10=0;P11=1;  /* 初始化 D觸發(fā)器 */
 P12=1;EX0=0;
 while(INT0==1);
 *port82=0xff;
 TL0=0;TH0=0;TR0=1;
 TL1=0;TH1=0;TR1=1;

	    /* 接收/空閑狀態(tài) */
pwmck_1:
   if(INT0==1)
   {    /* 160 */
    TL1=0;TH1=0;
    while(INT0==1);
    cht2=TL0;TL0=0;
/*    if((cht2<140)&&(cht2>90)&&(TH0==0))    45: 幀開始    186+/-5  */
    if((cht2<84)&&(cht2>50)&&(TH0==0))  /*  45: 幀開始    186+/-5  */
    {
     TL1=0;
     recsj=0;rcount=0x80;
     P15=0; goto pwmrec1; /* 接收幀開始 */
    }
    else TH0=0;
   }
   else   /* INT0=0 */
   {
     TL0=0;TH0=0;
     if(TH1>0) /* 28*6 */
      {P15=1; /* 接收幀結(jié)束 */
       if(TXD==0)  /* 轉(zhuǎn)發(fā)送幀 */
       {
	sendsj=*portmc;
/*	sfflg=1;*/
	TMOD=0x11;TR0=1;
	EX0=0;
	scount=0x80;pwmsflg=1;pwmsdf=1;
	while((TH0<3)||(INT0==1)) {if(INT0==1) TH0=0;} /* 檢測空閑 */
	P10=0;P11=1;  /* 初始化 D觸發(fā)器 */
	*port83=0x12;*port80=62;  /* 60 */
	P10=1;P11=0;P11=1;  /* 發(fā)送啟動位 */
	*port83=0x52;*port81=34;/* 38 */
	P17=0;   /* 發(fā)送幀開始 */
	pwmsend();
       }
       else TH1=4;
      }
   }
   goto pwmck_1;


pwmrec1:    /* 接收幀 */
   if(INT0==1)
   {    /* 160 */
pwmrec2:
    TL1=0;
    while(INT0==1);
pwmrec3:
    if(TL0<22) recsj=recsj|rcount;
    TL0=0;
    rcount>>=1;
    if(rcount==0)
    {
	*portmc=recsj;
	recsj=0;rcount=0x80;
	if(TL0!=0)
	{TL1=0;
	 goto pwmrec2;
	}
    }
   }
   else   /* INT0=0 */
   {
     if(TL1>48) /* 50: 15*3.5 */
     { P15=1; /* 接收幀結(jié)束 */
       if(TXD==0)  /* 轉(zhuǎn)發(fā)送幀響應(yīng) */
       {
	sendsj=*portmc;
/*	sfflg=1;*/
	scount=0x40;
	P10=0;P11=1;  /* 初始化 D觸發(fā)器 */
	*port83=0x12;
	while(TL1<65);  /* 73--13, 77--14,  */
	if((sendsj&0x80)==0)
	{*port80=32;
	 P10=1;P11=0;P11=1;  /* 發(fā)送啟動位 */
	 *port83=0x52;*port81=16;
	 P17=0;   /* 發(fā)送幀開始 */
	 pwmsend();
	}
	else
	{*port80=16;
	 P10=1;P11=0;P11=1;  /* 發(fā)送啟動位 */
	 *port83=0x52;*port81=32;
	 P17=0;   /* 發(fā)送幀開始 */
	 pwmsend();
	}
       }
       goto pwmck_1;
     }
   }
   goto pwmrec1;
}



void pwmsend()
{
pwmsc1:
/*     while(P16==1); */
     if((sendsj&scount)==0) /*  位為0 */
     {
       while(P16==1);
       *port80=32;
       scount>>=1;
       if(scount==0)
       {
	while(P16==0);
	*port81=16;
	if(TXD==0)   /* 發(fā)送下一字節(jié) */
	{sendsj=*portmc;
	 scount=0x80;
	 goto pwmsc1;
	}
	else {P17=1;goto pwmsc2; }  /* 發(fā)送幀結(jié)束 */
       }
       while(P16==0);
       *port81=16;
       goto pwmsc1;
     }
     else
     {
       while(P16==1);
       *port80=16;
       scount>>=1;
       while(P16==0);
       *port81=32;
       if(scount==0)
       {if(TXD==0)   /* 發(fā)送下一字節(jié) */
	{sendsj=*portmc;
	 scount=0x80;
	 goto pwmsc1;
	}
	else {P17=1;goto pwmsc2; }  /* 發(fā)送幀結(jié)束 */
       }
       goto pwmsc1;
     }
pwmsc2:   /* 發(fā)送幀結(jié)束處理 */
/*      sfflg=0;*/
      if(pwmsfack)
      {
       while(P16==1);
       P12=1; P10=0;P11=1;
       *port82=0xff;
       TMOD=0x19;
       TL0=0;TH0=0;TR0=1;
       TL1=0;TH1=0;TR1=1;
       recsj=0;rcount=0x80;
       P15=0;
    pwmsfrc1:    /* 接收"發(fā)送幀"內(nèi)響應(yīng) */
       if(INT0==1)
       {    /* 160 */
    pwmsfrc2:
	TL1=0;
	while(INT0==1);
	if(TL0<22) recsj=recsj|rcount;
	TL0=0;
	rcount>>=1;
	if(rcount==0)
	{
	 *portmc=recsj;
	 recsj=0;rcount=0x80;
	 if(TL0!=0)
	 {TL1=0;
	  goto pwmsfrc2;
	 }
	}
       }
       else   /* INT0=0 */
       {TL0=0;
	if(TL1>90) /* 50: 15*3.5 */
	{ P15=1; /* 接收幀結(jié)束 */
	  goto pwmsc3;
	}
       }
       goto pwmsfrc1;
      }
      else {  while(P16==1); }

pwmsc3:
      P12=1; P10=0;P11=1;
      rbflg=0;
      *port82=0xff;
      TMOD=0x19;
      TL0=0;TH0=0;TR0=1;
      TL1=0;TH1=0;TR1=1;return;

}
void time10ms(void) interrupt 1
{TH0=0XBE; TL0=0XE6;
 ms10count++;enable;
}

void EX0_int(void) interrupt 0
{
	     /* VPW */
  TH0=0;TL0=0;TR0=1;EX0=0;
  *port83=0x80; /* 鎖存輸出 */
  cht2=*port82;
  if(cht2<170)      /* 102: 幀開始 */
  {recflg=1;recsj=0;
   rcount=0x80;
   P15=0;  /* 置接收開始標(biāo)記 */
  }
  else
  {if(recflg)
   {if(cht2<204) rcount=rcount>>1; /* 68 */
    else
    {if(cht2<238) {recsj=recsj+rcount;rcount=rcount>>1;}  /* 34 */
     else recflg=0;
    }
    if(rcount==0)
    {
     *portmc=recsj;
     recsj=0;rcount=0x80;
    }
   }
  }
}

void fout1()
{ EA=0;
  TMOD=1; TCON=0X10;
cf_start1:
  T1=0;
  TH0=sett0h;TL0=sett0l;
  while(!TF0);
  TF0=0;T1=1;
  TH0=sett0h;TL0=sett0l;
  if(!TXD)
  {
   if(*portmc==0x0f) {T1=1;EA=1;return;}
  }
  while(!TF0);
  TF0=0;
  goto cf_start1;
}

void fout2()
{data unsigned char count;
  EA=0;
  TMOD=1; TCON=0X10;
cf_start2:
  T1=0;
  count=sett0md;
  while(count>0)
  {TL0=0;TH0=0;TF0=0;
   while(TF0==0);
   count--;
  }
  TH0=sett0h;TL0=sett0l;
  while(!TF0);
  TF0=0;T1=1;
  count=sett0md;
  while(count>0)
  {TL0=0;TH0=0;TF0=0;
   while(TF0==0);
   count--;
  }
  TH0=sett0h;TL0=sett0l;
  if(!TXD)
  {
   if(*portmc==0x0f) {T1=1;EA=1;return;}
  }
  while(!TF0);
  TF0=0;
  goto cf_start2;
}







?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内精品视频666| 成人黄色a**站在线观看| 国产精品蜜臀在线观看| 欧美剧在线免费观看网站| 国产成人精品一区二区三区四区| 亚洲永久精品国产| 亚洲国产岛国毛片在线| 欧美一级久久久| 欧美三电影在线| 91视频.com| 成人综合婷婷国产精品久久蜜臀| 免费看黄色91| 视频一区二区欧美| 一个色综合av| 中文字幕佐山爱一区二区免费| 久久综合久久鬼色中文字| 欧美久久一二区| 欧美色综合久久| 91官网在线观看| 91啪亚洲精品| 99riav久久精品riav| 国产精选一区二区三区| 麻豆久久一区二区| 美女脱光内衣内裤视频久久网站 | 日韩精品一区二区三区四区| 欧美视频在线一区二区三区 | 国产91在线|亚洲| 国产一区二区三区观看| 蜜臀av亚洲一区中文字幕| 日韩影院在线观看| 日一区二区三区| 日本视频中文字幕一区二区三区| 污片在线观看一区二区| 午夜激情一区二区三区| 日产国产高清一区二区三区| 偷拍亚洲欧洲综合| 视频一区在线播放| 青青青爽久久午夜综合久久午夜| 天天色天天爱天天射综合| 三级欧美在线一区| 青草av.久久免费一区| 麻豆国产精品一区二区三区| 久久精品理论片| 韩国理伦片一区二区三区在线播放| 久久国产免费看| 国产精品自拍在线| 成人美女视频在线看| 不卡的电影网站| 在线观看91视频| 91精品国产综合久久国产大片| 日韩一级欧美一级| 国产亚洲精品aa午夜观看| 日韩一区中文字幕| 亚洲一区二区三区四区在线| 日韩精品一级二级 | 亚洲激情一二三区| 亚洲18色成人| 国产综合久久久久久久久久久久| 国产老妇另类xxxxx| 成人精品视频一区二区三区尤物| 91浏览器在线视频| 666欧美在线视频| 26uuu欧美| 亚洲丝袜制服诱惑| 肉色丝袜一区二区| 福利视频网站一区二区三区| 91麻豆精品秘密| 日韩免费看网站| 中文字幕一区二区三区色视频| 亚洲自拍都市欧美小说| 蜜桃久久久久久| 成人久久视频在线观看| 欧美日韩久久一区二区| 久久亚洲二区三区| 一个色在线综合| 国产伦精品一区二区三区免费迷| 99re这里都是精品| 欧美大片一区二区| 亚洲免费观看在线视频| 免费看欧美女人艹b| 成人蜜臀av电影| 欧美一区二区三区白人| 国产精品久久久久影院亚瑟| 亚洲成人av免费| 国产99精品在线观看| 欧美高清性hdvideosex| 国产精品三级视频| 青娱乐精品在线视频| 91视频观看免费| 久久午夜国产精品| 天天综合色天天| 99精品视频在线播放观看| 精品久久久久久久久久久久久久久| 成人欧美一区二区三区白人| 美女视频黄 久久| 色www精品视频在线观看| 欧美精品一区二区精品网| 亚洲一区二区三区免费视频| 国产精品一区二区三区网站| 91精品国产色综合久久久蜜香臀| 亚洲欧美二区三区| 国产精品亚洲第一区在线暖暖韩国| 欧美日韩一级大片网址| 中文字幕巨乱亚洲| 激情综合网最新| 欧美一区二区三区在线观看视频| 亚洲综合在线视频| 99久久精品国产麻豆演员表| 久久人人超碰精品| 麻豆精品视频在线| 这里是久久伊人| 午夜精品视频一区| 欧美视频一区二区在线观看| 日韩美女视频19| av日韩在线网站| 日本一区二区电影| 国产精品影视网| 久久免费电影网| 国产伦理精品不卡| 久久婷婷一区二区三区| 国产揄拍国内精品对白| 日韩欧美一区二区在线视频| 午夜精品aaa| 91麻豆精品国产自产在线观看一区 | 欧美日韩中文字幕一区二区| 亚洲伦理在线免费看| 成人综合在线视频| 日本一区二区三区在线不卡| 国产精品亚洲视频| 国产人久久人人人人爽| 国产精品一区二区你懂的| 亚洲精品在线免费观看视频| 久久99蜜桃精品| 日韩久久久精品| 黄色日韩网站视频| 国产日韩在线不卡| proumb性欧美在线观看| 成人欧美一区二区三区在线播放| 99久久99久久免费精品蜜臀| 亚洲婷婷综合久久一本伊一区| av在线播放不卡| 亚洲另类春色校园小说| 色欧美片视频在线观看在线视频| 一区二区三区欧美亚洲| 欧美日韩专区在线| 日本视频一区二区| 久久老女人爱爱| a在线欧美一区| 一区二区高清在线| 欧美精品欧美精品系列| 蜜臀久久久久久久| 久久久不卡网国产精品二区| 丁香婷婷深情五月亚洲| 亚洲人成小说网站色在线 | 久久蜜臀中文字幕| 成人av网站在线观看免费| 亚洲女与黑人做爰| 91精品国产综合久久久久久久久久| 美国毛片一区二区三区| 337p日本欧洲亚洲大胆精品| 成人午夜电影久久影院| 亚洲综合图片区| 日韩免费成人网| 99久久99久久精品国产片果冻| 亚洲国产cao| 国产色一区二区| 欧美日韩中文精品| 国产福利精品一区| 亚洲成a人v欧美综合天堂下载| 精品裸体舞一区二区三区| 不卡电影免费在线播放一区| 亚洲国产wwwccc36天堂| 国产夜色精品一区二区av| 一本到不卡免费一区二区| 日本中文字幕一区| 亚洲欧洲精品天堂一级| 日韩西西人体444www| 99久久久精品免费观看国产蜜| 日韩黄色片在线观看| 国产精品视频在线看| 欧美精品日韩一区| av一本久道久久综合久久鬼色| 奇米综合一区二区三区精品视频| 中文字幕av一区二区三区| 在线不卡中文字幕播放| 懂色av中文一区二区三区| 首页亚洲欧美制服丝腿| 国产精品久久久久久久久动漫| 4438x成人网最大色成网站| 成人av综合一区| 久久国产福利国产秒拍| 亚洲美女在线国产| 欧美激情中文不卡| 精品欧美乱码久久久久久| 91网站最新网址| 国产美女精品人人做人人爽| 视频在线观看91| 一区二区三区91| 亚洲欧洲一区二区在线播放| 欧美一级黄色大片|