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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? des_mc33696.c

?? BCM 控制demo源代碼
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
	ECHO_TIE |= ECHO_TIMER_INT;			/* Interrupt enable					 */
	
	ECHO_TCTL = ECHO_CLEAR_ON_COMPARE;	/* Output compare action select		 */
					/* ECHO_TIMER_PIN_OFF replaced by ECHO_CLEAR_ON_COMPARE  */
					/* on the line above because of use of the pin by BCD	 */
					/* DOOR_LOCK1_IN2 line									 */
	
	ECHO_TC7H = ECHO_MODH;				/* Main timer terminal count = a bit */
	ECHO_TC7L = ECHO_MODL;				/* time								 */
		
	ECHO_TCxH = ECHO_MODH;				/* Compare = full bit-time 	 		 */
	ECHO_TCxL = ECHO_MODL;
	
	ECHO_TSCR1 |= ECHO_TIMER_ON;		/* Start the timer	 				 */
	
	/*--- Enable interrupts													 */
	asm cli;
}

/******************************************************************************
* Put Echo into Standby/low power mode. Messages already received can be
* retrieved from the driver buffer using Echo_DriverStatus as before but no new
* messages will be received and nothing can be transmitted.
*
* 					!!Only Echo_Enable and Echo_DriverStatus
* 				  are safe to be called when Echo is disabled!!
******************************************************************************/
void Echo_Disable(void) {
	/*--- Turn off timer channel and SPI interrupts		 					 */
	ECHO_TCTL &= ~ECHO_TIMER_PIN_OFF;  				/* Pin disconnected  	 */
	ECHO_TIE &= ~ECHO_TIMER_INT;					/* Interrupts disable	 */
	ECHO_SPIxC1 &= ~ECHO_SPIxC1_SPIE;

	/*--- Turn off SPI module and timer										 */
	ECHO_SPIxC1 &= ~ECHO_SPIxC1_SPE;
	#if ECHO_TIMER_DISABLE == 1
		ECHO_TSCR1 &= ECHO_TIMER_OFF;				/* Disable timer		 */
	#endif

	/*--- Reset the driver status											 */
	status.Word = 0;

	/*--- Turn off the PA and LNA											 */
	#ifdef ECHO_ENABLELNA
		ECHO_ENABLELNA = 0;
	#endif

	#ifdef ECHO_ENABLEPA
		ECHO_ENABLEPA = 0;
	#endif

	/*--- Turn off RSSI module and Echo transceiver						 	 */
	echoRegisters[ECHO_COMMAND_REG] &= ~ECHO_BIT_RSSIE;
	echoRegisters[ECHO_CONFIG2_REG] &= ~ECHO_BIT_TRXE;

	Echo_EnterConfig();
	WaitN(ITERATIONS_1200uS);
	Echo_Config(BUILDCMD(CMD_ONE, ECHO_COMMAND_REG, 1), &echoRegisters\
				[ECHO_COMMAND_REG], 1);
	Echo_Config(BUILDCMD(CMD_ONE, ECHO_CONFIG2_REG, 1), &echoRegisters\
				[ECHO_CONFIG2_REG], 1);
	Echo_ExitConfig();
	/* Echo_ExitConfig leaves SEB=1, digital interface disabled				 */

	/*--- Turn off the STROBE												 */
	/* After SPI stuff in case we're in Rx mode - STROBE=0 would turn Echo	 */
	/* off before ^															 */
	#ifdef ECHO_STROBE
		ECHO_STROBE = 0;
	#endif
}

