|
0.png (5.31 KB, 下載次數(shù): 37)
下載附件
2018-11-17 15:19 上傳
單片機(jī)源程序如下:
- //采用異步方式傳送數(shù)據(jù),偶校驗,一位結(jié)束位,傳輸?shù)臄?shù)據(jù)傳輸速率為9600bit/s。每個數(shù)據(jù)幀包含10Byte信息,1Byte作為幀起始標(biāo)志,8Byte數(shù)據(jù),1Byte的校驗和。
- //-----------------------函數(shù)聲明,變量定義--------------------------------------------------------
- #include <reg51.h>
- #define COUNT 10 // 定義接收緩沖區(qū)大小
- unsigned char buffer[COUNT]; //定義接收緩沖區(qū)
- unsigned char point; //定義接收數(shù)據(jù)個數(shù)指示變量
- void UART_init(); //串口初始化函數(shù)
- void COM_send(void); //串口接收函數(shù)
- unsigned char CLU_checkdata(void); //計算校驗位函數(shù)
- //--------------------------------------------------------------------------------------------------
- // 函數(shù)名稱: UART_init()串口初始化函數(shù)
- // 函數(shù)功能: 在系統(tǒng)時鐘為11.059MHZ時,設(shè)定串口波特率為9600bit/s
- // 串口接收中斷允許,發(fā)送中斷禁止
- //初始化串行口和波特率發(fā)生器
- //--------------------------------------------------------------------------------------------------
- void UART_init()
- {
- SCON =0x58; //選擇串口工作方式,打開接收允許
- TMOD =0x21; //定時器1工作在方式2,定時器0工作在方式1
- TH1 =0xfd; //實現(xiàn)波特率9600(系統(tǒng)時鐘11.0592MHZ)
- TR1 =1; //啟動定時器T1
- ET1 =0;
- ES=1; //允許串行口中斷
- PS=1; //設(shè)計串行口中斷優(yōu)先級
- EA =1; //單片機(jī)中斷允許
- }
- //--------------------------------------------------------------------------------------------------
- // 函數(shù)名稱: com_interrup()串口接收中斷處理函數(shù)
- // 函數(shù)功能: 接收包括起始位'S'在內(nèi)的十位數(shù)據(jù)到數(shù)據(jù)緩沖區(qū)
- //--------------------------------------------------------------------------------------------------
- com_interrupt(void) interrupt 4 using 3
- {
- unsigned char RECEIVR_buffer;
- if(RI) //處理接收中斷
- {
- RI=0; //清除中斷標(biāo)志位
- RECEIVR_buffer=SBUF; //接收串口數(shù)據(jù)
- if(point==0) //如果還沒有接收到起始位
- {
- if(RECEIVR_buffer=='S') //判斷是否起始標(biāo)志位
- point++; //是準(zhǔn)備接收下一位
- else
- point=0; //不是,繼續(xù)等待起始位
- }
- else if(point>0&&point<10) //判斷是否接收夠十位數(shù)據(jù)
- buffer[point++]=RECEIVR_buffer; //不夠,把接收到的數(shù)據(jù)放入接收緩存區(qū)
- else point=0; //緩沖區(qū)已滿,清除緩存區(qū)內(nèi)數(shù)據(jù)重新接收
- }
- If(TI) //處理發(fā)送中斷
- {
- TI=0;
- }
- }
- //--------------------------------------------------------------------------------------------------
- // 函數(shù)名稱: COM_send()串口發(fā)送函數(shù)
- // 函數(shù)功能: 把數(shù)據(jù)緩沖區(qū)的十位數(shù)據(jù)發(fā)送出去
- //--------------------------------------------------------------------------------------------------
- void COM_send(void)
- {
- for(point=0;point<=10,TI=1;point++) //連續(xù)發(fā)送十位數(shù)據(jù)
- {
- SBUF=buffer[point]; //把緩存區(qū)的數(shù)據(jù)都發(fā)送到串口
- TI=0;
- }
- }
- //--------------------------------------------------------------------------------------------------
- // 函數(shù)名稱: CLU_checkdata()計算校驗位函數(shù)
- // 輸入變量: 無
- // 輸出變量: checkdata,包括起始位在內(nèi)的前九位數(shù)據(jù)的校驗和
- // 函數(shù)功能: 計算校驗和
- //--------------------------------------------------------------------------------------------------
- unsigned char CLU_checkdata(void)
- { //計算校驗位
- unsigned char checkdata=0;
- for(point=0;point<9,TI=1;point++)
- {
- checkdata=checkdata|buffer[point];
- }
- return(checkdata);
- }
- //--------------------------------------------------------------------------------------------------
- // 函數(shù)名稱: 主函數(shù)
- // 函數(shù)功能: 調(diào)度各子函數(shù),完成通信過程
- //--------------------------------------------------------------------------------------------------
- void main(void)
- {
- unsigned char checkdata;
- do
- {
- UART_init(); //初始化串口
- if(point==10) //判斷數(shù)據(jù)是否接收完成
- checkdata=CLU_checkdata; //調(diào)用求校驗和函數(shù)
- if(checkdata==buffer[9]) //判斷校驗和是否正確
- COM_send(); //正確則調(diào)用發(fā)送程序
- point=0;
- }
- while(1);
- }
復(fù)制代碼
所有資料51hei提供下載:
|
-
-
6.2 PC機(jī)與單片機(jī)串口通信.zip
2018-11-17 10:08 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
4.62 KB, 下載次數(shù): 157, 下載積分: 黑幣 -5
-
-
6.1 PC機(jī)與PC機(jī)串口通信.zip
2018-11-17 10:16 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
3.1 KB, 下載次數(shù): 43, 下載積分: 黑幣 -5
-
-
6.3 PC機(jī)與智能儀器串口通信.zip
2018-11-17 10:16 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
4.39 KB, 下載次數(shù): 49, 下載積分: 黑幣 -5
-
-
6.4 PC機(jī)與PLC串口通信.zip
2018-11-17 10:16 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
4.89 KB, 下載次數(shù): 42, 下載積分: 黑幣 -5
-
-
6.5 PC機(jī)與GSM短信模塊串口通信.zip
2018-11-17 10:16 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
32.72 KB, 下載次數(shù): 40, 下載積分: 黑幣 -5
評分
-
查看全部評分
|