|
--------------------模擬串口發(fā)送數(shù)據(jù)--------------------
微信截圖_20180505214658.png (299.99 KB, 下載次數(shù): 89)
下載附件
2018-5-5 21:47 上傳
--------------------模擬串口雙機(jī)通信--------------------
微信截圖_20180505222720.png (383.73 KB, 下載次數(shù): 98)
下載附件
2018-5-5 22:29 上傳
微信截圖_20180505222747.png (218.78 KB, 下載次數(shù): 96)
下載附件
2018-5-5 22:29 上傳
作者:劉查理
已將代碼封裝為子函數(shù),使用簡單方便。
函數(shù)說明:(晶振頻率:11.0592Mhz)
//------------------------------------------------------------------------------------------------------
//SimUart_Config(波特率); //模擬串口配置,波特率為:4800,9600,19200
//SU_Send(8位數(shù)據(jù)); //發(fā)送8位數(shù)據(jù)
//SU_Read(); //接收比返回8位數(shù)據(jù)
//Clear_RxSbuf(); //清除接收緩存,每調(diào)用一次SU_Read就要使用一次,否則SU_Read將無法正常接收數(shù)據(jù)
//------------------------------------------------------------------------------------------------------
該程序支持4800,9600波特率半雙工串口通訊,支持19200波特率串口發(fā)送。
0.png (46.15 KB, 下載次數(shù): 95)
下載附件
2018-5-5 22:30 上傳
單片機(jī)源程序如下:
- #include "sim_uart.h"
- bit SU_TI,SU_RI;
- unsigned char tx_sbuf,tx_count,rx_sbuf,rx_count;
- void SimUart_Config(unsigned int baud)
- {
- switch(baud)
- {
- case(4800): TH0=TL0=60; break; //53-66
- case(9600): TH0=TL0=160; break; //155-166
- case(19200): TH0=TL0=208; break; //206-211
- }
- TMOD=0x02;
- EA=1;
- ET0=1;
- TR0=1;
- }
- void SU_Send(unsigned char byte)
- {
- tx_sbuf=byte;
- tx_count=0;
- SU_TI=1;
- while(SU_TI);
- }
- unsigned char SU_Read(void)
- {
- rx_count=0;
- SU_RI=1;
- while(SU_RI);
- return rx_sbuf;
- }
- void Clear_RxSbuf(void)
- {
- rx_sbuf=0;
- }
- //----------------------------------------------------
- // baud=4800or9600.
- //----------------------------------------------------
- void Simulative_Uart(void) interrupt 1
- {
- unsigned int i=65536;
- if(SU_TI)
- {
- if(!tx_count)
- SU_TXD=0;
- else if(tx_count<9)
- {
- SU_TXD=tx_sbuf&0x01;
- tx_sbuf=tx_sbuf>>1;
- }
- else if(tx_count==9)
- {
- SU_TXD=1;
- SU_TI=0;
- }
- tx_count++;
- }
- else if(SU_RI)
- {
- if(!rx_count)
- {
- TR0=0;
- while(SU_RXD||i--);
- TR0=1;
- rx_count++;
- }
- else if(rx_count<9)
- {
- rx_sbuf=rx_sbuf|SU_RXD;
- rx_sbuf=_cror_(rx_sbuf,1);
- rx_count++;
- }
- else if(rx_count==9)
- SU_RI=0;
- }
- }
- //----------------------------------------------------
- // baud=19200,TX_Mode
- //----------------------------------------------------
- //void Simulative_Uart(void) interrupt 1
- //{
- // if(SU_TI)
- // {
- // if(!tx_count)
- // SU_TXD=0;
- // else if(tx_count<9)
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
模擬串口(半雙工).rar
(1.24 KB, 下載次數(shù): 139)
2018-5-5 21:48 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|