?? 51通訊程序
字號:
#include <reg51.h>
#include <string.h>
//sbit BT_SND =P0^0;
//sbit BT_REC =P1^1;
sbit P_RXD = P0^0; //數據發送端
sbit P_READY = P0^1; //READY,準備好數據接收狀態指示 "0",Ready Status;"1",Busy Status
sbit P_RESET = P0^2; //語音板復位端
sbit WATCH_DOG = P2^6;
/**********************************************
IO 口模擬232通訊程序 占用定時器0
**********************************************/
//#define MODE_QUICK
//#define F_TM TF0
#define TIMER0_ENABLE /* TL0=TH0;*/ TR0=1;
#define TIMER0_DISABLE TR0=0;
sbit ACC0= ACC^0;
sbit ACC1= ACC^1;
sbit ACC2= ACC^2;
sbit ACC3= ACC^3;
sbit ACC4= ACC^4;
sbit ACC5= ACC^5;
sbit ACC6= ACC^6;
sbit ACC7= ACC^7;
unsigned char flag;
void wait(void)
{
int i;
for(i=0;i<20;i++)
{ ;}
}
void IntTimer0() interrupt 1 using 0
{
flag=1;
}
//發送一個字符
void PSendChar(unsigned char t)
{ int i;
unsigned char text,te;
TL0=0XA0;
ACC=t;
TIMER0_ENABLE; P_RXD=0; flag=0; while(flag==0); //啟動位
P_RXD=ACC0; flag=0; while(flag==0);//先送出低位
P_RXD=ACC1; flag=0; while(flag==0);
P_RXD=ACC2; flag=0; while(flag==0);
P_RXD=ACC3; flag=0; while(flag==0);
P_RXD=ACC4; flag=0; while(flag==0);
P_RXD=ACC5; flag=0; while(flag==0);
P_RXD=ACC6; flag=0; while(flag==0);
P_RXD=ACC7; flag=0; while(flag==0);
P_RXD=1; flag=0; while(flag==0);//停止位
// P_RXD=1; flag=0; while(flag==0);//停止位
while(P_READY==1)
{
wait(); //直到接收準備好
WATCH_DOG=!WATCH_DOG;
}
TIMER0_ENABLE; P_RXD=0; flag=0; while(flag==0);
text=t;
for(i=0;i<8;i++) //1個字節
{
te = (text&0x01); //取最低位
if(te!=1) P_RXD=0; //最低位不是1
else P_RXD=1; //最低位是1
text=text>>1; //最低位右移出,繼續判斷左邊1位
flag=0; while(flag==0);
}
// while(P_READY==1) wait();
P_RXD=1; flag=0; while(flag==0); //結束位
TIMER0_DISABLE; //停止timer
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -