如何將并口程序改成串口

我看到你們公司網(wǎng)站上都是用并口讀u盤,那怎么用串口讀呢,下面的程序怎么改寫,我用的是arm單片機(jī),stm32f103zet6芯片,144腳,還請(qǐng)管理員指教。 void CH375_PORT_INIT( ) /* 由于使用通用I/O模塊并口讀寫時(shí)序,所以進(jìn)行初始化 */ { IO0SET |= 0x000000E0; /* 設(shè)置CS,WR,RD默認(rèn)為高電平 */ IO0DIR &= 0xFFFF00F7; /* 設(shè)置8位并口和INT#為輸入 */ IO0DIR |= 0x000000F0; /* 設(shè)置CS,WR,RD,A0為輸出 */ }

void xWriteCH375Cmd( UINT8 mCmd ) /* 外部定義的被CH375程序庫(kù)調(diào)用的子程序,向CH375寫命令 */ { mDelay1_2uS( ); mDelay1_2uS( ); /* 至少延時(shí)1uS */ IO0CLR |= 0x0000FF00; /* 清并口輸出 */ IO0SET |= ( (UINT32)mCmd << 8 ) | 0x00000010; /* 向CH375的并口輸出數(shù)據(jù), 輸出A0(P0.4)=1; */ IO0DIR |= 0x0000FFF0; /* 寫操作所以數(shù)據(jù)輸出, 設(shè)置CS,WR,RD,A0為輸出 */ IO0CLR |= 0x000000C0; /* 輸出有效寫控制信號(hào), 寫CH375芯片的命令端口, A0(P0.4)=1; CS(P0.7)=0; WR=(P0.6)=0; RD(P0.5)=1; */ IO0DIR = IO0DIR; IO0DIR = IO0DIR; /* 該操作無(wú)意義,僅作延時(shí),CH375要求讀寫脈沖寬度大于100nS */ IO0SET |= 0x000000E0; /* 輸出無(wú)效的控制信號(hào), 完成操作CH375芯片, A0(P0.4)=1; CS(P0.7)=1; WR=(P0.6)=1; RD(P0.5)=1; */ IO0CLR |= 0x00000010; /* 輸出A0(P0.4)=0; 可選操作 */ IO0DIR &= 0xFFFF00FF; /* 禁止數(shù)據(jù)輸出 */ mDelay1_2uS( ); mDelay1_2uS( ); /* 至少延時(shí)2uS */ }

void xWriteCH375Data( UINT8 mData ) /* 外部定義的被CH375程序庫(kù)調(diào)用的子程序,向CH375寫數(shù)據(jù) */ { IO0CLR |= 0x0000FF00; /* 清并口輸出 */ IO0SET |= (UINT32)mData << 8; /* 向CH375的并口輸出數(shù)據(jù) */ IO0DIR |= 0x0000FF00; /* 寫操作所以數(shù)據(jù)輸出 */ IO0CLR |= 0x000000D0; /* 輸出有效寫控制信號(hào), 寫CH375芯片的數(shù)據(jù)端口, A0(P0.4)=0; CS(P0.7)=0; WR=(P0.6)=0; RD(P0.5)=1; */ IO0DIR = IO0DIR; IO0DIR = IO0DIR; /* 該操作無(wú)意義,僅作延時(shí),CH375要求讀寫脈沖寬度大于100nS */ IO0SET |= 0x000000E0; /* 輸出無(wú)效的控制信號(hào), 完成操作CH375芯片, A0(P0.4)=0; CS(P0.7)=1; WR=(P0.6)=1; RD(P0.5)=1; */ IO0DIR &= 0xFFFF00FF; /* 禁止數(shù)據(jù)輸出 */ mDelay1_2uS( ); /* 至少延時(shí)1.2uS */ }