/******************************************************************************
* Set up timer registers and start it going. Require to setup
* echoDriverNextState variable before starting timer interrupts!
* Also, SPI should be disabled while the timer is generating a waveform.
******************************************************************************/
void Echo_KickOffTimer(void) {
	/* Set up the timer														 */
	ECHO_TIOS |= ECHO_IC_OC;			/* Select OC on used timer channel	 */
	ECHO_TSCR2 |= ECHO_TCRE;			/* Timer counter reset enable		 */
	ECHO_TFLG1 |= ECHO_TIMER_INT;		/* Clear any old interrupt pending 	 */
	ECHO_TIE |= ECHO_TIMER_INT;			/* Interrupt enable					 */
	ECHO_TCTL &= ~ECHO_TIMER_PIN_OFF;	/* Pin disconnceted					 */
	
	ECHO_TC7H = ECHO_MODH;				/* Main timer terminal count		 */
	ECHO_TC7L = ECHO_MODL;
	
	ECHO_TCxH = ECHO_COMH;				/* Compare = half bit-time		 	 */
	ECHO_TCxL = ECHO_COML;

	ECHO_TSCR1 |= ECHO_TIMER_ON;		/* Start the timer			 		 */
	
	/*--- Enable interrupts													 */
	asm cli;
}   

/******************************************************************************
* Send a single preamble/ID sequence.
* Switches to Tx mode and initiates the sending. While the Preamble/ID sequence
* is being send, the Busy and Tx flags will be set. Note: does not return from
* Tx mode! Must be used in combination with Echo_SendData to complete the
* message telegram and return Echo to Rx mode.
******************************************************************************/
void Echo_SendPreambleID(void) {
	status.Bits.Busy = 1;

	if (status.Bits.Mode == 0) {
		/* If we're in Rx mode, need to switch to Tx						 */
		Echo_EnterConfig();
		bitCounter = ECHO_1200uS_DELAY;
		echoDriverNextState = ECHO_STARTUP;
	}
	else {
		/* Jump straight to the preamble									 */
		#if ECHO_MODE_VALUE == ECHO_OOK
			bitCounter = ECHO_PREAMBLE_200uS;
			echoDriverNextState = ECHO_PREAMBLE_1;
		#else
		//	bitCounter = 4;
			halfbitCounter = 8;
			echoDriverNextState = ECHO_PREAMBLE_2;
		#endif
	}

	/* Configure the Tx state machine for ID only							 */
	tx_config.Bits.IDHeaderSelect = 0;
	tx_config.Bits.CompleteSend = 0;

	/* Buffer to pick up ID from											 */
	echoTxDataPtr = echoTransmitBuffer;

	Echo_KickOffTimer();
}

/******************************************************************************
* Send a preamble+Header+Data+EOM sequence.
* Requires driver to be in Tx mode (by calling Send_PreambleID previously).
******************************************************************************/
void Echo_SendData(void) {
	/* Must be in Tx mode already (by calling Send_PreambleID)				 */
	if (status.Bits.Mode != 1) {
		status.Bits.Error = 1;
		return;
	}

	/* Status bit set to indicate transmitting								 */
	status.Bits.Busy = 1;
	status.Bits.Tx = 1;

	/* Configure the Tx state machine for P+Header+Data						 */
	tx_config.Bits.IDHeaderSelect = 1;

	/* Set up data, length, checksum etc									 */
	echoTransmitBuffer[3] |= ECHO_BUFFER_FULL;	/* Mark buf full while we're */
												/* using it					 */

	echoTxDataPtr = echoTransmitBuffer;
	byteCounter = echoTransmitBuffer[3] & ~ECHO_BUFFER_FULL;
	echoChecksum = echoTxDataPtr[2];			/* Start with ID			 */

	/* Set up driver next state												 */
	#if ECHO_MODE_VALUE == ECHO_OOK
		echoDriverNextState = ECHO_PREAMBLE_1;
		bitCounter = ECHO_PREAMBLE_200uS;
	#else
		echoDriverNextState = ECHO_PREAMBLE_2;
	//	bitCounter = 4;
		halfbitCounter = 8;
	#endif

	Echo_KickOffTimer();
}

/******************************************************************************
* Send a complete telegram consisting of number of Preamble+ID sequences spaced
* by a number of bit-times. The spaceing and repeat count are defined in the Tx
* buffer. This sequence is followed by a Header, Data and EOM. Switches to Tx
* mode and initiates the sending. While the sequence is being sent, the Busy
* and Tx flags will be set. The full flag on the Tx buffer will remain set for
* the duration of its use by the driver. The buffer may be copied internally,
* so even though the Tx buffer is empty, it might still be sending!! Use the
* status flags to check.
******************************************************************************/
void Echo_SendMessage(void) {
	echoTransmitBuffer[3] |= ECHO_BUFFER_FULL;	/* Mark buf full while we're */
												/*using it					 */

	/* The internal buffer is only full when transmitting a complete		 */
	/* telegram. In that case, the ISR will pick up the new message when	 */
	/* it's finished, so just leave it.										 */
	if ((echoInternalTxBuffer[3] & ECHO_BUFFER_FULL) != 0) return;

	status.Bits.Busy = 1;

	/* Set up driver next state: Startup switches to Tx mode before preamble */
	Echo_EnterConfig();
	bitCounter = ECHO_1200uS_DELAY;
	echoDriverNextState = ECHO_STARTUP;

	/* Configure the Tx state machine for P+ID repeat						 */
	tx_config.Bits.IDHeaderSelect = 0;
	tx_config.Bits.CompleteSend = 1;
	tx_config.Bits.IDRepeat = 0;

	/* Set up data, length, checksum etc									 */
	EchoCopyTxBuf();

	echoTxDataPtr = echoInternalTxBuffer;
	byteCounter = echoTxDataPtr[3] & ~ECHO_BUFFER_FULL;
	echoChecksum = echoTxDataPtr[2];			/* Start with ID			 */

	IDCounter = echoTxDataPtr[0];				/* Number of P+ID repeats	 */

	Echo_KickOffTimer();
}

/******************************************************************************
* Send a complete message consisting of Preamble followed my a continuous
* stream of ID's then a Header, Data and EOM. Switches to Tx mode and initiates
* the sending. While the sequence is being sent, the Busy and Tx flags will be
* set. Always sends at least one ID; repeatCount is number of extra ID's to
* send.
******************************************************************************/
void Echo_SendIDRepeat(unsigned char repeatCount) {
	status.Bits.Busy = 1;

	/* Set up driver next state: Startup switches to Tx mode before preamble */
	Echo_EnterConfig();
	bitCounter = ECHO_1200uS_DELAY;
	echoDriverNextState = ECHO_STARTUP;

	/* Configure the Tx state machine for ID repeat							 */
	tx_config.Bits.IDHeaderSelect = 0;
	tx_config.Bits.CompleteSend = 1;
	tx_config.Bits.IDRepeat = 1;

	/* Set up data, length, checksum etc									 */
	echoTransmitBuffer[3] |= ECHO_BUFFER_FULL;	/* Mark buf full while we're */
												/* using it					 */

	echoTxDataPtr = echoTransmitBuffer;
	byteCounter = echoTransmitBuffer[3] & ~ECHO_BUFFER_FULL;
	echoChecksum = echoTxDataPtr[2];			/* Start with ID			 */

	IDCounter = repeatCount;

	Echo_KickOffTimer();
}

/******************************************************************************
* Timer interrupt used for (transmitting bits) and other timing.
* Essentially a big function implementing a state machine which transitions on
* interrupts. See the Echo Device Driver Design document for a fuller 
* description.
******************************************************************************/

#pragma CODE_SEG __NEAR_SEG NON_BANKED

