serial.c

来自「这是PIC驱动程序源码」· C语言 代码 · 共 93 行

C
93
字号
/* *	Serial port driver for 16Cxx chips *	using software delays. * *	Copyright (C)1996 HI-TECH Software. *	Freely distributable. *//* *	Tunable parameters */#include	<pic.h>#include	<conio.h>/*	Transmit and Receive port bits */static bit	TxData @ (unsigned)&PORTA*8+3;		/* bit3 in port A */static bit	RxData @ (unsigned)&PORTA*8+2;		/* bit2 in port A */#define	INIT_PORT	TRISA = 7			/* set up I/O direction *//*	Xtal frequency */#define	XTAL	4000000/*	Baud rate	*/#define	BRATE	9600/*	Don't change anything else */#define	DLY		3		/* cycles per null loop */#define	TX_OHEAD	13		/* overhead cycles per loop */#define	RX_OHEAD	12		/* receiver overhead per loop */#define	DELAY(ohead)	(((XTAL/4/BRATE)-(ohead))/DLY)voidputch(char c){	unsigned char	dly, bitno;	bitno = 11;	INIT_PORT;	TxData = 0;			/* start bit */	bitno = 12;	do {		dly = DELAY(TX_OHEAD);	/* wait one bit time */		do			/* nix */ ;		while(--dly);		if(c & 1)			TxData = 1;		if(!(c & 1))			TxData = 0;		c = (c >> 1) | 0x80;	} while(--bitno);}chargetch(void){	unsigned char	c, bitno, dly;	for(;;) {		while(RxData)			continue;	/* wait for start bit */		dly = DELAY(3)/2;		do			/* nix */;		while(--dly);		if(RxData)			continue;	/* twas just noise */		bitno = 8;		c = 0;		do {			dly = DELAY(RX_OHEAD);			do				/* nix */;			while(--dly);			c = (c >> 1) | (RxData << 7);		} while(--bitno);		return c;	}}			

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?