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

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

?? ul_c950pci.c

?? linux下的RS485的驅動 值得一看
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*******************************************************************  uLan Communication - uL_DRV - multiplatform uLan driver  ul_c950pci.c	- chip driver for Oxford Semiconductor's                   OX16950 based pCI acards  (C) Copyright 1996-2004 by Pavel Pisa - project originator        http://cmp.felk.cvut.cz/~pisa  (C) Copyright 1996-2004 PiKRON Ltd.        http://www.pikron.com  (C) Copyright 2002-2004 Petr Smolik    The uLan driver project can be used and distributed   in compliance with any of next licenses   - GPL - GNU Public License     See file COPYING for details.   - LGPL - Lesser GNU Public License   - MPL - Mozilla Public License   - and other licenses added by project originator  Code can be modified and re-distributed under any combination  of the above listed licenses. If contributor does not agree with  some of the licenses, he/she can delete appropriate line.  WARNING: if you delete all lines, you are not allowed to  distribute code or sources in any form. *******************************************************************//*******************************************************************//* Chip driver for OX16950-pci */#include "serial_reg.h"#define u950pci_inb(base,port)	 ul_inb(base+port)#define u950pci_outb(base,port,val) ul_outb(base+port,val)#define U950PCI_MCR_IE	0x08	/* receive  0x09 for Advantech */#define U950PCI_MCR_OE	0x09	/* transmit 0x08 for Advantech */#define U950PCI_MCR_TXDTRPOL 0x01#define U950PCI_LCR_UL	0x03	/* receive/transmit */#define U950PCI_LCR_ULB	0x43	/* transmit line break */#define U950PCI_LCR_EFR	0xBF	/* enable access to EFR, XONx */#define U950PCI_LSR_C	0x04	/* controll character received */#define U950PCI_LSR_ERR	0x1A	/* error in receiver */#define U950PCI_NMR_EN	0x03	/* 9-bit communication settings */#define U950PCI_IIR_ID	0x3f	/* more IRQ levels */#define U950pci_MSR_RxD UART_MSR_RI /* Pin for RxD level sense *//* flags of chip options used in u950pci_init *//* unfortunate random DTR polarity over different vendors  !!! */#define U950PCI_CHOPT_TXDTRNEG 1	/* negated polarity (Advantech) */#define U950PCI_CHOPT_HSPDOSC  2	/* oscilator 14.7456MHz/1.8432MHz */#define U950PCI_CHOPT_RXDONRI  4	/* RxD signal connected to RI */#define U950PCI_ACR_VAL chip_buff[2] /* shaddow buffer of ACR *//* default ACR value : DTR=1 when Tx, 950 trigger levels enable  */#define U950PCI_ACR_UL	(UART_ACR_TLENB)#define U950PCI_ACR_ULTX (U950PCI_ACR_UL|0x10|UART_ACR_RXDIS)/**/#define U950PCI_ACR_TXDTRPOL 0x08	/* ^- 0x18 for Advantech */#define U950PCI_STATE chip_buff[3] /* chip state information */#define U950PCI_STATE_TX    1#define U950PCI_STATE_FLUSH 2#define U950PCI_RX_ACRMCR chip_buff[4] /* set this for RX - LSB=ACR, MSB=MCR */  #define U950PCI_RX_ACR(udrv) ((uchar)udrv->U950PCI_RX_ACRMCR)  #define U950PCI_RX_MCR(udrv) ((uchar)(udrv->U950PCI_RX_ACRMCR>>8))#define U950PCI_TX_ACRMCR chip_buff[5] /* set this for TX - LSB=ACR, MSB=MCR */  #define U950PCI_TX_ACR(udrv) ((uchar)udrv->U950PCI_TX_ACRMCR)  #define U950PCI_TX_MCR(udrv) ((uchar)(udrv->U950PCI_TX_ACRMCR>>8))INLINE void u950pci_icr_write(ul_drv *udrv, int index, int val){  u950pci_outb(udrv->port,UART_SCR,(uchar)index);  u950pci_outb(udrv->port,UART_ICR,(uchar)val);}unsigned u950pci_icr_read(ul_drv *udrv, int index){  unsigned val;  u950pci_icr_write(udrv,UART_ACR,udrv->U950PCI_ACR_VAL|UART_ACR_ICRRD);  u950pci_outb(udrv->port,UART_SCR,(uchar)index);  val=u950pci_inb(udrv->port,UART_ICR);  u950pci_icr_write(udrv,UART_ACR,udrv->U950PCI_ACR_VAL);  return val;}unsigned u950pci_xfl_read(ul_drv *udrv, int reg){  unsigned val;  u950pci_icr_write(udrv,UART_ACR,udrv->U950PCI_ACR_VAL|UART_ACR_ASREN);  val=u950pci_inb(udrv->port,reg);  /* no need to set ACR index - SCR not changed */  u950pci_outb(udrv->port,UART_ICR,(uchar)(udrv->U950PCI_ACR_VAL));  return val;}INLINE void u950pci_acr_write(ul_drv *udrv, int val){  udrv->U950PCI_ACR_VAL=val;  u950pci_icr_write(udrv,UART_ACR,val); }int u950pci_rxd_cs(ul_drv *udrv){ /* returns 1 if active level detected */    if(!(udrv->chip_options&U950PCI_CHOPT_RXDONRI))    return 0;  if(!(u950pci_inb(udrv->port,UART_MSR)&U950pci_MSR_RxD));    return 0;  LOG_CHIO(" CSCD");  return 1;}/*** Test interrupt request state ***/int u950pci_pool(ul_drv *udrv){  unsigned u;  u=u950pci_inb(udrv->port,UART_IIR);  return (u&UART_IIR_NO_INT)?0:((u&U950PCI_IIR_ID)|1);};/*** Wait end of transmit ***/int u950pci_weot(ul_drv *udrv, int ret_code){  uchar lsr_val;  lsr_val=u950pci_inb(udrv->port,UART_LSR);  if(lsr_val&UART_LSR_TEMT){    UL_FRET;    return UL_RC_PROC;  }  u950pci_icr_write(udrv,UART_TTL,0);	/* transmittion FIFO treshold */  u950pci_outb(udrv->port,UART_IER,UART_IER_THRI);  LOG_CHIO(".weot");  return UL_RC_WIRQ;};/* Help subroutine for switch from transmit to receive */int u950pci_recch_sub_tx2rx(ul_drv *udrv, int lsr_val){  if(lsr_val&UART_LSR_TEMT){    udrv->U950PCI_STATE&=~(U950PCI_STATE_TX|U950PCI_STATE_FLUSH);    u950pci_outb(udrv->port,UART_FCR,UART_FCR_ENABLE_FIFO|        	 UART_FCR_CLEAR_RCVR); /**/    u950pci_acr_write(udrv,U950PCI_RX_ACR(udrv));    return UL_RC_PROC;  }  u950pci_icr_write(udrv,UART_TTL,0);	/* wait for TEMT */  u950pci_outb(udrv->port,UART_IER,UART_IER_THRI);  LOG_CHIO(".t2r");  return UL_RC_WIRQ;}/* Help subroutine for reading 9-bit character */int u950pci_recch_sub_rec9bit(ul_drv *udrv, int lsr_val){  udrv->char_buff=u950pci_inb(udrv->port,UART_RX);  if(lsr_val&U950PCI_LSR_C){    udrv->last_ctrl=udrv->char_buff|=0x100; /* last char for ready/busy */  } else udrv->last_ctrl&=0x7f; /* somebody other has line */  udrv->xor_sum^=udrv->char_buff;udrv->xor_sum++;  if(lsr_val&U950PCI_LSR_ERR){    LOG_CHIO(" ER:%03X",udrv->char_buff);    return UL_RC_EFRAME; /* frame error */  }else{    LOG_CHIO(" R:%03X",udrv->char_buff);    return UL_RC_PROC;  }}/*** Receive character into char_buff ***/int u950pci_recch(ul_drv *udrv, int ret_code){  uchar lsr_val;  uchar rfl_val;  udrv->char_buff=0;  lsr_val=u950pci_inb(udrv->port,UART_LSR);  LOG_CHIO(" lsr%02X",lsr_val);  if(udrv->U950PCI_STATE&     (U950PCI_STATE_TX|U950PCI_STATE_FLUSH)){    /* Manage all necessary for TX/RX switch */    return u950pci_recch_sub_tx2rx(udrv,lsr_val);  }  rfl_val=(uchar)u950pci_xfl_read(udrv,UART_RFL);  LOG_CHIO(" rfl%02X",rfl_val);  /*if(lsr_val&UART_LSR_DR){*/  if(rfl_val>0){    /* Construct and return 9-bit character */    UL_FRET;    return u950pci_recch_sub_rec9bit(udrv,lsr_val);  }  LOG_CHIO("-");  u950pci_outb(udrv->port,UART_IER,UART_IER_RDI|UART_IER_RLSI);  u950pci_icr_write(udrv,UART_RTL,6);	/* receive FIFO treshold */  return UL_RC_WIRQ;			/**/}/*** Send character from char_buff ***/  int u950pci_sndch_1(ul_drv *udrv, int ret_code);int u950pci_sndch(ul_drv *udrv, int ret_code){  unsigned u;  uchar lsr_val;  uchar tfl_val;  lsr_val=u950pci_inb(udrv->port,UART_LSR);  if(udrv->U950PCI_STATE&U950PCI_STATE_TX){    LOG_CHIO(" lsr%02X",lsr_val);    /*if(lsr_val&UART_LSR_THRE){*/    tfl_val=(uchar)u950pci_xfl_read(udrv,UART_TFL);    LOG_CHIO(" tfl%02X",tfl_val);    if(tfl_val<0x08){      u=udrv->char_buff;      udrv->xor_sum^=udrv->char_buff;udrv->xor_sum++;      if(u&0x100){	udrv->last_ctrl=u; /* store last control char */	u950pci_outb(udrv->port,UART_SCR,1);     } else u950pci_outb(udrv->port,UART_SCR,0);     u950pci_outb(udrv->port,UART_TX,(uchar)u);     UL_FRET;     LOG_CHIO(" T:%03X",u);     return UL_RC_PROC;   }   LOG_CHIO("-");   u950pci_outb(udrv->port,UART_IER,UART_IER_THRI);   return UL_RC_WIRQ; } /* flush timing dummy transmit chars and manage 1 char switch delay*/ u950pci_outb(udrv->port,UART_FCR,UART_FCR_ENABLE_FIFO|              UART_FCR_CLEAR_RCVR|UART_FCR_CLEAR_XMIT); u950pci_acr_write(udrv,U950PCI_RX_ACR(udrv)); u950pci_icr_write(udrv,UART_TTL,0);	/* wait for TEMT */ u950pci_outb(udrv->port,UART_TX,0); u950pci_outb(udrv->port,UART_IER,UART_IER_THRI); UL_FNEXT(u950pci_sndch_1);  LOG_CHIO(".r2t"); return UL_RC_WIRQ;}	      int u950pci_sndch_1(ul_drv *udrv, int ret_code){  uchar lsr_val;  lsr_val=u950pci_inb(udrv->port,UART_LSR);  if(~lsr_val&UART_LSR_TEMT) return UL_RC_WIRQ;  /* finally setup for transmit */  udrv->U950PCI_STATE|=U950PCI_STATE_TX;  u950pci_icr_write(udrv,UART_TTL,4);	/* min 4 bytes in Tx FIFO */  u950pci_acr_write(udrv,U950PCI_TX_ACR(udrv));  UL_FNEXT(u950pci_sndch);   return UL_RC_PROC;}/*** Wait for time or received character ***/  int u950pci_wait_1(ul_drv *udrv, int ret_code);int u950pci_wait(ul_drv *udrv, int ret_code){  int i;  uchar lsr_val;  uchar rfl_val;  udrv->char_buff=0;  lsr_val=u950pci_inb(udrv->port,UART_LSR);  if(udrv->U950PCI_STATE&     (U950PCI_STATE_TX|U950PCI_STATE_FLUSH)){    /* Manage all necessary for TX/RX switch */    return u950pci_recch_sub_tx2rx(udrv,lsr_val);  }  rfl_val=(uchar)u950pci_xfl_read(udrv,UART_RFL);  LOG_CHIO(" w1rfl%02X",rfl_val);  /*if(lsr_val&UART_LSR_DR){*/  if(rfl_val>0){    /* Construct and return 9-bit character */    UL_FRET;    return u950pci_recch_sub_rec9bit(udrv,lsr_val);  }  /* flush Tx FIFO */  u950pci_outb(udrv->port,UART_FCR,UART_FCR_ENABLE_FIFO|               UART_FCR_CLEAR_XMIT);  u950pci_icr_write(udrv,UART_RTL,1);	/* receive FIFO treshold */  u950pci_icr_write(udrv,UART_TTL,0);	/* wait TEMT */  for(i=udrv->wait_time;i--;){    u950pci_outb(udrv->port,UART_TX,0);		/* wait timed by dummy TX */  }  u950pci_outb(udrv->port,UART_IER,UART_IER_RDI|               UART_IER_RLSI|UART_IER_THRI);  UL_FNEXT(u950pci_wait_1);  LOG_CHIO("=");  return UL_RC_WIRQ;}int u950pci_wait_1(ul_drv *udrv, int ret_code){  uchar lsr_val;  uchar rfl_val;  uchar tfl_val;  lsr_val=u950pci_inb(udrv->port,UART_LSR);  rfl_val=(uchar)u950pci_xfl_read(udrv,UART_RFL);  LOG_CHIO(" w2rfl%02X",rfl_val);  /*if(lsr_val&UART_LSR_DR){*/  if(rfl_val>0){    /* Construct and return 9-bit character */    UL_FRET;    return u950pci_recch_sub_rec9bit(udrv,lsr_val);  }  tfl_val=(uchar)u950pci_xfl_read(udrv,UART_TFL);  LOG_CHIO(" w3tfl%02X",tfl_val);  if(tfl_val>0)    return UL_RC_WIRQ;  u950pci_outb(udrv->port,UART_FCR,UART_FCR_ENABLE_FIFO|               UART_FCR_CLEAR_XMIT);  UL_FRET;  LOG_CHIO(" Timeout!");  return UL_RC_ETIMEOUT;};/*** Connect to RS485 bus ***/  int u950pci_connect_1(ul_drv *udrv, int ret_code);  int u950pci_connect_2(ul_drv *udrv, int ret_code);int u950pci_connect(ul_drv *udrv, int ret_code){ unsigned u; u=udrv->last_ctrl;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品国产秦先生| 奇米精品一区二区三区在线观看 | 国产不卡一区视频| 91蝌蚪porny成人天涯| 欧美日韩一区二区在线观看| 精品奇米国产一区二区三区| 欧美激情一区二区在线| 亚洲少妇屁股交4| 麻豆91精品视频| 色婷婷国产精品综合在线观看| 91精品欧美一区二区三区综合在| 国产片一区二区三区| 性欧美疯狂xxxxbbbb| 成人永久aaa| 日韩欧美国产电影| 亚洲国产精品自拍| 91丝袜国产在线播放| 精品少妇一区二区三区| 亚洲国产精品自拍| 色婷婷av一区| 亚洲日本护士毛茸茸| 国产精品538一区二区在线| 欧美高清视频一二三区| 亚洲视频一区在线观看| 国产成人午夜高潮毛片| 国产偷国产偷亚洲高清人白洁| 精品一区二区免费看| 精品欧美一区二区在线观看| 日韩精品色哟哟| 欧美浪妇xxxx高跟鞋交| 亚洲一区视频在线观看视频| 成人福利视频在线| 中文字幕一区二区三区在线播放| 国产精品一区免费在线观看| 久久久久国产精品人| 国产激情一区二区三区| 国产精品剧情在线亚洲| 99久久婷婷国产精品综合| 国产精品福利av| 欧美日韩一区二区不卡| 日韩国产欧美三级| 日韩女同互慰一区二区| 国产很黄免费观看久久| 综合久久久久综合| 欧美肥妇free| 99免费精品在线| 亚洲一区成人在线| 日韩欧美一区二区三区在线| 国产成人在线影院 | 成人精品在线视频观看| 136国产福利精品导航| 欧美日韩久久久一区| 欧美在线制服丝袜| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产视频视频一区| 欧美日韩亚洲不卡| 粉嫩欧美一区二区三区高清影视| 亚洲最色的网站| 欧美精彩视频一区二区三区| 欧美日本不卡视频| av在线这里只有精品| 捆绑调教美女网站视频一区| 亚洲欧美成人一区二区三区| 国产婷婷色一区二区三区在线| 精品视频一区二区不卡| 99久久伊人久久99| 国产乱码精品1区2区3区| 美女国产一区二区三区| 亚洲综合一区二区精品导航| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美三级三级三级爽爽爽| 色一情一乱一乱一91av| 一本到不卡免费一区二区| 成人美女视频在线观看18| 国产一区亚洲一区| 久久99久久99| 国产一区在线看| 国产一区二区导航在线播放| 激情五月婷婷综合网| 久久97超碰色| 国产乱码精品一区二区三| 国产黄色精品视频| 91色|porny| 欧美日韩美少妇| 日韩欧美国产一区在线观看| 欧美大度的电影原声| 久久久精品综合| 亚洲免费电影在线| 亚洲18色成人| 国产精品一二一区| 99精品久久免费看蜜臀剧情介绍| 色综合天天综合| 国产乱一区二区| 色综合 综合色| 欧美电影免费观看高清完整版在 | 亚洲午夜一区二区| 蜜臀久久99精品久久久久久9| 狠狠色狠狠色综合| 91久久精品一区二区二区| 欧美精品第1页| 国产精品视频免费看| 亚洲成av人片| 91偷拍与自偷拍精品| www久久久久| 视频一区在线播放| www.爱久久.com| 亚洲精品一区二区三区99| 亚洲在线观看免费| 成人激情校园春色| 精品国免费一区二区三区| 日韩精品一二三区| 91麻豆精品一区二区三区| 日韩一二三区不卡| 石原莉奈在线亚洲二区| 色呦呦网站一区| 最新不卡av在线| 成人av资源在线观看| 久久影视一区二区| 日本成人中文字幕在线视频| 欧美日韩在线观看一区二区| 中文字幕亚洲电影| 欧美一区二区三区在| 日本不卡一二三区黄网| 欧美欧美欧美欧美| 亚洲视频一区二区在线观看| caoporm超碰国产精品| 一区二区视频在线| 欧洲精品一区二区| |精品福利一区二区三区| 国产精品久久毛片av大全日韩| 国产精品国产三级国产普通话99| 蜜臀av性久久久久蜜臀aⅴ| 久久久99精品免费观看| 91精品一区二区三区久久久久久| 北条麻妃一区二区三区| 精品一区二区国语对白| 美女网站在线免费欧美精品| 久久综合av免费| 97久久精品人人做人人爽50路 | 久久精品99国产精品| 精品对白一区国产伦| av激情亚洲男人天堂| 首页国产欧美日韩丝袜| 日韩欧美电影一区| 91免费版在线| 国产一区二区三区免费播放| 亚洲最色的网站| 久久精品在这里| 91.成人天堂一区| 91亚洲国产成人精品一区二区三 | 国产精品理伦片| 欧美成人一区二区三区| 一本色道久久综合亚洲91| 国产一区二区三区视频在线播放| 日韩一区欧美小说| 中文字幕巨乱亚洲| 中文字幕一区二区在线观看 | 久久在线免费观看| 欧美一区二区播放| 欧美v日韩v国产v| 久久蜜桃av一区二区天堂| 26uuu亚洲| 国产女人水真多18毛片18精品视频| 欧美一级午夜免费电影| 欧美一级在线观看| 欧美xxxxxxxx| 国产精品美女久久久久久久久久久 | 亚洲欧美日韩久久精品| 国产精品久久看| 亚洲资源中文字幕| 久久99国产精品成人| 国产成人无遮挡在线视频| av电影在线观看完整版一区二区| 99精品桃花视频在线观看| 欧美丰满一区二区免费视频| 久久久久久久一区| 日韩专区一卡二卡| 亚洲天天做日日做天天谢日日欢| 精品一区二区三区视频在线观看| 午夜精品一区二区三区免费视频| 国产黑丝在线一区二区三区| 欧美三级欧美一级| 亚洲一区在线免费观看| 91亚洲永久精品| 17c精品麻豆一区二区免费| 成人v精品蜜桃久久一区| 欧美精彩视频一区二区三区| 亚洲aaa精品| 99麻豆久久久国产精品免费优播| 精品人在线二区三区| 首页亚洲欧美制服丝腿| 色哟哟国产精品免费观看| 国产亚洲精品精华液| 奇米色777欧美一区二区| 欧美午夜精品一区二区三区| 国产精品免费看片| 国产69精品久久久久777| 精品国产乱码久久久久久浪潮 | 中文字幕亚洲一区二区va在线| 免费在线观看精品|