?? ch10-2s.c
字號:
/*例10-2發(fā)送機(jī)源程序*/
#include <reg51.h>
#define COUNT 10 /* 定義發(fā)送緩沖區(qū)大小 */
#define NODE_ADDR 64 /* 定義目的節(jié)點(diǎn)地址 */
unsigned char buffer[COUNT]; /* 定義發(fā)送緩沖區(qū) */
int pointer; /* 定義當(dāng)前位置指針 */
main() {
/* 發(fā)送緩沖區(qū)初始化 */
while(pointer<COUNT) {
buffer[pointer]='A'+pointer;
pointer++;
}
/* 初始化串行口和波特率發(fā)生器 */
SCON=0xc0;
TMOD=0x20;
TH1=0xfd;
TH1=0xfd;
TR1=1;
ET1=0;
ES=1;
EA=1;
pointer=-1;
/* 發(fā)送地址幀 */
TB8=1;
SBUF=NODE_ADDR;
/* 等待全部數(shù)據(jù)幀發(fā)送完畢 */
while(pointer<COUNT);
/* ...... */
}
/* 發(fā)送中斷服務(wù)函數(shù) */
void send(void) interrupt 4 using 3 {
/* 清發(fā)送中斷標(biāo)志并修改發(fā)送緩沖區(qū)當(dāng)前位置指針 */
TI=0;
pointer++;
/* 如果全部數(shù)據(jù)發(fā)送完畢則返回, 否則發(fā)送一幀數(shù)據(jù) */
if(pointer>=COUNT) return;
else {
TB8=0; /* 設(shè)置數(shù)據(jù)幀標(biāo)志 */
SBUF=buffer[pointer]; /* 啟動發(fā)送 */
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -