?? serial.h
字號:
//頭略
#ifndef __SERIAL_H__
#define __SERIAL_H__
/************************************變量定義*******************************/
xdata uchar temp[256]; //數據緩沖區數組
idata uchar receive0[128]; //接收數據緩沖區數組
idata uchar receive1[1]; //接收數據緩沖區數組
idata uchar receive2[1]; //接收數據緩沖區數組
uchar send[]={0xaa,0x03,0x31,0x33,0x39,0x31,0x33,0x39,0x39,0x31,0x36,0x34,0x39,0x03,0x41,0x5a,0x00,0xff};
bit charendf=0; //發送數據結束標志
uchar usemark=0; //使用eep區標志
uchar datacounter=0; //緩沖區接收計數
uchar secondcopy; //最后接收時間標志
extern bit tiaoshi; //調試程序標志
extern bit slimitf; //
extern uchar timer;
extern uchar second;
extern uchar minute;
extern uchar hour;
extern uchar state;
//bit comrespondf=0;//接收命令回復標志
/*extern uchar receive0[];
extern uchar send[];
extern uchar datacount;*/
//接口定義
/************************************串口初始化**********************************/
void serial_init(void)
{
PCON&=0x7F; //無雙倍波特率
SCON=0x70; //10位UART,允許接收數據
IE|=0x90; //開串行中斷
TMOD&=0x0F;
TMOD|=0x20; //T1工作方式2
TL1=0xfa; //初值250
TH1=0xfa;
TR1=1; //定時器開
}
/*********************************主動發送一個字節*******************************/
void serl_snd_code(uchar scode)
{
charendf=1;
SBUF=scode;
}
/*********************************主動發送一串字符*******************************/
void serl_snd_string(uchar *str)
{
while(*str!=0xff)
{
serl_snd_code(*str++);
while(charendf);
}
}
/**********************************串行中斷(接收)********************************/
void serl_rec_code(void) interrupt 4
{
//lightflag=0;
if(TI)
{
charendf=0;
TI=0;
}//發送中斷
if(RI)//接收中斷
{
slimitf=1;
/*
switch(usemark)
{
case 0:receive0[datacounter++]=SBUF;break;
case 1:receive1[datacounter++]=SBUF;break;
case 2:receive2[datacounter++]=SBUF;break;
default:break;
}*/
temp[datacounter++]=SBUF;
if(datacounter>253)
{
tiaoshi=1;
lightflag=0;
}
secondcopy=second;//刷新最后接收時間
RI=0;
}
}
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -