?? serial_port.c
字號:
/*---------------------------------------------------
serial_port.c file
Creat by Computer-lov Date: 2005.7.19
Last edit date:2005.11.17
Copyright(C) 2005-2015 Computer-lov
All rights reserved
Welcome to my Blog: Http://computer00.21ic.org
-----------------------------------------------------*/
#include <serial_port.h>
#include <hardware.h>
unsigned char Sending;
//**************************************************************************************
void InitComport(void) //串口初始化函數,使用11.0592M晶體
{
EA=0;
TMOD=0x21; //定時器0工作在模式1,定時器1工作在模式2
SCON=0x50; //串口工作在模式1
TCON=0x05;
TH1=0xFF; //57600bps
TL1=0xFF;
// TH1=0xE8;
// TL1=0xE8;
PCON=0x80; //串口波特率加倍
ES=1; //串行中斷允許
TR1=1; //啟動定時器1
REN=1; //允許接收
EA=1; //允許中斷
}
//****************************************************************************************
unsigned char Buffer[10];
unsigned char OK;
unsigned char Cancel;
//******************************* 串口中斷處理 ***********************************
void SerialPort(void) interrupt 4
{
unsigned char i;
if(RI) //收到數據
{
RI=0; //清中斷請求
if(SBUF=='T') //收到請求連接的命令
{
TI=0;
SBUF='A'; //則返回A應答
while(!TI); //等待發送完畢
TI=0;
}
if(SBUF=='C') //接收到取消命令
{
TI=0;
Cancel=1; //取消置1
}
if(SBUF==0xAA) //0xAA、0x55表示參數開始
{
while(!RI); //等待下一個數據
RI=0;
if(SBUF==0x55) //要連續收到0xAA和0x55后才能開始接收參數
{
for(i=0;i<10;i++) //連續接收10個參數
{
while(!RI);
RI=0;
Buffer[i]=SBUF; //數據保存在Buffer中
}
while(!RI);
RI=0;
if(SBUF==0x55) //參數包以0x55結束,如果是,則表示參數接收正確
{
OK=1; //則OK置1
Cancel=0;
return;
}
else //若包尾錯誤,則OK置0
{
OK=0;
return;
}
}
else
{
return;
}
}
return;
}
else //發送完一字節數據
{
TI=0;
Sending=0; //清正在發送標志
}
}
//*****************************************************************************************
//*****************************************************************************************
void SendToComport(unsigned char d) //往串口發送一字節數據
{
Sending=1;
SBUF=d;
while(Sending);
}
//*****************************************************************************************
//*****************************************************************************************
//發送一個字符串
/*
void prints(unsigned char * pd,unsigned char line_feed)
{
while((*pd)!='\0')
{
SendToComport(*pd);
pd++;
}
if(line_feed)
{
SendToComport(13);
SendToComport(10);
}
}
*/
//****************************************************************************************
//****************************************************************************************
//將16bit的數分成4個4bit的發送
void PrintHex(unsigned int x)
{
SendToComport((x>>12)&0x0F);
SendToComport((x>>8)&0x0F);
SendToComport(((unsigned char)x>>4)&0x0F);
SendToComport((unsigned char)x&0x0F);
}
//*****************************************************************************************
//*****************************************************************************************
/*
void PrintLongInt(unsigned long int x) //將整數轉按十進制字符串發送
{
signed char i;
unsigned char display_buffer[10];
display_buffer[10]=0;
for(i=9;i>=0;i--)
{
display_buffer[i]='0'+x%10;
x/=10;
}
for(i=0;i<9;i++)
{
if(display_buffer[i]!='0')break;
}
for(;i<10;i++)SendToComport(display_buffer[i]);
}
*/
//*****************************************************************************************
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -