freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

pc機(jī)與單片機(jī)的通訊設(shè)計(jì)(已改無(wú)錯(cuò)字)

2022-08-22 20:21:24 本頁(yè)面
  

【正文】 。 case 1: /* Here set up for COM1 */ cready = TRUE。 c_base = COM2_BASE。 cirq_mask = COM2_IRQ_MASK。 cirq_eoi = COM2_IRQ_EOI。 cint_number = COM2_INT_NUM。 中國(guó)最龐大的下資料庫(kù) (整理 . 版權(quán)歸原作者所有 ) 第 30 頁(yè) 共 42 頁(yè) _disable()。 2 = c。 cold = _dos_getvect( cint_number )。 _dos_setvect(cint_number,int_ser2)。 break。 default: return(NULL)。 /* Bad port SKIP */ } val = inp( INTC_MASK )。 val amp。= cirq_mask。 outp( INTC_MASK, val )。 val = inp( SREG(LSR) )。 /* Read and discard STATUS */ val = inp( SREG(RBR) )。 /* Read and discard DATA */ val = inp( SREG(LCR) )。 /* Rst DLAB for IER access */ val amp。= 0x7F。 /* 01111111B */ outp( SREG(LCR),val )。 outp( SREG(IER),1)。 /* Enable Data READY INT */ outp( SREG(MCR),0xB )。 /* Enable OUT2,RTS amp。 DTR */ _enable()。 return( c )。 } void ser_close0( COM *c ) 中國(guó)最龐大的下資料庫(kù) (整理 . 版權(quán)歸原作者所有 ) 第 31 頁(yè) 共 42 頁(yè) { char val。 if( !cready ) return。 _disable()。 val = inp(INTC_MASK)。 val |= ~cirq_mask。 outp(INTC_MASK,val)。 val = inp( SREG(LCR) )。 /* Reset DLAB for IER access */ val amp。= 0x7F。 /* Clear IER access bit */ outp(SREG(LCR),val)。 val = inp( SREG(RBR) )。 val = inp( SREG(LSR))。 val = inp(SREG(IIR) )。 val = inp(SREG(IER) )。 outp(SREG(IER),0)。 /* Disable 8250 Interrupts */ outp(SREG(MCR),0)。 /* Disable RTS,DTR and OUT2 */ outp(SREG(MCR),0)。 /* Disable OUT2 */ _dos_setvect(cint_number, cold )。 _enable()。 cready = FALSE。 } 中國(guó)最龐大的下資料庫(kù) (整理 . 版權(quán)歸原作者所有 ) 第 32 頁(yè) 共 42 頁(yè) void _interrupt _far int_ser1( void ) { _xfer = 1。 _chain_intr( int_ser_sup )。 } void _interrupt _far int_ser2( void ) { _xfer = 2。 _chain_intr( int_ser_sup )。 } void _interrupt _far int_ser_sup( void ) { char val。 char ch。 int ptr。 COM *c。 c = _xfer。 while( TRUE ) { val = inp( SREG(LSR) )。 /* Read and discard STATUS */ val = inp( SREG(IIR) )。 /* Get interrupt status register */ if( val amp。 0x04 ) /* Receive Interrupt */ { 中國(guó)最龐大的下資料庫(kù) (整理 . 版權(quán)歸原作者所有 ) 第 33 頁(yè) 共 42 頁(yè) ptr = cin_head。 ch = inp( SREG(RBR) )。 if( cin_mt || ptr != cin_tail ) { cin_buf[ptr++] = ch。 if( ptr == cin_size ) ptr = 0。 cin_head = ptr。 cin_mt = FALSE。 if( ch == CR ) /* Count lines */ cin_crt++。 } } else { if( val amp。 0x02 ) /* Transmit Interrupt */ { if( (!cout_full) amp。amp。 (cout_head == cout_tail) ) { cout_mt = TRUE。 val = inp( SREG(LCR) )。 val amp。= 0x7F。 outp(SREG(LCR),val)。 outp(SREG(IER),0x01)。 /* RX interrupts ON */ } else { outp(SREG(THR), cout_buf[cout_tail++])。 if( cout_tail == cout_size ) cout_tail = 0。 } } else return。 /* No Interrupt */ 中國(guó)最龐大的下資料庫(kù) (整理 . 版權(quán)歸原作者所有 ) 第 34 頁(yè) 共 42 頁(yè) } outp(INTC_EOI,cirq_eoi)。 } } ( 4) MCS51 串行通訊: MCS51 的串行口使用起來(lái)非常簡(jiǎn)單,因?yàn)?MCS51 單片機(jī)的串行口沒(méi)有與MODEM 控制相關(guān)的信號(hào)。這使得 51 的通訊口非常易于使用。使用查詢方式時(shí),僅需初始化有關(guān)的寄存器即可。演示程序如下: include include void putch(unsigned char)。 unsigned char getch(void)。 main() { unsigned char ch。 SCON = 0x50。 TMOD |= 0x20。 TH1 = 0xfd。 TL1 = 0xfd。 TR1 = 1。 TI = 1。 RI = 0。 while(1) { ch = getch()。 putch(ch)。 中國(guó)最龐大的下資料庫(kù) (整理 . 版權(quán)歸原作者所有 ) 第 35 頁(yè) 共 42 頁(yè) } } void putch(unsigned char ch) { SBUF = ch。 TI = 0。 while(!TI)。 } unsigned char getch(void) { while(!RI)。 RI = 0。 return(SBUF)。 } 使用中斷驅(qū)動(dòng)的程序比較復(fù)雜,下面為完整的 MCS51串行通訊底層驅(qū)動(dòng)程序,由頭文件 及 組成。 返回頁(yè)首 unsigned char RR_iHead。 /* receiver head index */ unsigned char RR_iTail。 /* receiver tail index */ unsigned char RR_cLev。 /* receiver buffer count */ unsigned char RR_cMax。 /* receiver buffer count */ unsigned char TR_iHead。 /* transmitter head index */ unsigned char TR_iTail。 /* transmitter tail index */ unsigned char TR_cLev。 /* transmitter buffer count */ unsigned char TR_cMax。 /* transmitter buffer count */ 中國(guó)最龐大的下資料庫(kù) (整理 . 版權(quán)歸原作者所有 ) 第 36 頁(yè) 共 42 頁(yè) unsigned char UnGotCh。 /* saved char for ungetch() */ unsigned char SerFlags。 /* serial flag */ bit FlagTransIdle。 /* set when transmitter is finished */ bit FlagStripOutLF。 /* don39。t send linefeeds */ bit FlagCvtInCR。 /* convert ining CR to LF */ unsigned char TestBits。 define INRINGSIZE 128 /* must be = 254 to avoid wraps */ define OUTRINGSIZE 250 /* ditto */ define T1RELOAD 253 define CR 13 define LF 10 define ESC 27 define EOF 1 unsigned char xdata RRing[INRINGSIZE]。 /* receiver ring buffer */ unsigned char xdata TRing[OUTRINGSIZE]。 /* receiver ring buffer */ int putstr (const char *)。 int putch(int)。 int chkch()。 int getch()。 void SerWaitOutDone()。 int SerFlushIn()。 int putc(int TransChar)。 中國(guó)最龐大的下資料庫(kù) (整理 . 版權(quán)歸原作者所有 ) 第 37 頁(yè) 共 42 頁(yè) /* serial I/O code */ /**/ /* Initialize serial port hardware and variables */ include include void SerInitialize() { SerFlags = 0。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1