pc机与单片机的通讯设计(编辑修改稿)内容摘要:
ASK reg */ define INTC_EOI 0x20 /* Interrupt controller EOI reg */ define MAX_PORTS 2 /* I/O ports (DOS limit) */ static int count = 0。 static COM _list[MAX_PORTS]。 /* I/O data structure */ static COM *1。 /* Pointers for interrupt actions */ static COM *2。 static COM *_xfer。 /* Transfer interrupt data structure */ COM *ser_init0(int port,char *ibuf,int isize, char *obuf,int osize)。 void ser_close0( COM *c )。 void (_interrupt _far int_ser1)( void )。 /* Int rtn for serial I/O COM 1 */ void (_interrupt _far int_ser2)( void )。 /* Int rtn for serial I/O COM 2 */ void (_interrupt _far int_ser_sup)( void )。 /* Support int actions */ COM *ser_init( int port,int baud,int bit,int parity,int isize,int osize ) { unsigned status。 char ch。 COM *c。 char *in_buf,*out_buf。 中国最庞大的下资料库 (整理 . 版权归原作者所有 ) 第 22 页 共 42 页 status = _bios_serial(_COM_INIT,port,(bit | parity | _COM_STOP2| baud ))。 in_buf = malloc( isize )。 if( in_buf == NULL ) return( NULL )。 out_buf = malloc( osize )。 if( out_buf == NULL ) return( NULL )。 c = ser_init0(port,in_buf,isize,out_buf,osize )。 clean_ser(c)。 return( c )。 } void ser_close(COM *c) { int i。 if( !cready ) return。 ser_close0(c)。 free( cin_buf )。 free( cout_buf )。 } 中国最庞大的下资料库 (整理 . 版权归原作者所有 ) 第 23 页 共 42 页 char serline( COM *c ) { if( !cready ) return(FALSE)。 if( cin_crt 0 ) return( TRUE )。 else return( FALSE )。 } int getsers( COM *c,int len,char *str ) { char ch。 int i。 i = 0。 while( ilen ) { while( !serhit(c) ) { if(kbhit()) return( 1 )。 } ch = 0x7f amp。 getser(c)。 switch( ch ) { case 0x0d: str[i++] = 39。 \039。 return( i )。 case 0x00: case 0x0a: break。 default: str[i++] = ch。 break。 中国最庞大的下资料库 (整理 . 版权归原作者所有 ) 第 24 页 共 42 页 } } str[i] = 39。 \039。 return( len )。 } int putsers( char *str, COM *c ) { int n,i,j。 n = strlen( str )。 for( i=0。 in。 i++ ) { while( !putser( str[i],c ) )。 } return( n )。 } char putser( char outch, COM *c ) { char val。 if( !cready ) return(FALSE)。 while( !cout_mt amp。 amp。 (cout_head == cout_tail) )。 if( !cout_full ) { cout_buf[cout_head++] = outch。 中国最庞大的下资料库 (整理 . 版权归原作者所有 ) 第 25 页 共 42 页 if( cout_head == cout_size ) cout_head = 0。 /* Reset buffer circularly */ } if( cout_head == cout_tail ) { cout_full = TRUE。 return( FALSE )。 } else cout_full = FALSE。 val = inp( SREG(LCR) )。 /* Reset DLAB for IER access */ val amp。 = 0x7F。 /* Clear IER access bit */ outp(SREG(LCR),val)。 val = inp( SREG(IER) )。 if( !(val amp。 0x02) ) /* Interrupt ON ? */ { cout_mt = FALSE。 /* Not MT now */ _disable()。 /* Interrupts OFF NOW */ outp(SREG(IER),0x03)。 /* RX amp。 TX interrupts ON */ _enable()。 /* Interrupts ON again */ } return( TRUE )。 } char serhit( COM *c ) { if( !cready ) return(FALSE)。 if( !cin_mt ) return( TRUE )。 中国最庞大的下资料库 (整理 . 版权归原作者所有 ) 第 26 页 共 42 页 else return( FALSE )。 } int getser( COM *c ) { int ch。 if( !cready ) return(FALSE)。 if( !serhit(c) ) return( 0 )。 _disable()。 ch = 0xff amp。 cin_buf[cin_tail++]。 if( cin_tail == cin_size ) cin_tail = 0。 if( cin_tail == cin_head ) cin_mt = TRUE。 if( ch == CR ) /* Keep track of CR39。 s */ cin_crt。 _enable()。 return( ch )。 } void clean_ser( COM *c ) { _disable()。 cin_head = 0。 中国最庞大的下资料库 (整理 . 版权归原作者所有 ) 第 27 页 共 42 页 cin_tail = 0。 cin_mt = TRUE。 cin_crt = 0。 _enable()。 } void tl_dtr( int flag,COM *c ) { char val。 if( !cready ) return。 val = inp(SREG(MCR))。 if( flag ) val |= 1。 else val amp。 = ~1。 outp(SREG(MCR),val)。 } void tl_rts( int flag, COM *c ) { char val。 if( !cready ) return。 val = inp(SREG(MCR))。 中国最庞大的下资料库 (整理 . 版权归原作者所有 ) 第 28 页 共 42 页 if( flag ) val |= 2。 else val amp。 = ~2。 outp(SREG(MCR),val)。 } COM *ser_init0(int port,char *ibuf,int isize, char *obuf,int osize) { int i。 char val。 COM *c。 while( port = MAX_PORTS ) /* Get port in range */ port。 for( i=0。 iMAX_PORTS。 i++ ) /* Select data structure */ { if( !_list[i].ready ) { c = amp。 (_list[i])。 break。 } } if( i == MAX_PORTS ) /* Not found */ return( NULL )。 cin_buf = ibuf。 cin_size = isize。 cin_mt = TRUE。 cin_head = 0。 cin_tail = 0。 cin_crt = 0。 中国最庞大的下资料库 (整理 . 版权归原作者所有 ) 第 29 页 共 42 页 cout_buf = obuf。 cout_size = osize。 cout_full = FALSE。 cout_mt = TRUE。 cout_head = 0。 cout_tail = 0。 switch( port ) { case 0: /* Here set up for COM1 */ cready = TRUE。 c_base = COM1_BASE。 cirq_mask = COM1_IRQ_MASK。 cirq_eoi = COM1_IRQ_EOI。 cint_number = COM1_INT_NUM。 _disable()。 1 = c。 cold = _dos_getvect( cint_number )。 _dos_setvect(cint_number,int_ser1)。 break。pc机与单片机的通讯设计(编辑修改稿)
相关推荐
方、在各个应用中使用的所有产品数据得以高度集成、协调、共享,所有产品研发过程得以高度优化或重组。 PDM 技术的发展可以分为以下三个阶段:初级的 PDM 系统 、项目组级 PDM 和企业级 PDM阶段。 1.初级 PDM 系统 初级 PDM 系统是工程数据管理 (EDM)、文档管理 (DM)、产品信息管理 (PIM)、技术数据管理 (TDM)、技术信息管理 (TIM)、图像管理
为初步并具体的设计任务书。 ● 可靠性和质量目标; ● 初始材料清单(包括早期分承包方名单); ● 初始过程流程图; ● 特殊产品和过程特性的初始明细表; ● 产品保证计划(产品保证计划是将设计目标转化为设计要求)。 上述五项要求由产品工程部负责输出。 ● 管理者支持和承诺 产品设计和开发阶段 本阶段是计划过程中设计特征和特性发展到最终形式时的要素。 A 本阶段输入为计划和确定项目阶段的输出。
以新的目标值优化顾客的过程; i) 临界测量系统能力; j) 过程加工能力或过程能力指数; k) 顾客不满意,如抱怨、退货、错运和履约不全等。 产品工程部和生产工程部应重点对 条款中的 b)、 c)、 f)、 h)、 j)等内容策划并实施持 续质量改进。 质量部应重点对 条款中的 b)、 c)、 e)、 h)、 i)、 k)等内容进行策划并实施持续质量改进。 生产部应重点对 条款中的 a)、
xide NaOCI Sodium Hydrochloride MnO2 Manganese Dioxide Desmear Process: 見表 中国最大的管理资料下载中心 (收集 \整理 . 部分版权归原作者所有 ) 第 9 页 共 20 页 中国最大的管理资料下载中心 (收集 \整理 . 部分版权归原作者所有 ) 第 10 页 共 20 页 . Pocket Void 的解釋 :
水平所成的旋角稱為螺旋角 (Helix or Flute Angle),此螺旋角度 小時 , 螺紋較稀少 ,路程近退屑快 , 但因廢屑退出以及鑽針之進入所受阻力較 大 , 容易升溫造成尖部積屑積熱 ,形成樹脂之軟化而在孔壁上形成膠渣 (smear)。 此螺旋角大時鑽針的進入及退屑所受之磨擦阻力較小而不易發熱 , 但退料太慢。 c. 握柄 (Shank) 被 Spindle 夾具夾住的部份 ,
+基本库存 2.当年库存销售周转率超过 6 次或者相对稳定的时候,推荐使用百分比差异法( percentage variation method) ,因为它的计划月度存货更接近于月平均值。 月初计划存货水平(售价计算)=计划月平均库存(售价计算)( 1+预计该月销售额 /预计月平均销售额) /2 3.周供货法的计算基础是假设储备的存货与销售额成销售额成正比。