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

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

?? upsd_i2c.c

?? 增強(qiáng)型單片機(jī)UPSD33XX系列芯片做音頻發(fā)生器例程。內(nèi)含KEIL源碼和PLD源碼。
?? C
字號:
/*---------------------------------------------------------------------------- 
Title: upsd_i2c.c
Date: July 22, 2002
Author: Alec Bath

Description: I2C Routines for DK3200 Board

Copyright 2002 ST Microelectronics
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 products (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 CODE						// include assembly in .lst file
#pragma NOAREGS		
			
#include "upsd3200.h"
#include "upsd_hardware.h"
#include "upsd_i2c.h"
#include "upsd_timer.h"				// timer fns for timeout, etc.


xdata unsigned char i2c_xmit_buf[256];							// message xmit buffer
xdata unsigned char i2c_rcv_buf[256];							// message rcv buffer
unsigned int i;													// array pointer
unsigned char dummybyte, i2c_timeout;							// dummy byte to rcv, timeout cntr
bit i2c_init_flag, i2cwait, i2c_master, i2c_xmitr;			    // callable status flag bits
bit bus_lost_flag, slave_nack_flag, i2c_timeout_flag;			// error flag bits

//-------------------------------------------------- 
//	I2C Initialization Routine
//--------------------------------------------------

void upsd_i2c_init (void){
	P3SFS |= 0xC0;						// Enable P3.7 for SCL, P3.6 for SDA
	S2CON |= 0x81;		   				// Setup I2C-2 for 83KHz (40MHz XTAL)
	i2c_init_flag = 1;					// set init done flag
	i2c_timeout_flag = 0;				// clear timeout error flag
//	IPA |= 0x02;						// set high priority for EI2C
	IEA	|=	0x02;						// set EI2C I2C Int. Enable bit
	}

//-------------------------------------------------- 
//	I2C Transmit Data Routine
//--------------------------------------------------

void upsd_i2c_xmit (unsigned char i2c_address, unsigned char start_address, unsigned char data_len){
	while ((S2STA & BBUSY) != 0);		// wait for BBUSY to be clear
	i2c_master = 1;
	i2c_xmitr = 1;						// set up for master transmitter
	S2DAT = i2c_address;				// set up i2c address
	S2CON |= ENI;		   				// Set ENI (Enable I2C-2)
	S2CON &= ~STO;						// Clr STO in S2CON
	S2CON |= STA;						// Set STA (Send start bit)
	S2CON &= ~AA;						// Clr AA in S2CON
	i2c_wait_for_int();					// Wait for interrupt
	S2CON &= ~STA;						// clear STA
	S2DAT = start_address;
	i2c_wait_for_int();					// Wait for interrupt
	S2CON &= ~STA;						// clear STA

	for	(i=0; i < (data_len-1); i++){
		S2DAT = i2c_xmit_buf[i];
		i2c_wait_for_int();				// Wait for interrupt
		S2CON &= ~STA;					// clear STA
		}
	S2CON |= STO;						// set STO (stop bit)
	S2DAT = i2c_xmit_buf[i];			// send last data byte
	i2c_wait_for_int();					// Wait for interrupt
	S2DAT = dummy;						// send dummy byte
}



//-------------------------------------------------- 
//	I2C Receive Data Routine
//--------------------------------------------------

void upsd_i2c_rcv (unsigned char i2c_address, unsigned char start_address, unsigned char data_len)
{
	while ((S2STA & BBUSY) != 0);		// wait for BBUSY to be clear
	i2c_master = 1;
	i2c_xmitr = 0;						// set flags for master receiver

// set up i2c slave starting address
	S2DAT = i2c_address;				// set up i2c address
	S2CON |= ENI;		   				// Set ENI (Enable I2C-2)
	S2CON |= STA;						// Set STA (Send start bit)
	S2CON &= ~AA;						// Clr AA in S2CON
	i2c_wait_for_int();					// Wait for interrupt
	S2CON &= ~STA;						// clear STA
	S2CON |= STO;						// set STO (stop bit)
	S2DAT = start_address;				// send starting address
	i2c_wait_for_int();					// Wait for interrupt
	S2DAT = dummy;						// send dummy byte

// receive bytes from slave from starting address
	S2DAT = (i2c_address | 0x01);		// set up i2c address (set R/W bit)
	S2CON |= ENI;		   				// Set ENI (Enable I2C-2)
	S2CON &= ~STO;						// Clr STO in S2CON
	S2CON |= STA;						// Set STA (Send start bit)
	S2CON &= ~AA;						// Clr AA in S2CON
	i2c_wait_for_int();					// Wait for interrupt
	S2CON &= ~STA;						// clear STA
	S2DAT = 0xFF;						// send byte for rcv mode
	S2CON |= AA;						// Set AA in S2CON
	i2c_wait_for_int();					// Wait for interrupt

	for	(i=0; i < (data_len-1); i++){
		dummybyte = S2STA;				// Dummy Read S2STA
		i2c_rcv_buf[i] = S2DAT;			// Get data byte from Slave
		i2c_wait_for_int();				// Wait for interrupt
		}
	S2CON &= ~AA;						// Clr AA in S2CON
	i2c_rcv_buf[i] = S2DAT;				// Get last data byte
	i2c_wait_for_int();					// Wait for interrupt
	dummybyte = S2STA;					// Dummy Read S2STA
	i++;
	i2c_rcv_buf[i] = S2DAT;				// Get dummy data byte
}



//-------------------------------------------------- 
//	I2C Wait for Interrupt Routine
//--------------------------------------------------

void i2c_wait_for_int (void){
	i2cwait = 1;							// 
	i2c_timeout = 0;
	while (i2cwait == 1){					// .. wait for int to clear flag
		if (i2c_timeout >= 10){			    // 10mS timeout loop
			i2c_timeout_flag = 1;		    // set error flag
			i2cwait = 0;					// 
		}
		timer0_delay(1);					// 1 mS delay
		i2c_timeout++;
	}
}


/*-------------------------------------------------- 
	I2C Interrupt Service Routine
--------------------------------------------------*/ 

void i2c_isr (void) interrupt I2C_VECTOR using 2
{	// I2C Interrupt Routine
	if ((S2STA & BLOST) == 1){
		S2DAT = dummy;						// send dummy byte
		bus_lost_flag = 1;
		}
	if ((S2STA & _ACKREP) == 1){
//!1		timer0_delay(1000);					// 1 Sec timeout
		S2DAT = dummy;						// send dummy byte
		slave_nack_flag = 1;
		}
	if (i2c_master & i2c_xmitr){			// mstr transmitter mode
		i2cwait = 0;						// reset wait flag
		}
	if (i2c_master & ~i2c_xmitr){			// mstr receiver mode
		i2cwait = 0;						// reset wait flag
		}
}



?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡的av中国片| 国产成人综合自拍| 日本一区二区三区高清不卡| 在线免费观看视频一区| 国产在线不卡一区| 亚洲午夜一二三区视频| 久久亚洲春色中文字幕久久久| 色狠狠色狠狠综合| 成人免费观看av| 久久精品国产亚洲一区二区三区| 亚洲精品国产品国语在线app| 久久综合久久综合久久| 欧美精品久久99久久在免费线 | 国产网红主播福利一区二区| 欧美日韩精品欧美日韩精品一| av亚洲精华国产精华| 经典三级视频一区| 奇米一区二区三区| 亚洲一区二区三区美女| 亚洲欧美日本韩国| 欧美韩日一区二区三区| 久久久久久久久久久久久女国产乱 | 久久99国产精品久久| 亚洲国产三级在线| 亚洲精品视频在线看| 国产精品国产三级国产普通话99| 日韩视频国产视频| 欧美绝品在线观看成人午夜影视| 色综合久久中文字幕综合网| 成人aa视频在线观看| 高清beeg欧美| 国产99久久久国产精品潘金网站| 久久国产精品露脸对白| 免费观看在线色综合| 三级一区在线视频先锋| 五月天激情小说综合| 亚洲国产欧美一区二区三区丁香婷 | 久久伊人蜜桃av一区二区| 日韩精品一区二区三区中文不卡| 欧美乱妇20p| 91精品国产麻豆国产自产在线 | 欧洲精品在线观看| 欧美亚洲一区二区在线| 欧美三级日韩在线| 欧美日韩视频在线第一区| 欧美日韩和欧美的一区二区| 欧美日韩电影在线播放| 欧美片网站yy| 91精品婷婷国产综合久久性色| 在线不卡的av| 91精品视频网| 久久亚洲综合色一区二区三区 | 青青草国产精品97视觉盛宴| 奇米四色…亚洲| 国产精品中文有码| 成人性生交大片免费看中文| 99国产精品视频免费观看| 91美女福利视频| 欧美日韩精品一区二区三区 | 精品国产凹凸成av人导航| 国产午夜精品在线观看| 国产精品久久久久久久久免费相片 | 国产一区二区不卡| 97精品国产97久久久久久久久久久久| 色综合天天综合给合国产| 91福利国产成人精品照片| 4438成人网| 国产日韩欧美麻豆| 亚洲欧洲日本在线| 视频一区欧美日韩| 国产一区在线不卡| 91啦中文在线观看| 欧美一级欧美一级在线播放| 日本一区二区三区高清不卡| 一区二区三区不卡在线观看 | www.亚洲精品| 欧美日韩高清一区| 久久久精品欧美丰满| 亚洲综合在线第一页| 久久99精品久久久久久国产越南 | 国产成人精品三级麻豆| 欧美在线一区二区三区| 欧美电视剧在线看免费| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 91在线看国产| 欧美成人精品福利| 一区二区三区.www| 国产精品一区二区果冻传媒| 国产精品一区二区免费不卡 | 日韩精品最新网址| 中文字幕巨乱亚洲| 日韩avvvv在线播放| 99精品久久免费看蜜臀剧情介绍| 91精品国产综合久久精品性色 | 又紧又大又爽精品一区二区| 久久综合综合久久综合| 91首页免费视频| 久久久久97国产精华液好用吗| 午夜久久久久久| av电影在线不卡| 欧美大片一区二区三区| 亚洲国产一二三| 成人免费看片app下载| 精品国产乱码久久久久久免费| 夜色激情一区二区| 成人av小说网| 久久青草欧美一区二区三区| 三级久久三级久久久| 91蜜桃免费观看视频| 国产欧美精品一区aⅴ影院| 日韩电影免费一区| 欧美午夜精品一区二区蜜桃| 国产精品久久三区| 国产精品自产自拍| 精品久久久久久久人人人人传媒 | 午夜伊人狠狠久久| 99riav一区二区三区| 国产日韩欧美综合一区| 极品少妇一区二区| 日韩美女主播在线视频一区二区三区 | 4438成人网| 天天综合天天综合色| 欧美视频在线播放| 一区二区三区精品在线观看| aa级大片欧美| 国产精品久久久久影院色老大| 国产一区美女在线| 精品久久久久久久久久久院品网| 美日韩一区二区| 欧美一区二区三区日韩| 日日嗨av一区二区三区四区| 欧美日韩一区二区欧美激情| 一区二区三区四区亚洲| 91福利小视频| 亚洲 欧美综合在线网络| 欧美视频你懂的| 亚洲成人动漫在线免费观看| 欧美人与禽zozo性伦| 日精品一区二区三区| 91精品国产综合久久香蕉的特点| 亚洲午夜一二三区视频| 欧美人狂配大交3d怪物一区| 婷婷夜色潮精品综合在线| 制服丝袜国产精品| 蜜臀av一区二区在线免费观看 | 国产精品白丝jk黑袜喷水| 久久久三级国产网站| 国产凹凸在线观看一区二区| 国产精品素人视频| 色综合天天综合狠狠| 亚洲国产日韩综合久久精品| 欧美日韩成人高清| 久久激五月天综合精品| 久久蜜臀精品av| www.久久精品| 亚洲风情在线资源站| 91精品免费观看| 国内外成人在线| 国产精品久久久久久久久晋中| 91丨九色丨蝌蚪富婆spa| 亚洲国产精品久久不卡毛片| 欧美一区二区三区日韩| 国产精品一区二区在线观看不卡| 欧美国产日韩亚洲一区| 欧洲精品视频在线观看| 强制捆绑调教一区二区| 久久九九久精品国产免费直播| av亚洲精华国产精华| 亚洲成在线观看| 久久婷婷成人综合色| 99视频在线精品| 视频一区中文字幕| 亚洲国产成人在线| 欧美日韩在线播| 国产精品一区二区男女羞羞无遮挡| **欧美大码日韩| 欧美一级欧美一级在线播放| 懂色av一区二区夜夜嗨| 午夜精品国产更新| 久久精品免视看| 欧美日韩在线直播| 从欧美一区二区三区| 香蕉久久夜色精品国产使用方法| 国产婷婷色一区二区三区| 在线亚洲精品福利网址导航| 激情欧美日韩一区二区| 亚洲精品中文字幕乱码三区| 精品乱人伦小说| 欧美日韩免费一区二区三区 | 五月激情综合婷婷| 亚洲国产精品精华液2区45| 欧美日韩国产首页| 成人夜色视频网站在线观看| 日韩精品久久理论片| 亚洲天堂精品在线观看| 精品嫩草影院久久| 欧美三片在线视频观看 | 久久综合一区二区| 欧美电影影音先锋| 色综合久久久久综合99|