亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? iserial.c

?? PCI驅動
?? C
字號:
/* *	Serial port driver for 16Cxx mid-range PIC devices *	(Interrupt-driven) * *	Copyright (C) 1997 HI-TECH Software. *	Author: Jeremy Bennett <jeremy@htsoft.com> *	 *	Comments: *	 *	The major limiting factor in how fast you can go is *	the need to sample the RxData line at several times the *	desired baud rate when looking for a start bit. 8 times is *	used here - less may be possible. With 8 times sampling, the *	maximum baud rate that can be reliably achieved with a 4MHz *	PIC is 1200 baud. This results in about a 100uS interrupt interval, *	with about 30uS used in the interrupt service routine. *	 *	Of course once the start bit has been recognised, the interrupt *	interval could be dropped back to the baud rate, but since it's *	pretty axiomatic that a PIC will wait for characters much more *	than it will actually receive them, this wouldn't help much, and *	would make for additional complication. *	 *	Another approach would be to use the external interrupt pin for the serial input, *	and start timing from the interrupt. This would have to be carefully done *	to allow simultaneous transmission, though. *	 *	This module compiles to about 125 words on a PIC16C84. *	 */#include	<pic.h>#include	<conio.h>#ifdef	_16C71bit adcconversionflag;	// Used by main so it knows when to do a conversion.#endif/************************************* *	Tunable parameters *//* Transmit and Receive port bits */static volatile bit	TxData @ (unsigned)&PORTA*8+3;		/* bit3 in port A */static volatile bit	RxData @ (unsigned)&PORTA*8+2;		/* bit2 in port A */#define	XTAL		4000000	/* Crystal frequency (Hz). */#define	BRATE		1200	/* Baud rate. */#define RX_OVERSAMPLE	8	/* Amount of oversampling the receiver does. Must be				   a power of two */#define SAMPLE_ADC	200	/* sample the ADC this many interrupts/* *	Don't change anything else ************************************/#define TIMER_VALUE	XTAL / (4 * BRATE * RX_OVERSAMPLE)#define TRANSMIT_NUM_BITS	13	// 1 start bit + 8 data bits + 2 stop bits + safe.#if	(RX_OVERSAMPLE-1)&RX_OVERSAMPLE#error	RX_OVERSAMPLE_value must be a power of 2#endif// Receiver states.enum receiver_state {	RS_HAVE_NOTHING,	RS_WAIT_HALF_A_BIT,	RS_HAVE_STARTBIT,	RS_WAIT_FOR_STOP = RS_HAVE_STARTBIT+8};static unsigned char	sendbuffer;		// Where the character to sent is stored.static unsigned char	receivebuffer;		// Where the character is stored as it is received.static bit 		receivebufferfull;	// 1 = receivebuffer is full.#ifdef	_16C71static unsigned char	adcconvertcount;	// How often ADC is read.#endifstatic unsigned char	send_bitno;static unsigned char	receivestate; 	// Initial state of the receiver (0).static unsigned char	skipoversamples;	// Used to skip receive samples.static unsigned char	rxshift;static bit		tx_next_bit;/** * init_uart *  * Initialises the serial port: *  * 	Sets up the I/O directions for the appropriate PortA pins; * 	Sets up Timer0. *  * */voidinit_uart(void){	receivestate = RS_HAVE_NOTHING;	skipoversamples = 1;		// check each interrupt for start bit#ifdef	_16C71 	adcconvertcount = SAMPLE_ADC;	ADCON1 = 2;	// 16C71 requires Port A reconfiguration - make RA2/3 digital I/0,			// leave RA0 and RA1 as analog.#endif	TRISA = 0x17;	// Set up I/O direction.	TRISB = 0xFE;	/* Set up the timer. */	T0CS = 0;			// Set timer mode for Timer0.	TMR0 = (2-TIMER_VALUE);		// +2 as timer stops for 2 cycles					//   when writing to TMR0	T0IE = 1;			// Enable the Timer0 interrupt.	GIE = 1;}voidputch(char c){	while(send_bitno)		continue;	tx_next_bit = 0;	sendbuffer = c;	send_bitno = TRANSMIT_NUM_BITS*RX_OVERSAMPLE;}chargetch(void){	while(!receivebufferfull)		continue;	receivebufferfull = 0;	return receivebuffer;}bitkbhit(void){	return receivebufferfull;}/** * serial_isr *  * Transmits and receives characters which have been * "putch"ed and "getch"ed. *  * This ISR runs BRATE * RX_OVERSAMPLE times per second. *  * */interrupt voidserial_isr(void){	// Reset Timer0 value	// This is added to TMR0 because there is a delay to get to the isr.	PORTB |= 1;	TMR0 += -TIMER_VALUE + 4;	// +2 as timer stops for 2 cycles when writing to TMR0 +2 for tweak	T0IF = 0;#ifdef	_16C71	/*** ADC ***/	/* This will be called every SAMPLE_ADCth time. */	if(--adcconvertcount == 0) {		adcconversionflag = 1;		adcconvertcount = SAMPLE_ADC;	}#endif	/*** RECEIVE ***/	if( --skipoversamples == 0) {		skipoversamples++;		// check next time		switch(receivestate) {		case RS_HAVE_NOTHING:			/* Check for start bit of a received char. */			if(!RxData){				skipoversamples = RX_OVERSAMPLE/2;				receivestate++;			}			break;		case RS_WAIT_HALF_A_BIT:			if(!RxData) {	// valid start bit				skipoversamples = RX_OVERSAMPLE;				receivestate++;			} else				receivestate = RS_HAVE_NOTHING;			break;					// case RS_HAVE_STARTBIT: and subsequent values		default:			rxshift = (rxshift >> 1) | (RxData << 7);			skipoversamples = RX_OVERSAMPLE;			receivestate++;			break;		case RS_WAIT_FOR_STOP:			receivebuffer = rxshift;			receivebufferfull = 1;			receivestate = RS_HAVE_NOTHING;			break;		}	}		/*** TRANSMIT ***/	/* This will be called every RX_OVERSAMPLEth time	 * (because the RECEIVE needs to over-sample the incoming	 * data). */	if(send_bitno) {	       	if((send_bitno & (RX_OVERSAMPLE-1)) == 0) {			TxData = tx_next_bit;		// Send next bit.			tx_next_bit = sendbuffer & 1;			sendbuffer = (sendbuffer >> 1) | 0x80;		}		send_bitno--;	}	PORTB &= ~1;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩高清一区二区| 97久久久精品综合88久久| 亚洲午夜精品久久久久久久久| 久久精品在线观看| 国产欧美精品一区二区色综合| 国产精品素人一区二区| 国产午夜精品一区二区三区视频| 26uuu成人网一区二区三区| 精品国产91乱码一区二区三区| 日韩精品一区二区三区在线观看| 日韩一区二区免费视频| 亚洲精品在线三区| 国产精品色哟哟| 亚洲欧美激情视频在线观看一区二区三区 | 一区av在线播放| 亚洲妇女屁股眼交7| 日韩国产一二三区| 精品在线你懂的| aaa欧美色吧激情视频| 欧洲另类一二三四区| 欧美一区中文字幕| 日韩欧美国产成人一区二区| 国产亚洲一区二区在线观看| 亚洲女同ⅹxx女同tv| 午夜精品视频在线观看| 另类专区欧美蜜桃臀第一页| av资源网一区| 欧美一区二区三区视频| 一区在线观看视频| 丰满亚洲少妇av| 欧美主播一区二区三区美女| 日韩一级成人av| 综合久久久久综合| 蜜臀av性久久久久蜜臀aⅴ| 成人动漫一区二区在线| 欧美疯狂做受xxxx富婆| 国产午夜亚洲精品羞羞网站| 一级日本不卡的影视| 国产精品18久久久久久久久久久久 | 精品奇米国产一区二区三区| 国产精品天美传媒沈樵| 免费成人在线视频观看| www.欧美.com| 日韩女优av电影| 亚洲综合丝袜美腿| 高清不卡一二三区| 日韩一区二区不卡| 一区二区三区在线免费视频| 国产一区二区三区在线观看精品 | 极品少妇一区二区三区精品视频| 99re这里只有精品6| 精品国产百合女同互慰| 亚洲成国产人片在线观看| www.欧美日韩国产在线| 国产色婷婷亚洲99精品小说| 裸体在线国模精品偷拍| 色偷偷久久人人79超碰人人澡| 国产欧美视频一区二区三区| 日本视频中文字幕一区二区三区| 欧洲人成人精品| 专区另类欧美日韩| 成人少妇影院yyyy| 久久精品欧美一区二区三区麻豆 | 国产精品美女久久久久久久久久久| 日韩国产成人精品| 欧美日韩日日骚| 亚洲一区在线观看视频| 在线观看国产91| 亚洲精选视频免费看| 91在线国产观看| 国产精品国产三级国产三级人妇| 99久久精品99国产精品| 中文字幕免费不卡在线| 国产资源在线一区| 久久综合色天天久久综合图片| 麻豆91免费观看| 欧美大黄免费观看| 黄页视频在线91| 久久色中文字幕| 国产精品一区二区在线观看不卡| 久久久亚洲高清| 国产成人精品免费网站| 中文字幕一区二区5566日韩| 色婷婷久久久综合中文字幕| 亚洲一二三四在线观看| 精品视频1区2区| 蜜臀av亚洲一区中文字幕| 欧美精品一区二区三区高清aⅴ| 精品系列免费在线观看| 欧美激情一区二区三区在线| 91色视频在线| 丝袜亚洲另类欧美| 日韩美女视频一区二区在线观看| 国产一区中文字幕| 国产精品丝袜在线| 欧美优质美女网站| 麻豆91在线观看| 国产精品免费丝袜| 欧美日韩精品欧美日韩精品一综合| 日本三级亚洲精品| 日本一区二区三区四区| 欧美日韩一区二区三区四区五区| 奇米一区二区三区av| 国产精品午夜免费| 欧美肥胖老妇做爰| 国产成人av网站| 久久99精品一区二区三区| 国产精品久久久爽爽爽麻豆色哟哟| 欧美私模裸体表演在线观看| 精品亚洲porn| 亚洲一本大道在线| 久久精品这里都是精品| 欧美三电影在线| 国产精品一线二线三线| 午夜电影久久久| 1000部国产精品成人观看| 欧美精品tushy高清| 成人午夜电影网站| 九一九一国产精品| 一区二区国产盗摄色噜噜| 久久婷婷久久一区二区三区| 欧美性受xxxx| 成人激情视频网站| 久久不见久久见免费视频7 | 欧美肥妇bbw| 99精品视频在线免费观看| 老司机一区二区| 亚洲精品欧美在线| 国产精品无码永久免费888| 91精品视频网| 欧美色大人视频| 99久久精品国产毛片| 国内精品久久久久影院一蜜桃| 亚洲午夜精品在线| 亚洲天堂中文字幕| 欧美激情一区二区三区四区| 日韩免费视频一区| 欧美日韩高清在线播放| 色哟哟在线观看一区二区三区| 国产美女精品人人做人人爽| 婷婷亚洲久悠悠色悠在线播放| 亚洲欧美另类图片小说| 久久精品人人做人人爽人人| 精品久久人人做人人爽| 欧美精品久久天天躁| 欧美专区在线观看一区| 91国产免费看| 在线看日本不卡| 91在线播放网址| 色综合久久久网| 色悠久久久久综合欧美99| 99在线精品免费| 成人av在线播放网站| 成人免费看的视频| 国产高清久久久| 粉嫩蜜臀av国产精品网站| 国产又黄又大久久| 91亚洲精品久久久蜜桃| 91丨porny丨蝌蚪视频| 99久久精品一区二区| 91网址在线看| 欧美综合一区二区三区| 欧美日本免费一区二区三区| 欧美另类久久久品| 欧美一区二区三区婷婷月色 | 国产成人av电影免费在线观看| 国产一区二区美女诱惑| 成人免费观看男女羞羞视频| 99精品国产一区二区三区不卡| 一本在线高清不卡dvd| 欧美视频一区二| 日韩精品资源二区在线| 精品国产区一区| 国产精品成人免费精品自在线观看 | 成人黄色片在线观看| 色综合天天综合在线视频| 欧美亚日韩国产aⅴ精品中极品| 欧美视频一区在线观看| 欧美精品丝袜中出| 久久久一区二区| 亚洲激情一二三区| 三级在线观看一区二区| 国产精品一级片| 一本一道波多野结衣一区二区| 色婷婷国产精品综合在线观看| 欧美日韩视频不卡| 久久久久九九视频| 亚洲一区二区三区三| 国产一区二区精品久久| 91免费版pro下载短视频| 91精品国产免费| 亚洲特级片在线| 另类小说图片综合网| 91精品91久久久中77777| 精品久久久久一区| 亚洲一区二区三区激情| 高清在线观看日韩| 欧美日韩1区2区| |精品福利一区二区三区| 久久成人麻豆午夜电影|