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

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

?? iserial.c

?? pic單片機例程
?? 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.
 *	
 */

#include	<htc.h>
#include	<conio.h>

#ifdef	_16C71
bit adcconversionflag;	// Used by main so it knows when to do a conversion.
#endif

/*************************************
 *	Tunable parameters
 */

/* Transmit and Receive port bits */
#define TxData RA3		/* bit3 in port A */
#define RxData RA2		/* 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)

// 1 start bit + 8 data bits + 2 stop bits + safe.
#define TRANSMIT_NUM_BITS	13	

#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 output char is stored.
static unsigned char	receivebuffer;		// Where the input char is stored as 
											// it is received.
static bit 				receivebufferfull;	// 1 = receivebuffer is full.

#ifdef	_16C71
static unsigned char	adcconvertcount;	// How often ADC is read.
#endif

static 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.
 * 
 * */
void
init_uart(void)
{
	receivestate = RS_HAVE_NOTHING;
	skipoversamples = 1;			// check each interrupt for start bit
	
#ifdef	_16C71
 	adcconvertcount = SAMPLE_ADC;
 	/* 16C71 requires Port A reconfiguration
 	 * Make RA2/3 digital I/0, leave RA0 and RA1 as analog. */
	ADCON1 = 2;		
#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;
}

void
putch(char c)
{
	while(send_bitno)
		continue;
	tx_next_bit = 0;
	sendbuffer = c;
	send_bitno = TRANSMIT_NUM_BITS*RX_OVERSAMPLE;
}

char
getch(void)
{
	while(!receivebufferfull)
		continue;
	receivebufferfull = 0;
	return receivebuffer;
}

