PIC18单片机模拟UART
#include "..\include.h"
#include "..\Utility\TM_Util.h"
#include "..\Utility\ERR_Sys.h"
#include "PIC18_UART.h"
#include "gobal_ram.h"
//==================================================================
===========
unsigned char m_TXBUF; //(È??Ö)Ä?Äâ??ËÍ?º?å×Ö?Ú unsigned char m_RXBUF; //(È??Ö)Ä?Äâ?ÓÊÕ?º?å×Ö?Ú unsigned char m_TX_BIT9;
//(È??Ö)Ä?Äâ??Ë͵Ú?ÅÎ?
unsigned char m_RX_BIT9;
//(È??Ö)Ä?Äâ?ÓÊÕµÚ?ÅÎ?
unsigned char p_m_TXBUF; //(È??Ö)??ËÍÖ?Õë unsigned char p_m_RXBUF; //(È??Ö)?ÓÊÕÖ?Õë
unsigned char m_8_OR_9;
//(È??ÖÊÕ??Ä?Ê??êÖ??º1Ϊ9Î?ÊÕ????0Î?8Î?ÊÕ??
//bit m_TXIF;
//(È??Ö??ËÍÍê?êÖ?(1??ËÍÍê??0ÕýÔÚ??)
unsigned char m_TX_enble; //??ËÍÔÊÐí
unsigned char m_RCIF;
//(È??Ö?ÓÊÕÍê?êÖ?(1?ÓÊÕÍê??0ÔÚ?ÓÊÕ?òµÈ?ý?ÓÊÕ) unsigned char m_RX_enble; //?ÓÊÕÔÊÐí
unsigned char m_BT_reLoad_H; //(È??ÖÊ?ÖÓ1?õÖµÖØÔØ_H unsigned char m_BT_reLoad_L; //(È??ÖÊ?ÖÓ1?õÖµÖØÔØ_L //==================================================================
====
//?º?åÇø
unsigned int TIMER_M_BYTE_OVER_count; //Ä?Äâ×Ö?Ú??Ê??ÆÊ? unsigned char M_RXBuf[M_RX_PKG_LEN]; //Ä?Äâ?ü?º?åÇø unsigned char p_M_RXBuf;
//Ä?Äâ?ü?º?åÇøÖ?Õë
unsigned char Flag_M_byte_time; //Ä?Äâ×Ö?Ú?ä?ô?ÆÊ??êÖ?
unsigned char Flag_M_PKG_Over;
//Ä?Äâ?ü?áÊø(1ΪÊÕÍêÒ??ü??0Î?ÊÕÍê)
//------------------------------------------------------------------
-----------
//?õÊ???Ä?Äâ???Ú
//Bt: ??ÌØÂÊ?úÂë
//Flag89: 9Î???ÊÇ8Î?ÊÕ??
Shen Longbao look in the eyes, for a chance to kill him. Shen Longbao behind smart to keep gendarmes, picked up a brick reservoir in cotton vest, walked into a small alley corner, seeing four weeks nobody will step up and pulled out bricks Asahi on military police knocked down. Unsuspecting Japanese military police was flaccid paralysis. Shen Longbao picked the Japanese military police gun in cotton vest, leave
void Init_m_usart(unsigned long Foc, unsigned long Bt, unsigned char Flag89)
{
//×Ö?Ú???Ö
//=========================================================
//?õÊ???È??ÖÄÚ?æ?äÁ?
if(Flag89)
{
m_8_OR_9=1;
}
else
{
m_8_OR_9=0;
}//9Î??ÓÊÕ?êÖ?
p_m_TXBUF=0; //??ËÍ?õÊ?
p_m_RXBUF=0; //?ÓÊÕ?õÊ?
//m_TXIF=1; //?õÊ???ËÍÍê
m_TX_enble=0; //??ËÍÔÊÐí????ÔÊÐí??
m_RCIF=0; //?õÊ?µÈ?ý?ÓÊÕ
m_RX_enble=0; //?ÓÊÕÔÊÐí????ÔÊÐí??
//?õÊ???ÌØÂÊÊ?ÖÓT1
//m_BT_reLoad_H=0xEE; //(È??ÖÊ?ÖÓ1?õÖµÖØÔØ_H 11.0592M 600
//m_BT_reLoad_L=0x00; //(È??ÖÊ?ÖÓ1?õÖµÖØÔØ_L
// m_BT_reLoad_H=0xFC; //(È??ÖÊ?ÖÓ1?õÖµÖØÔØ_H 11.0592M 1200 ----------------????×?È? ??
// m_BT_reLoad_L=0xE0; //(È??ÖÊ?ÖÓ1?õÖµÖØÔØ_L ----------------????×?È? ??
//m_BT_reLoad_H=0xFD; //(È??ÖÊ?ÖÓ1?õÖµÖØÔØ_H 11.0592M 2400
//m_BT_reLoad_L=0xFF; //(È??ÖÊ?ÖÓ1?õÖµÖØÔØ_L
m_BT_reLoad_H=0xFE; //(È??ÖÊ?ÖÓ1?õÖµÖØÔØ_H 11.0592M 4800
m_BT_reLoad_L=0x1F; //(È??ÖÊ?ÖÓ1?õÖµÖØÔØ_L
// m_BT_reLoad_H=0xFF; //(È??ÖÊ?ÖÓ1?õÖµÖØÔØ_H 11.0592M 9600
//m_BT_reLoad_L=0x3F; //(È??ÖÊ?ÖÓ1?õÖµÖØÔØ_L
//m_BT_reLoad_H=0xFF; //(È??ÖÊ?ÖÓ1?õÖµÖØÔØ_H 11.0592M 14400 ----------------????×?È? ??
//m_BT_reLoad_L=0xB4; //(È??ÖÊ?ÖÓ1?õÖµÖØÔØ_L ----------------????×?È? ??
//m_BT_reLoad_H=(FULL_U16-Foc/(4*Bt))/FULL_U8;
//m_BT_reLoad_L=(FULL_U16-Foc/(4*Bt))%FULL_U8; Shen Longbao look in the eyes, for a chance to kill him. Shen Longbao behind smart to keep gendarmes, picked up a brick reservoir in cotton vest, walked into a small alley corner, seeing four weeks nobody will step up and pulled out bricks Asahi on military police knocked down. Unsuspecting Japanese military police was flaccid paralysis. Shen Longbao picked the Japanese military police gun in cotton vest, leave
T1CON=1; //???ÖƵ,Ê?ÖÓ?ªÆðÀ?
//m_BT_reLoad_H=0x00; //(È??ÖÊ?ÖÓ1?õÖµÖØÔØ_H
//m_BT_reLoad_L=0x00; //(È??ÖÊ?ÖÓ1?õÖµÖØÔØ_L
//T1CON=0x31; //???ÖƵ,Ê?ÖÓ?ªÆðÀ?
TMR1H=m_BT_reLoad_H;
TMR1L=m_BT_reLoad_L;
TMR1IE=1; //ÔÊÐíÊ?ÖÓ1ÖÐ?Ï
//Ä?Äâ???ÚµÄ?ÚÏßÊäÈëÊä?öÀàÐÍÉè??
IOStyle_TX_Line=0; //??ËÍ?ÚÏßÀàÐÍ ??Êä?ö??
TX_Line=1; //??ËÍ?ÚÏß ???ß??
IOStyle_RX_Line=0; //?ÓÊÕ?ÚÏßÀàÐÍ ??Êä?ö??
RX_Line=1; //?ÓÊÕ?ÚÏß ???ß??
IOStyle_RX_Line=1; //?ÓÊÕ?ÚÏßÀàÐÍ ??ÊäÈë??
//?ÓÊÕÍâ??ÖÐ?Ï(PB?Ë?ÚµçÆ??ä??)?ªÆðÀ?
RBIF=0;
RBIE=1;
//============================================================
===
//?ü???Ö
//============================================================
===
TIMER_M_BYTE_OVER_count=0; //Ä?Äâ×Ö?Ú??Ê??ÆÊ?
p_M_RXBuf=0; //Ä?Äâ?ü?º?åÇøÖ?Õë
Flag_M_PKG_Over=0;
//Ä?Äâ?ü?áÊø(1ΪÊÕÍêÒ??ü??0Î?ÊÕÍê)
Flag_M_byte_time=0; //Ä?Äâ×Ö?Ú?ä?ô?ÆÊ??êÖ?
//============================================================
===
}
//------------------------------------------------------------------
---------
//Ä?Äâ???Ú??ËÍ×Ö?Ú
//Ch: Òª??Ë͵Ä×Ö?Ú
void m_putch(unsigned char Ch)
{
RBIE=0;
RBIF=0;
///////////////////////////////
m_TXBUF=Ch;
unsigned char dBuf[20] ;
//INT16U dLen=sprintf(&dBuf[0],"m_putch(Ch)=%u\n",Ch);
//UART1_SendConstS(dBuf);
//ÈÃÍ?Ö?Î????ÖÒ??ö??ÌØ?íµÄ?ßµçÆ?
Shen Longbao look in the eyes, for a chance to kill him. Shen Longbao behind smart to keep gendarmes, picked up a brick reservoir in cotton vest, walked into a small alley corner, seeing four weeks nobody will step up and pulled out bricks Asahi on military police knocked down. Unsuspecting Japanese military police was flaccid paralysis. Shen Longbao picked the Japanese military police gun in cotton vest, leave
p_m_TXBUF=0;
m_TX_enble=1;
while(m_TX_enble);
///////////////////////////////
RBIF=0;
RBIE=1;
}
//------------------------------------------------------------------
--------
//Ä?Äâ?ü?ÓÊÕ?éÑ??þÎñ
//ÔÚ????ÖÐÖ?ÐÐ
//Æð??
void SERVER_M_PKG_REC(void)
{
//ÊÕµ?ÐÂ×Ö?Ú
if(m_RCIF)
{
if(!Flag_M_PKG_Over)
{
// UART1_SendConstS("SERVER_M_PKG_REC \n");
//======================================
//Çå×Ö?Ú?ä??Ê?Æ?
TIMER_M_BYTE_OVER_count=0;
Flag_M_byte_time=1;
//======================================
//?ÀÖ?Ô??ç
if(M_RX_PKG_LEN==p_M_RXBuf) p_M_RXBuf--;
//?ÓÊÕ
M_RXBuf[p_M_RXBuf++]=m_RXBUF;
//======================================
}
m_RCIF=0;
}
}
//------------------------------------------------------------------
--------
//ÊÕ????ÌØ??µçÆ?ÖÐ?Ï?þÎñ
void M_USART_INTFACE(void)
{
char dBuf[20];
//Ê?ÖÓ1ÖÐ?Ï
if(TMR1IF)
{
// UART1_SendConstS("TMR1IF \n");
//ÖØÈë
TMR1IF=0;
TMR1H=m_BT_reLoad_H;
Shen Longbao look in the eyes, for a chance to kill him. Shen Longbao behind smart to keep gendarmes, picked up a brick reservoir in cotton vest, walked into a small alley corner, seeing four weeks nobody will step up and pulled out bricks Asahi on military police knocked down. Unsuspecting Japanese military police was flaccid paralysis. Shen Longbao picked the Japanese military police gun in cotton vest, leave
TMR1L=m_BT_reLoad_L;
//??ËÍÊ?Ðò
if(m_TX_enble)
{
// UART1_SendConstS("m_TX_enble \n");
if(0==p_m_TXBUF)
{
TX_Line=0;
p_m_TXBUF++;
}
else if(p_m_TXBUF<9)
{
// UART1_SendConstS("else if(p_m_TXBUF<9) \n");
if(1&m_TXBUF)
{ //
UART1_SendConstS("TX_Line=1\n");
TX_Line=1;
}
else
{
//UART1_SendConstS("TX_Line=0\n");
TX_Line=0;
}
m_TXBUF>>=1;
p_m_TXBUF++;
}
else if(9==p_m_TXBUF)
{ //
UART1_SendConstS("ÊÇ?ñÒª??µÚ?ÅÎ? \n");
//ÊÇ?ñÒª??µÚ?ÅÎ?
if(m_8_OR_9)
{
TX_Line=m_TX_BIT9;
}
else
{
//Í?Ö?
TX_Line=1;
}
p_m_TXBUF++;
}
else if(10==p_m_TXBUF)
{ // UART1_SendConstS("Í?Ö? \n");
//Í?Ö?
TX_Line=1;
p_m_TXBUF++;
}
else
{ // UART1_SendConstS("??Íê?êÖ? \n");
//??Íê?êÖ?
m_TX_enble=0;
}
Shen Longbao look in the eyes, for a chance to kill him. Shen Longbao behind smart to keep gendarmes, picked up a brick reservoir in cotton vest, walked into a small alley corner, seeing four weeks nobody will step up and pulled out bricks Asahi on military police knocked down. Unsuspecting Japanese military police was flaccid paralysis. Shen Longbao picked the Japanese military police gun in cotton vest, leave
}
//?ÓÊÕÊ?Ðò
if(m_RX_enble)
{
// UART1_SendConstS("m_RX_enble \n");
if(p_m_RXBUF<8)
{
// UART1_SendConstS("if(p_m_RXBUF<8) \n");
m_RXBUF>>=1;
if(RX_Line)
{
// UART1_SendConstS("?ÓÊÕµ? 1 \n");
m_RXBUF|=0x80;
}
/* else
{
UART1_SendConstS("?ÓÊÕµ? 0 \n");
} */
//
p_m_RXBUF++;
}
else
{
// UART1_SendConstS("if(p_m_RXBUF>=8) \n");
//ÊÇ?ñÒªÊÕµÚ?ÅÎ?
if(m_8_OR_9)
{
m_RX_BIT9=RX_Line;
}
//?ÓÊÕ?áÊø
m_RX_enble=0;
p_m_RXBUF=0;
//?ª?ì?âÖÐ?Ï
RBIF=0;
RBIE=1;
//////////////////////////////////////
m_RCIF=1;
//Ä?Äâ?ÓÊÕµ?ÐÂÊý?Ý?êÖ?
//////////////////////////////////////
}
}
//Ä?Äâ×Ö?Ú?ä??Ê?
if(Flag_M_byte_time)
{
// UART1_SendConstS("Flag_M_byte_time \n");
TIMER_M_BYTE_OVER_count++;
Shen Longbao look in the eyes, for a chance to kill him. Shen Longbao behind smart to keep gendarmes, picked up a brick reservoir in cotton vest, walked into a small alley corner, seeing four weeks nobody will step up and pulled out bricks Asahi on military police knocked down. Unsuspecting Japanese military police was flaccid paralysis. Shen Longbao picked the Japanese military police gun in cotton vest, leave
if(TIMER_M_BYTE_OVER_count>TIMER_M_BYTE_OVER)
{ //
UART1_SendConstS("if(TIMER_M_BYTE_OVER_count>TIMER_M_BYTE_OVER) \n");
//×Ö?Ú??Ê?ÁË??Ò??ü?áÊø
Flag_M_byte_time=0;
Flag_M_PKG_Over=1;
}
// INT16U
dLen=sprintf(&dBuf[0],"TIMER_M_BYTE_OVER_count=%u\n",TIMER_M_BYTE_OV
ER_count);
// UART1_SendConstS(dBuf);
}
}
//============================================================
=
//Ä?Äâ?Ë?Ú?ÓÊÕÖÐ?ÏÆðÊ?
if(RBIE)
{
if(RBIF)
{
// UART1_SendConstS("Ä?Äâ?Ë?Ú?ÓÊÕÖÐ?ÏÆðÊ? \n");
RBIF=0;
if(0==p_m_RXBUF)
{
// UART1_SendConstS("if(0==p_m_RXBUF) \n");
if(!RX_Line)
{
// UART1_SendConstS("RX_Line==0 ?ØÖÐ?Ï \n");
m_RXBUF=0;
TMR1IF=0;
TMR1H=m_BT_reLoad_H;
TMR1L=m_BT_reLoad_L;
//?Ø?ì?âÖÐ?Ï
RBIE=0;
//ÆðÊ?Î?µ?ÁË
m_RX_enble=1;
//ÖØÈëÄ?Äâ??ÌØÂÊ
}
/* else
{
UART1_SendConstS("RX_Line==1 ÖÐ?Ï \n");
} */
}
}
}
//====================================================
Shen Longbao look in the eyes, for a chance to kill him. Shen Longbao behind smart to keep gendarmes, picked up a brick reservoir in cotton vest, walked into a small alley corner, seeing four weeks nobody will step up and pulled out bricks Asahi on military police knocked down. Unsuspecting Japanese military police was flaccid paralysis. Shen Longbao picked the Japanese military police gun in cotton vest, leave
//Ä?Äâ?ü?ÓÊÕ?éÑ??þÎñ
//ÔÚ????ÖÐÖ?ÐÐ
//Æð??
SERVER_M_PKG_REC();
//=================================================== }
Shen Longbao look in the eyes, for a chance to kill him. Shen Longbao behind smart to keep gendarmes, picked up a brick reservoir in cotton vest, walked into a small alley corner, seeing four weeks nobody will step up and pulled out bricks Asahi on military police knocked down. Unsuspecting Japanese military police was flaccid paralysis. Shen Longbao picked the Japanese military police gun in cotton vest, leave
本文档为【PIC18单片机模拟UART】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。