UINT8 xReadCH375Data( void ) /* 外部定義的被CH375程序庫(kù)調(diào)用的子程序,從CH375讀數(shù)據(jù) */ { UINT8 mData; mDelay1_2uS( ); /* 至少延時(shí)1.2uS */ IO0DIR &= 0xFFFF00FF; /* 讀操作所以數(shù)據(jù)輸入 */ IO0CLR |= 0x000000B0; /* 輸出有效讀控制信號(hào), 讀CH375芯片的數(shù)據(jù)端口, A0(P0.4)=0; CS(P0.7)=0; WR=(P0.6)=1; RD(P0.5)=0; */ IO0DIR = IO0DIR; IO0DIR = IO0DIR; /* 該操作無(wú)意義,僅作延時(shí),CH375要求讀寫脈沖寬度大于100nS */ mData = (UINT8)( IO0PIN >> 8 ); /* 從CH375的并口P0.15-P0.8輸入數(shù)據(jù) */ IO0SET |= 0x000000E0; /* 輸出無(wú)效的控制信號(hào), 完成操作CH375芯片, A0(P0.4)=0; CS(P0.7)=1; WR=(P0.6)=1; RD(P0.5)=1; */ return( mData ); }

/* 在P0.2連接一個(gè)LED用于監(jiān)控演示程序的進(jìn)度,低電平LED亮 */ #define LED_OUT_INIT( ) { IO0DIR |= 0x04; } /* P0.2 高電平為輸出方向 */ #define LED_OUT_ACT( ) { IO0CLR |= 0x04; } /* P0.2 低電平驅(qū)動(dòng)LED顯示 */ #define LED_OUT_INACT( ) { IO0SET |= 0x04; } /* P0.2 低電平驅(qū)動(dòng)LED顯示 */

/* 延時(shí)指定毫秒時(shí)間,根據(jù)單片機(jī)主頻調(diào)整,不精確 */ void mDelaymS( UINT32 ms ) { UINT32 i; while ( ms -- ) for ( i = 25000; i != 0; i -- ); }

/* 檢查操作狀態(tài),如果錯(cuò)誤則顯示錯(cuò)誤代碼并停機(jī) */ void mStopIfError( UINT8 iError ) { if ( iError == ERR_SUCCESS ) return; /* 操作成功 */ _printf( "Error: %02X\n", (UINT16)iError ); /* 顯示錯(cuò)誤 */ while ( 1 ) { LED_OUT_ACT( ); /* LED閃爍 */ mDelaymS( 100 ); LED_OUT_INACT( ); mDelaymS( 100 ); } }

/* 為printf和getkey輸入輸出初始化串口 */ void mInitSTDIO( ) { UINT32 x; PINSEL0 = PINSEL0 & 0xFFFFFFF0 | 0x00000005; // 設(shè)置I/O連接到UART0 U0LCR = 0x80; // DLAB位置1 x = (Fpclk>>4)/9600; // 9600bps U0DLM = x>>8; U0DLL = x&0xff; U0LCR = 0x03; // 8位數(shù)據(jù)位,1位停止位,無(wú)奇偶校驗(yàn) U0FCR = 0x01; }[Emot]1[/Emot][Emot]20[/Emot][Emot]20[/Emot][Emot]20[/Emot]

void xWriteCH375Cmd( UINT8 mCmd ) void xWriteCH375Data( UINT8 mData ) UINT8 xReadCH375Data( void ) 把這三個(gè)函數(shù)改成串口接收發(fā)送。 void CH375_PORT_INIT( ) 修改為初始化串口


您好,紅桃六。我的問題就是該怎么改,我是一個(gè)初學(xué)者,問的問題比較幼稚,還望您不要嫌麻煩!串口只要用到三個(gè)腳就行了#int,rxd,txd,到底該怎么設(shè)置這三個(gè)腳呢???


就是初始化串口。 這樣吧,如果你不太了解,你先在你用的單片機(jī)上,做一個(gè)串口收發(fā)的實(shí)驗(yàn)。


這個(gè)實(shí)驗(yàn)已經(jīng)做成功了,單片機(jī)串口已經(jīng)初始化成功了,就是我買的ch375b怎么初始化,只能下載到并口初始化,那串口怎么辦


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频