bit
kbhit(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 void
serial_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
	/* 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一区二区三区免费野_久草精品视频
日韩精品免费专区| 日韩欧美国产高清| 在线观看视频91| 99国内精品久久| 成人深夜在线观看| 成人丝袜视频网| 日本韩国一区二区| 欧美日韩视频专区在线播放| 欧美影片第一页| 91精品国产全国免费观看| 这里只有精品电影| 精品少妇一区二区三区| 国产日产精品1区| 最新欧美精品一区二区三区| 一区二区三区四区av| 日韩成人av影视| 国产一区二区精品久久| 97精品国产97久久久久久久久久久久| 97精品电影院| 日韩免费看的电影| 国产色综合一区| 亚洲主播在线播放| 另类中文字幕网| 91在线视频免费观看| 欧美日韩国产一级片| 337p粉嫩大胆噜噜噜噜噜91av| 国产日产欧产精品推荐色| 亚洲免费色视频| 蜜桃精品视频在线| 91麻豆精品在线观看| 综合久久一区二区三区| 一区二区三区在线免费观看| 一区二区三区四区亚洲| 亚洲成av人片在www色猫咪| 久久精品av麻豆的观看方式| a美女胸又www黄视频久久| 7777精品伊人久久久大香线蕉超级流畅| 日韩欧美国产一二三区| 亚洲视频在线观看一区| 七七婷婷婷婷精品国产| 99免费精品视频| 欧美精品一区二区在线播放| 亚洲国产中文字幕| 成人黄页毛片网站| 日韩欧美第一区| 久久综合网色—综合色88| 久久久亚洲欧洲日产国码αv| 亚洲免费在线视频一区 二区| 亚洲成人激情自拍| 成人动漫精品一区二区| 亚洲精品在线免费观看视频| 亚洲va在线va天堂| 色综合久久综合中文综合网| 久久男人中文字幕资源站| 日韩黄色在线观看| 欧美在线观看视频在线| 成人免费小视频| 国产成人精品www牛牛影视| 日韩欧美国产一区二区三区| 五月天一区二区| 在线观看日韩国产| 亚洲欧美另类久久久精品2019| 国产91丝袜在线18| 久久美女艺术照精彩视频福利播放| 日韩va欧美va亚洲va久久| 在线日韩国产精品| 一区二区三区欧美| 色婷婷狠狠综合| 亚洲黄色片在线观看| 91美女片黄在线| 亚洲欧美中日韩| kk眼镜猥琐国模调教系列一区二区 | 国产欧美日韩三区| 国产乱码精品一品二品| 国产亚洲精品资源在线26u| 狠狠色丁香久久婷婷综合_中| 日韩欧美国产系列| 国产精品亚洲视频| 欧美国产精品一区| 97精品超碰一区二区三区| 亚洲日穴在线视频| 日本久久精品电影| 亚洲一卡二卡三卡四卡无卡久久| 日本三级韩国三级欧美三级| 欧美美女视频在线观看| 美女在线观看视频一区二区| 日韩女优视频免费观看| 国产乱国产乱300精品| 久久久久久久性| 大陆成人av片| 亚洲老妇xxxxxx| 在线不卡a资源高清| 美脚の诱脚舐め脚责91 | 久久草av在线| 久久精品在线观看| 99国产一区二区三精品乱码| 亚洲成av人片一区二区| 成人黄色av电影| 亚洲国产高清不卡| 色吊一区二区三区| 激情综合网最新| 亚洲三级电影网站| 日韩欧美一级在线播放| 国产福利精品一区| 五月婷婷欧美视频| 国产露脸91国语对白| 国产精品水嫩水嫩| 欧美日高清视频| 懂色一区二区三区免费观看| 亚洲资源在线观看| 国产偷国产偷亚洲高清人白洁| 在线免费观看一区| 国产精品影视在线| 亚洲国产成人porn| 国产精品色哟哟网站| 日韩一级片在线观看| 99视频精品全部免费在线| 九九九久久久精品| 亚洲超碰精品一区二区| 国产精品久久精品日日| 日韩欧美中文一区二区| 91久久精品国产91性色tv | 亚洲天堂成人在线观看| 日韩三级免费观看| 欧美最新大片在线看| 国产剧情av麻豆香蕉精品| 亚洲一区二区高清| 亚洲精品久久久蜜桃| 国产午夜亚洲精品午夜鲁丝片| 9191久久久久久久久久久| 色一区在线观看| 成人永久aaa| 国产+成+人+亚洲欧洲自线| 青青国产91久久久久久 | 久久亚区不卡日本| 欧美一区二区三区日韩| 欧美日韩专区在线| 一本久道久久综合中文字幕| 成人中文字幕合集| 国产精品77777竹菊影视小说| 毛片av一区二区三区| 三级欧美韩日大片在线看| 一区二区三区高清在线| 亚洲少妇中出一区| 最新日韩av在线| 中文字幕在线不卡视频| 中文一区二区在线观看| 久久九九国产精品| 国产亲近乱来精品视频| 久久免费国产精品| 久久久99精品免费观看不卡| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲精品一区二区三区福利 | 欧美日韩国产经典色站一区二区三区 | 91捆绑美女网站| 色狠狠色狠狠综合| 欧美三级日韩三级国产三级| 在线免费不卡视频| 欧美女孩性生活视频| 欧美精品久久99久久在免费线| 欧美日韩高清一区二区三区| 欧美福利视频导航| 精品乱码亚洲一区二区不卡| 国产网红主播福利一区二区| 国产精品久久久久影院老司| 一区二区三区在线视频免费| 五月天中文字幕一区二区| 久久99精品久久久久久国产越南 | 九色综合狠狠综合久久| 国产美女精品一区二区三区| 韩国av一区二区三区| 成人app在线| 欧美日韩激情一区二区| 欧美白人最猛性xxxxx69交| 欧美精彩视频一区二区三区| 亚洲三级理论片| 蜜臀国产一区二区三区在线播放| 国产传媒日韩欧美成人| 91在线视频观看| 日韩视频免费观看高清完整版 | 欧美中文字幕不卡| 欧美一区二区国产| 国产精品理论在线观看| 天天综合色天天综合| 粉嫩嫩av羞羞动漫久久久| 欧美日韩极品在线观看一区| 国产亚洲欧洲997久久综合 | 亚洲国产裸拍裸体视频在线观看乱了| 青青草一区二区三区| aaa亚洲精品一二三区| 7777精品伊人久久久大香线蕉经典版下载 | 美国欧美日韩国产在线播放| 99精品欧美一区| 亚洲精品一区在线观看| 一区二区三区中文字幕精品精品| 久久精品国产网站| 欧美三级电影精品| 国产精品成人免费精品自在线观看| 奇米综合一区二区三区精品视频| 91色综合久久久久婷婷|