?? serial.c
字號(hào):
//串口中斷服務(wù)程序,僅需做簡(jiǎn)單調(diào)用即可完成串口輸入輸出的處理
//出入均設(shè)有緩沖區(qū),大小可任意設(shè)置。
//可供使用的函數(shù)名:
//char getbyte(void);從接收緩沖區(qū)取一個(gè)byte,如不想等待則在調(diào)用前檢測(cè)inbufsign是否為1。
//putbyte(char c);放入一個(gè)字節(jié)到發(fā)送緩沖區(qū)
//putbytes(unsigned char *outplace,j);放一串?dāng)?shù)據(jù)到發(fā)送緩沖區(qū),自定義長(zhǎng)度
//putstring(unsigned char code *puts);發(fā)送一個(gè)定義在程序存儲(chǔ)區(qū)的字符串到串口
//puthex(unsigned char c);發(fā)送一個(gè)字節(jié)的hex碼,分成兩個(gè)字節(jié)發(fā)。
//putchar(uchar c,uchar j);發(fā)送一個(gè)字節(jié)數(shù)據(jù)的asc碼表達(dá)方式,需要定義小數(shù)點(diǎn)的位置
//putint(uint ui,uchar j);發(fā)送一個(gè)整型數(shù)據(jù)的asc碼表達(dá)方式,需要定義小數(shù)點(diǎn)的位置
//delay(unsigned char d); 延時(shí)n x 100ns
//getline(char idata *line, unsigned char n); 獲取一行數(shù)據(jù)回車結(jié)束,必須定義最大輸入字符數(shù)
//CR;發(fā)送一個(gè)回車換行
//*************************************************************************
#include <w77e58.h>
#define uchar unsigned char
#define uint unsigned int
#define OLEN 10 /* size of serial transmission buffer */
idata unsigned char outbuf[OLEN]; /* storage for transmission buffer */
unsigned char idata *outlast=outbuf; //最后由中斷傳輸出去的字節(jié)位置
unsigned char idata *putlast=outbuf; //最后放入發(fā)送緩沖區(qū)的字節(jié)位置
#define ILEN 2 /* size of serial receiving buffer */
idata unsigned char inbuf[ILEN];
unsigned char idata *inlast=inbuf; //最后由中斷進(jìn)入接收緩沖區(qū)的字節(jié)位置
unsigned char idata *getlast=inbuf; //最后取走的字節(jié)位置
bit outbufsign; //輸出緩沖區(qū)非空標(biāo)志 有=1
bit inbufsign; //接收緩沖區(qū)非空標(biāo)志 有=1
bit inbufful; //輸入緩沖區(qū)滿標(biāo)志 滿=1
#define CR putstring("\r\n") //CR=回車換行
unsigned char code comready[]="com is ready!";
//*****************************
//延時(shí)n x 100ns
void delay(unsigned char d) //在源程序開(kāi)頭定義是否用w77e58或22。1184M晶振
{unsigned char j;
do{ d--;
//110592 & 89c52
#ifndef cpuw77e58
#ifndef xtal221184
j=21; //k=38 cpu80320 100us k=21 cpu 8052
#else
j=42;
#endif
#else
#ifndef xtal221184
j=38;
#else
j=76;
#endif
#endif
do {j--;} while(j!=0);
}while(d!=0);
}
//*****************************
//放入一個(gè)字節(jié)到發(fā)送緩沖區(qū)
putbyte(char c)
{uchar i,j;
ES=0; /*暫停串行中斷,以免數(shù)據(jù)比較時(shí)出錯(cuò)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -