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

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

?? upsd3300_spi.c

?? 增強型8位單片機UPSD33xx系列芯片常用片上外設的驅動程序(ADC,TIMER,UART,I2C..)
?? C
字號:
/*------------------------------------------------------------------------------
upsd3300_spi.c

Version:
October 8, 2004 Version 1.0 - Initial release.

Description:
This is the uPSD3300 SPI Device Driver.


Copyright (c) 2004 STMicroelectronics Inc.

This example demo code is provided as is and has no warranty,
implied or otherwise.  You are free to use/modify any of the provided
code at your own risk in your applications with the expressed limitation
of liability (see below) so long as your product using the code contains
at least one uPSD product (device).

LIMITATION OF LIABILITY:   NEITHER STMicroelectronics NOR ITS VENDORS OR 
AGENTS SHALL BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF USE, LOSS OF DATA,
INTERRUPTION OF BUSINESS, NOR FOR INDIRECT, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES OF ANY KIND WHETHER UNDER THIS AGREEMENT OR
OTHERWISE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
------------------------------------------------------------------------------*/

#pragma optimize(8,size)

#include "upsd3300.h"
#include "upsd3300_spi.h"


#define SPI_BUSY_FLAG 0x10
#define SPI_TI_FLAG 0x02
#define SPI_TRANSMIT_END_FLAG 0x08
#define SPI_RI_FLAG 0x01
#define SPI_RO_FLAG 0x04


#define SPI_COMM_WREN 0x06  //E2PROM or serial flash enable command
#define SPI_COMM_WRDI 0x04  
#define SPI_COMM_RDSR 0x05
#define SPI_COMM_WRSR 0x01
#define SPI_COMM_READ 0x03  //E2PROM or serial flash read command
#define SPI_COMM_WRITE 0x02 //E2PROM or serial flash write command 

#define SPI_Dummy 0xff


unsigned char *buf1; 		// point to send data buffer 
unsigned char *buf2; 		// point to received data buffer 

unsigned char tlen;  		//dynamic send data length 
unsigned char rlen;  		// dynamic received data length
unsigned char tlength; 		// fixed send data lengrh


unsigned char flag;
unsigned char endflag;


/*-------------------------------------------------------------------------------------
	void SPI_isr(void);
	
	SPI interrupt service routine 	
--------------------------------------------------------------------------------------*/

void SPI_isr (void) interrupt SPI_VECTOR using 2 {

	unsigned char	status ;
	status = SPISTAT;
	if(status & SPI_TRANSMIT_END_FLAG)
	{
		while (SPISTAT & SPI_BUSY_FLAG);	// wait for last bit of last byte to finish transmission/reception	
			SPICON1&=(~TIE);
			SPICON0&=(~TE);
			SPICON1&=(~TEIE);
			endflag = 1;  //indicate the transmission is complete
	}
	if(status & SPI_TI_FLAG) // for TISF interrupt (SPITDR is empty)	
	{
		if(tlen < tlength) // check if byte count is satisfied
		{
			SPITDR=*buf1; // load SPI transmit buffer
			buf1++; // bump transmit buffer pointer
			tlen++; // bump byte count
		}
	}
	if(status & SPI_RI_FLAG) // for RISF interrupt (SPIRDR is full)

	{
		*buf2=SPIRDR;  // read SPI read buffer
		buf2++;   // bump recv buffer pinter
		rlen++;  // bump byte count
	}
}
/*-------------------------------------------------------------------------------------
	void SPI_Init(void);
	
	Setup 4-wires in SPI mode; MSB first; Sampling at rising edge; 
	Disable SPI interrupt;
	Configure SPI clock rate; 	
--------------------------------------------------------------------------------------*/
void SPI_Init(void)
{
	P4SFS0 = 0xF0;		   	
	P4SFS1 = 0xF0;			// Setup P4[4..7] Port as SPI function
	SPICON1=0x00;			//bit3:TEIE=0.	SPI transmission end interrupt disable
							//bit2:RORIE=0.	SPI receive overrun interrupt disable
							//bit1:TIE=0.	SPI transmission interrupt disable
							//bit0:RIE=0	SPI receiption interrupt disable

	SPICLKD=0x38;			//Because higher frequency of SCLKOUT need faster speed of MCU
							//So select frequency divider>=0x38

	SPICON0=0x1A;			//bit6:TE=0.	SPI Transmitter disable
							//bit5:RE=0.	SPI Receiver disable
							//bit4:SPIEN=1. SPI enable
							//bit3:SSEL=1. 	SPI Slave select output is enable
							//bit2:FLSB=0. 	SPI Transfer the MSB first according to requirement of M95080W
							//bit1:SPO=1.	SPI Sample data at rising edge of clock
	IEA|=0x40;
	IPA|=0x40;
	EA=1;
}




unsigned char SPI_transfer(unsigned char *send, unsigned char *receive, unsigned char length)
{
	tlength = length;
	buf1 = send;	
	buf2 = receive;	
	flag = 0;
	endflag = 0;
	while (SPISTAT & SPI_BUSY_FLAG); // check for busy		 	
	SPITDR=*buf1;	 // pre-load 1st byte for transmitting				
	buf1++;    // bump transmit buffer pointer
	tlen = 1;  // bump transmit byte count
	rlen = 0;  // initialize receive byte count
		 
					//enable transmit and receive interrupt below
	SPICON1|=RIE;  
    SPICON1|=RORIE;
	SPICON1|=TEIE;
	SPICON1|=TIE;
	
	SPICON0|=TE;
	SPICON0|=RE;
	while (!(endflag == 1));  //wait untill transmission ends
	if (tlen != rlen)flag =1; 
	return (flag); 	//flag = 1 means transfer failed, flag = 0 means transfer succeeded	
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜一区二区| 欧美性猛交xxxxxxxx| 91无套直看片红桃| 欧美一二区视频| 亚洲老司机在线| 国产激情偷乱视频一区二区三区| 欧美视频在线不卡| 亚洲视频一区在线观看| 国产麻豆视频一区二区| 6080午夜不卡| 一区二区三区精品在线| 不卡影院免费观看| 国产亚洲精品超碰| 国产一区二区主播在线| 欧美一级片在线看| 亚洲mv在线观看| 欧美伊人久久大香线蕉综合69| 欧美极品美女视频| 国产福利一区在线观看| 精品久久一区二区| 蜜桃免费网站一区二区三区| 欧美精品一二三| 国产精品羞羞答答xxdd| 91.xcao| 亚洲福利视频一区| 欧美日韩一区二区三区视频| 亚洲精品免费看| 色老综合老女人久久久| 亚洲免费av在线| 在线国产电影不卡| 五月婷婷激情综合网| 欧美卡1卡2卡| 奇米色777欧美一区二区| 91麻豆精品久久久久蜜臀| 午夜久久久影院| 欧美一级黄色录像| 国产主播一区二区| 久久久精品影视| 国产成人av在线影院| 国产精品日韩精品欧美在线| 国产成人综合亚洲91猫咪| 欧美国产一区视频在线观看| 国产91色综合久久免费分享| 中文字幕一区二区三区av| 97精品久久久午夜一区二区三区| 国产精品免费av| 色噜噜狠狠成人网p站| 午夜婷婷国产麻豆精品| 精品少妇一区二区| 国产高清亚洲一区| 亚洲激情男女视频| 6080国产精品一区二区| 国产综合一区二区| 国产精品久久看| 国产精品视频你懂的| 一本大道久久a久久综合| 午夜久久久久久电影| 26uuu国产日韩综合| 日韩1区2区3区| 91亚洲午夜精品久久久久久| 欧美福利电影网| 国产女主播视频一区二区| 欧美性感一类影片在线播放| 成人综合在线网站| 久久精品国产亚洲5555| 高清shemale亚洲人妖| 99精品视频在线观看| 欧美久久久久久久久| 欧美一级国产精品| 国产精品每日更新在线播放网址| 丝袜a∨在线一区二区三区不卡| 亚洲国产精品精华液ab| 国产激情偷乱视频一区二区三区| 日本一区二区不卡视频| 色偷偷久久人人79超碰人人澡| 秋霞影院一区二区| 国产精品久久久久三级| 欧美电影影音先锋| av在线不卡观看免费观看| 日韩国产高清影视| 亚洲欧美怡红院| 久久青草欧美一区二区三区| 欧美色倩网站大全免费| 成人午夜激情影院| 精品一区二区三区在线观看 | 7777精品伊人久久久大香线蕉超级流畅 | 夜夜精品浪潮av一区二区三区| 日韩女优视频免费观看| 欧美中文字幕亚洲一区二区va在线| 九九九久久久精品| 丝袜亚洲精品中文字幕一区| 一色屋精品亚洲香蕉网站| 精品成人一区二区三区| 精品视频在线免费看| 99久久精品久久久久久清纯| 精东粉嫩av免费一区二区三区| 亚洲小说欧美激情另类| 亚洲免费在线视频一区 二区| 久久久久97国产精华液好用吗| 欧美一区二区三级| 欧美日本不卡视频| 在线免费不卡电影| 91在线看国产| 9i在线看片成人免费| 国产精一区二区三区| 精品在线视频一区| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲成人自拍偷拍| 亚洲一卡二卡三卡四卡五卡| 亚洲色图第一区| 最新热久久免费视频| 国产精品国产三级国产专播品爱网| 久久中文字幕电影| 久久亚洲综合色一区二区三区| 91精品国模一区二区三区| 欧洲国内综合视频| 色国产精品一区在线观看| 99国产精品国产精品毛片| 97精品国产露脸对白| 99久久er热在这里只有精品66| 国产成人综合精品三级| 久久福利视频一区二区| 蜜桃av一区二区在线观看| 久久99精品国产麻豆婷婷洗澡| 麻豆视频一区二区| 国产精品一区二区三区乱码| 国产精品一二三四| 91在线视频网址| 欧美在线观看视频在线| 7777精品久久久大香线蕉| 欧美一级视频精品观看| 欧美电影免费观看高清完整版| 精品福利一区二区三区| 亚洲国产精品国自产拍av| 亚洲色图色小说| 午夜精品福利视频网站| 久久99国产精品久久99| 懂色av一区二区三区免费观看 | 欧美性xxxxxxxx| 日韩欧美视频在线| 日本一区二区综合亚洲| 亚洲男人的天堂在线观看| 天天色天天操综合| 国产精品羞羞答答xxdd| 在线视频你懂得一区| 精品蜜桃在线看| 日韩一区在线看| 美女尤物国产一区| 不卡一区二区三区四区| 在线成人免费视频| 日本亚洲三级在线| 成人高清视频在线观看| 欧美色综合久久| 久久只精品国产| 亚洲综合在线观看视频| 久久国产精品色| 色老综合老女人久久久| 欧美一区二区三区成人| 亚洲人成精品久久久久久| 男人的天堂久久精品| 91色乱码一区二区三区| xfplay精品久久| 亚洲一二三四久久| 成人夜色视频网站在线观看| 欧美久久久久久久久中文字幕| 中文字幕av一区二区三区高| 天堂蜜桃一区二区三区| 99久久综合狠狠综合久久| 精品国产免费久久| 午夜成人在线视频| 91色porny| 国产精品你懂的| 毛片av一区二区三区| 欧美午夜寂寞影院| 亚洲欧美视频一区| 成人免费毛片a| 久久综合资源网| 日本一不卡视频| 欧美日韩午夜精品| 亚洲女同女同女同女同女同69| 国产麻豆91精品| 欧美成人一区二区三区在线观看| 一级特黄大欧美久久久| 成人av动漫网站| 国产精品天美传媒| 国产精品综合二区| 欧美tickling挠脚心丨vk| 婷婷成人激情在线网| 在线观看国产精品网站| 亚洲视频一区二区在线观看| 国产精品中文有码| 久久夜色精品国产噜噜av| 免费国产亚洲视频| 日韩视频一区二区| 久久99精品久久久久久 | 日韩三级在线观看| 婷婷六月综合亚洲| 欧美日高清视频| 午夜精品一区二区三区三上悠亚| 91亚洲资源网|