interrupt void Echo_TxTimer_Interrupt(void) {  
    
    switch (echoDriverNextState) {

		/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
		/* 2ms delay when Echo starts up									 */
		case ECHO_ENABLE_DELAY:
			bitCounter--;

			if (bitCounter == 0) {
				status.Bits.EnableDelay = 0;
				status.Bits.Busy = 0;

				ECHO_TIE &= ~ECHO_TIMER_INT;		/* Turn off channel ints.*/
				ECHO_TCTL &= ~ECHO_TIMER_PIN_OFF; 	/* Turn off channel pin	 */

				#if ECHO_TIMER_DISABLE == 1
					ECHO_TSCR1 &= ECHO_TIMER_OFF;
				#endif

				ECHO_SPIxC1 |= ECHO_SPIxC1_SPIE;	/* Enable SPI interrupts */
				ECHO_SPIxC1 |= ECHO_SPIxC1_SPE;		/* Turn on the SPI		 */

				ECHO_SEB = 0;				/* Enable Echo digital interface */
											/* to receive msg's on the SPI	 */
				ECHO_SEB_DDR = 1;
				
				echoDriverNextState = ECHO_READY;
			}
			else {			/* Still more delay to come so go round again	 */
				ECHO_TCTL = ECHO_CLEAR_ON_COMPARE;
				ECHO_TFLG1 |= ECHO_TIMER_INT;
					/* ECHO_TIMER_PIN_OFF replaced by ECHO_CLEAR_ON_COMPARE  */
					/* on the line above because of use of the pin by BCD	 */
					/* DOOR_LOCK1_IN2 line									 */
			}

			break;

		/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
		/* Startup: 1.2ms delay when Echo enters config mode to switch to Tx */
		/* mode. Enter with bitCounter = # of bit-times in 1.2ms			 */
		/* Echo_EnterConfig should be called prior to entering this state	 */
		case ECHO_STARTUP:
			ECHO_TCTL &= ~ECHO_TIMER_PIN_OFF;
			ECHO_TFLG1 |= ECHO_TIMER_INT;
			
			if (--bitCounter == 0) {
				echoDriverNextState = ECHO_RXTX_SWITCH;
			}

			break;
			
		/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
		/* RxTxSwitch: Switch to Tx mode before sending Preamble			 */
		case ECHO_RXTX_SWITCH:
			ECHO_TCTL &= ~ECHO_TIMER_PIN_OFF;
			ECHO_TFLG1 |= ECHO_TIMER_INT;

			/* Status bits set to Tx mode									 */
			status.Bits.Mode = 1;
			status.Bits.Rx   = 0;
			status.Bits.Tx   = 1;

			/* Turn on the PA and turn off the LNA							 */
			#ifdef ECHO_ENABLELNA
				ECHO_ENABLELNA = 0;
			#endif

			#ifdef ECHO_ENABLEPA
				ECHO_ENABLEPA = 1;
			#endif

			/* Switch to Tx mode											 */
			echoRegisters[ECHO_COMMAND_REG] |= ECHO_BIT_MODE;
			Echo_Config(BUILDCMD(CMD_ONE, ECHO_COMMAND_REG, 1), \
						&echoRegisters[ECHO_COMMAND_REG], 1);
			Echo_ExitConfig();

			ECHO_SPIxC1 &= ~ECHO_SPIxC1_SPE;	/* Disable MOSI so timer can */
												/* drive it					 */
			ECHO_SEB = 0;						/* Enable Echo's interface	 */

			/* Set up driver next state										 */
			#if ECHO_MODE_VALUE == ECHO_OOK
				bitCounter = ECHO_PREAMBLE_200uS;
				echoDriverNextState = ECHO_PREAMBLE_1;
			#else
			//	bitCounter = 4;
				halfbitCounter = 8;
				echoDriverNextState = ECHO_PREAMBLE_2;
			#endif

			break;
		
		/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
		/* Preamble 1: '1' NRZ > 200 uSec, enter with bitCounter set to # of */
		/* bits in 200uS													 */
		case ECHO_PREAMBLE_1:
			ECHO_TCTL = ECHO_SET_ON_COMPARE;
			ECHO_TFLG1 |= ECHO_TIMER_INT;

			if (--bitCounter == 0) {
				echoDriverNextState = ECHO_PREAMBLE_2;
				#if ECHO_MODE_OOKREF == 0
				//	bitCounter = 1;
					halfbitCounter = 2;			// 1 bit NRZ = 2 symbols RZ
				#else
				//	bitCounter = 4;
					halfbitCounter = 8;			// 4 bits NRZ = 8 symbols RZ
				#endif
			}

			break;
			
		/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
		/* Preamble 2: 0's (Manchester) to settle data slicer reference		 */
		/* Enter with bitCounter set to # 0's to send						 */
		case ECHO_PREAMBLE_2:
			if (halfbit == 0){
				ECHO_TCTL = ECHO_CLEAR_ON_COMPARE;
				ECHO_TCxH = ECHO_COMH;
				ECHO_TCxL = ECHO_COML;
				ECHO_TFLG1 |= ECHO_TIMER_INT;
				halfbit = 1;
			}
			else {
				ECHO_TCTL = ECHO_SET_ON_COMPARE;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久亚洲精华液精华液精华液 | jvid福利写真一区二区三区| 欧美大尺度电影在线| 视频精品一区二区| 欧美喷潮久久久xxxxx| 亚洲综合激情网| 91福利资源站| 亚洲成人自拍偷拍| 精品视频在线视频| 天堂成人国产精品一区| 欧美日韩国产一级| 偷窥少妇高潮呻吟av久久免费| 欧美日韩中文精品| 亚洲国产成人精品视频| 欧美夫妻性生活| 欧美a级一区二区| 亚洲精品在线一区二区| 国产福利精品一区| 麻豆91在线播放免费| 日韩写真欧美这视频| 精品一区二区三区在线视频| 久久嫩草精品久久久久| 丁香婷婷综合五月| 最新不卡av在线| 91福利在线导航| 调教+趴+乳夹+国产+精品| 欧美一区国产二区| 国产一区二区三区四区在线观看| 久久久欧美精品sm网站| www.成人网.com| 一区二区三区四区视频精品免费 | 欧美一区二区三区电影| 韩国精品免费视频| 中文字幕第一区二区| 91女厕偷拍女厕偷拍高清| 亚洲成人黄色影院| 欧美成人精精品一区二区频| 国产精品 欧美精品| 亚洲手机成人高清视频| 欧美高清视频在线高清观看mv色露露十八| 免费观看日韩电影| 中文字幕精品在线不卡| 欧美午夜精品理论片a级按摩| 婷婷国产在线综合| 久久久影视传媒| 色哟哟国产精品| 美女在线视频一区| 国产精品免费aⅴ片在线观看| 欧美午夜电影在线播放| 精品一区二区在线免费观看| 亚洲欧美影音先锋| 91麻豆精品国产91久久久久| 国产精品主播直播| 亚洲激情av在线| 91麻豆精品国产自产在线观看一区 | 亚洲色大成网站www久久九九| 欧美日韩精品三区| 国产成人在线视频网站| 一级做a爱片久久| 精品美女一区二区三区| 91美女在线看| 久久99精品国产.久久久久久| 国产精品毛片大码女人| 欧美肥胖老妇做爰| 成人免费av网站| 日本视频免费一区| 国产精品成人一区二区三区夜夜夜| 欧美高清dvd| 波多野结衣在线aⅴ中文字幕不卡| 视频一区视频二区在线观看| 久久精品一区四区| 欧美人妇做爰xxxⅹ性高电影 | 日本高清无吗v一区| 国产一区二区在线电影| 亚洲在线一区二区三区| 国产欧美综合在线| 91精品麻豆日日躁夜夜躁| 99国产精品国产精品久久| 色诱视频网站一区| 国产在线乱码一区二区三区| 亚洲bt欧美bt精品777| 国产精品高潮久久久久无| 欧美成人精品福利| 欧美在线一区二区三区| 风间由美一区二区三区在线观看| 日本伊人精品一区二区三区观看方式| 日韩理论电影院| 久久久精品国产99久久精品芒果| 欧美伦理电影网| 色女孩综合影院| 成人h动漫精品| 国产精品主播直播| 美国十次综合导航| 一区二区理论电影在线观看| 中文在线资源观看网站视频免费不卡| 91精品久久久久久久久99蜜臂| 日本高清成人免费播放| 成人免费观看男女羞羞视频| 久久99久久99| 同产精品九九九| 亚洲一区二区欧美激情| 亚洲视频狠狠干| 欧美国产一区二区| 2024国产精品视频| 日韩一区二区三区在线| 欧美日本一区二区三区| 色哟哟一区二区| 91亚洲精品久久久蜜桃| 成人精品国产福利| 国产一区二区调教| 精品一区二区免费在线观看| 日韩av午夜在线观看| 亚洲国产精品一区二区久久 | 国产精品国产精品国产专区不片| 国产无遮挡一区二区三区毛片日本| 91精品国产麻豆国产自产在线 | 伊人开心综合网| 中文字幕一区视频| 中文字幕av不卡| 国产欧美一区二区三区沐欲| 久久久精品一品道一区| 久久精品亚洲乱码伦伦中文| 久久久久久免费毛片精品| 精品久久久久一区二区国产| 91精品国产品国语在线不卡| 6080亚洲精品一区二区| 欧美一卡二卡三卡四卡| 日韩一级精品视频在线观看| 日韩一区二区三区精品视频| 日韩欧美资源站| 精品欧美乱码久久久久久| 精品国产乱子伦一区| 欧美成人艳星乳罩| 欧美成人女星排行榜| 精品国产三级电影在线观看| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 极品少妇xxxx精品少妇偷拍| 久久91精品国产91久久小草| 激情文学综合网| 国产激情一区二区三区桃花岛亚洲| 国产精品99久久久| 成人精品视频一区二区三区尤物| 不卡的av在线| 91久久精品一区二区| 精品视频免费看| 91精品婷婷国产综合久久性色 | 国产免费成人在线视频| 亚洲欧洲av另类| 一二三区精品视频| 午夜视频久久久久久| 麻豆精品视频在线观看免费| 国产乱子伦一区二区三区国色天香| 国产不卡高清在线观看视频| 97精品久久久午夜一区二区三区| 在线精品观看国产| 欧美美女黄视频| 亚洲精品一区二区三区精华液| 国产欧美一区二区精品忘忧草| 中文字幕中文字幕一区| 亚洲综合自拍偷拍| 日日摸夜夜添夜夜添精品视频| 久久99精品久久只有精品| 粉嫩av一区二区三区| 一本色道a无线码一区v| 91精品一区二区三区在线观看| 精品sm在线观看| 亚洲婷婷在线视频| 日本在线不卡视频| 国产成人超碰人人澡人人澡| 91同城在线观看| 欧美精品少妇一区二区三区| 五月婷婷综合激情| 国产麻豆精品一区二区| 91国偷自产一区二区使用方法| 欧美一区二区三区喷汁尤物| 国产欧美视频在线观看| 亚洲一区在线观看网站| 久久av中文字幕片| 99久久婷婷国产| 欧美一级黄色大片| 亚洲欧美自拍偷拍色图| 蜜桃av一区二区三区| 成人网男人的天堂| 欧美日韩免费不卡视频一区二区三区| 精品国产乱码久久久久久免费| 亚洲私人黄色宅男| 久久99在线观看| 色婷婷亚洲综合| 欧美精品一区视频| 亚洲午夜羞羞片| 国产99久久久精品| 欧美日本在线播放| 国产精品女同互慰在线看| 五月婷婷激情综合| 波多野洁衣一区| 日韩午夜激情电影| 一区av在线播放| 国产aⅴ综合色| 日韩丝袜美女视频| 亚洲精品综合在线|