欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機模擬串口程序源碼
[打印本頁]
作者:
promise
時間:
2017-3-14 11:47
標題:
51單片機模擬串口程序源碼
51單片機做的模擬串口程序源碼
0.png
(47.68 KB, 下載次數: 55)
下載附件
2017-3-15 04:47 上傳
#include "Usart.h"
bit RXD_OK=0; //接收完成標志位
bit TXD_OK=0; //發送完成標志位
bit Send_State=0; //發送開始標志位
bit Sending_Flag=0; //發送中標志位
uchar RXD_Data=0; //接收數據緩存區
uchar TXD_Data=0; //發送數據緩存區
sbit led1=P3^6;
sbit led2=P3^5;
sbit led3=P3^4;
/***************************************************************************
*函數名稱:Usart_Init(uint Baud)
*功能 :串口初始化 波特率對應定時器溢出初值(11.0592)
*入口參數:波特率 4800 192
*出口參數:無 2400 128
*說明 : 1200 0
***************************************************************************/
void Usart_Init(uint Baud)
{
uchar T0_Low=0;
T0_Low=(Crystal/(12*Baud))/3; //求出定時器初值 3倍采樣速率
TMOD|=0x02; //定時器0自動重裝模式
TH0=TL0=256-T0_Low;
ET0=TR0=1;
EA=1;
}
/***************************************************************************
*函數名稱:Data_RXD()
*功能 :數據接收
*入口參數:無
*出口參數:無
*說明 :
***************************************************************************/
void Data_RXD()
{
static uchar RXD_State=0;
static uchar RXD_Cnt=0;
static uchar RXD_Count=0;
switch (RXD_State)
{
case 0: //3倍采樣速率采起始位
{
if(RXD_IO==0)
RXD_State=1;
}break;
case 1: //采到兩次起始位
{ //采樣頻率校準到1/3與2/3之前
if(RXD_IO==0)
RXD_State=2;
else RXD_State=0;
}break;
case 2: //以正常波特率采樣,取出八位數據位
{
if(++RXD_Cnt>=3)
{
RXD_Cnt=0;
if(RXD_IO==1)
RXD_Data=RXD_Data|(1<<RXD_Count);
if(++RXD_Count>=8)
{
RXD_Count=0;
RXD_State=3;
}
}
}break;
case 3: //取出結束位
{ //結束位正常接收完成標志位置1
if(++RXD_Cnt>=3)
{
RXD_Cnt=0;
if(RXD_IO==1)
{
RXD_OK=1;
RXD_State=0;
}
else
{
RXD_Data=0;
RXD_State=0;
}
}
}break;
}
}
/***************************************************************************
*函數名稱:Data_TXD_Buff(uchar Data_TXD)
*功能 :數據送入發送緩存器
*入口參數:待發送數據
*出口參數:無
*說明 :
***************************************************************************/
void Data_TXD_Buff(uchar Data_TXD)
{
TXD_Data=Data_TXD; //數據送入緩存區
while(Sending_Flag);
Send_State=1; //發送開始標志位
}
/***************************************************************************
*函數名稱:Data_TXD()
*功能 :數據發送
*入口參數:待發送數據
*出口參數:無
*說明 :
***************************************************************************/
void Data_TXD()
{
static uchar TXD_State=0;
static uchar TXD_Cnt=0;
static uchar TXD_i=0;
if(++TXD_i>=3)
{
TXD_i=0;
switch (TXD_State)
{
case 0: //檢測發送開始標志位
{
TXD_IO=1;
if(Send_State==1)
{
Send_State=0;
TXD_State=1;
Sending_Flag=1; //發送中標志位置1
TXD_Cnt=0;
TXD_IO=0; //發送起始位
}
}break;
case 1: //發送八位數據
{ //八位數據從低到高發送
TXD_IO=TXD_Data&(1<<TXD_Cnt);
if(++TXD_Cnt>=8)
{
TXD_Cnt=0;
TXD_State=2;
}
}break;
case 2:
{
TXD_IO=1; //發送結束位
TXD_State=3;
}break;
case 3:
{
TXD_State=0;
Sending_Flag=0; //發送中標志位清0
TXD_Data=0;
TXD_OK=1;
}break;
}
}
}
/***************************************************************************
*函數名稱:TimerT0()
*功能 :定時器T0中斷
*入口參數:無
*出口參數:無
*說明 :
***************************************************************************/
void TimerT0()interrupt 1
{
Data_RXD();
Data_TXD();
}
復制代碼
0.png
(59.27 KB, 下載次數: 63)
下載附件
2017-3-15 04:48 上傳
下載:
模擬串口.zip
(41.61 KB, 下載次數: 88)
2017-3-14 11:47 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
趙會民
時間:
2018-4-16 21:52
正在找這個資料呢
作者:
huoguanglin107
時間:
2019-6-26 13:42
有硬件原理圖嗎
作者:
huoguanglin107
時間:
2019-6-26 13:43
有原理圖或者PCB文件嗎
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1