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

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

?? slave.c

?? pic16 i2c slave (picc)
?? C
字號:
#include	<pic.H>
#include    "delay.h"

//#define SIMPLE_TEST
//------------------------------------------------------
//
//			[---__----]
//		RA2 [         ] RA1
//		RA3 [		  ] RA0
//		RA4 [         ] RA7
//      RA5 [         ]	RA6
//      VSS [         ] VDD
//      RB0 [int      ] RB7
//      RB1 [         ] RB6
//      RB2 [TU       ] RB5 SDA
//      RB3 [PWM      ] RB4 SCL
//          [---------]

#define		IDLE			0
#define		WAIT_START 		1
#define		START_RECIEV	2
#define		RECIVE			3
#define		NEXT_BYTE		4
#define     ACK             5
#define     WAIT_STOP       6

#define     TURBO_PIN   RB2
#define     TURBO_DIR   TRISB2
#define     SCL		RB4
#define     SDA     RB5
#define     SCL_DIR		TRISB4	
#define     SDA_DIR     TRISB5
// change pins on the 24/2/07 from RA0,RA1
#define     INPUT		1
#define     OUTPUT      0
unsigned char I2C_STAT,Bptr,BitCount,adress,t0cnt,ft,ft1;
unsigned char B[4];
bit t0flag,turboflag;

unsigned char cont_mode,flash_mode,flash_time,pwr_mode;
//eeprom adress
#define 	CONT_ADR	0
#define     FLASH_ADR   1
#define     TIME_ADR    2
//controls
#define     SET_CONT	0x10
#define     SET_FLASH   0x20
#define     SET_TIME    0x30
#define     OFF         0x40
#define     ON          0x50
#define     TURBO       0x60	
//*********************************
#define     READ_CONT   0x10
#define     READ_FLASH  0x20
#define     READ_TIME   0x30

 	

bit I2C_CMD,NEW_TASK;
void I2CLOOP(void);
#define			READ	1
#define         WRITE   0

__CONFIG  ( MCLREN & UNPROTECT & WDTDIS & PWRTEN & INTIO & LVPDIS  & BORDIS); 
//__CONFIG  ( UNPROTECT & WDTDIS & PWRTEN  & LVPDIS  & BOREN & XT); 

#define     FCPU     4000000
#define     FPWM	 20000
#define 	PERIOD	 1/FPWM
#define     PR2VAL   50//PERIOD*FCPU/4
#define     DUTY    10



void interrupt isr(void)
{
	unsigned char CCP1CON_T,CCPR1L_T;
	if(INTE && INTF)
	{
		INTF=0;
			CCPR1L_T = CCPR1L;		//save pwm value 
			CCP1CON_T = CCP1CON;	//save pwm value 
			CCPR1L = flash_mode >> 2;  
			if (flash_mode & 0x02) CCP1X = 1;
			else
			CCP1X = 0;
			if (flash_mode & 0x01) CCP1Y = 1;
			else
			CCP1Y = 0;
		if (!turboflag)
		{  
			while (!RB0)
			{}
		}
		else
		{
		TURBO_PIN = 1;
		for (ft = 0;ft < flash_time;ft ++)//time = flash_time *2msec
		{
			for (ft1 = 0;ft1 < 0xf0;ft1++)
			{
			#asm
			nop

			#endasm
			}
		}
		TURBO_PIN = 0;	
		while (!RB0)
			{}
		}
			CCPR1L = CCPR1L_T;
			CCP1CON = CCP1CON_T;
		
	}
	if (T0IE && T0IF)
	{
	T0IF = 0;
	TMR0 = 100;//200us interrupt
//	TMR0 = 247;//42us interrupt
	t0flag = 1;
	t0cnt++;
	if (t0cnt > 100) 
	{

		t0cnt = 0;
	}
	}

	
}

void EESAVE(unsigned char adrr,unsigned char data)
{
	EEADR = adrr;
	EEDATA = data;
//	EEPGD = 0;
	WREN = 1;
	GIE = 0;
	EECON2 = 0x55;
	EECON2 = 0xaa;
	WR = 1;
	GIE = 1;
	WREN = 0;
	while (WR)
	{
	}
}

unsigned char EEREAD(unsigned char adrr)
{
	EEADR = adrr;
//	EEPGD = 0;
	RD = 1;
	return EEDATA;
}
void I2CLOOP(void)
{
	switch (I2C_STAT)
	{
		case IDLE:
			if ((SCL) && (SDA)) 
			{
			I2C_STAT = WAIT_START;
			Bptr = 0;
			BitCount = 0;
			}
			break;
		case WAIT_START:
			if ((SCL) && (!SDA)) 
			{
			I2C_STAT = START_RECIEV;
			}
			break;
		case START_RECIEV:
			if (!SCL) 
			{
			I2C_STAT = RECIVE;
			}
			if ((SDA) && (SCL))
			{
			I2C_STAT = IDLE;
			}
			break;
		case RECIVE:
			if (SCL) 
			{
				if (BitCount++ == 8) 
				{
					I2C_STAT = ACK;
				}
				else
				{ 
					I2C_STAT = NEXT_BYTE;
         			B[Bptr] <<= 1;
					if	(SDA) B[Bptr]+=0x01; 
					if (BitCount == 8)
					{
						if ((B[0] & 0x0e) == adress)
						{
							if (B[0] & 0x80) I2C_CMD = READ;
							else
							{
								I2C_CMD = WRITE;
							}
							SDA = 0;
	//						SDA_DIR = OUTPUT;  temporary down
							RA3 = 0;
						}
						else
						{
							I2C_STAT = IDLE;
						}	
					}
				}
			}
			break;
		case NEXT_BYTE:
			if (!SCL) 
			{
				I2C_STAT = RECIVE;
			}	
			break;
		case ACK:				

			if (!SCL)
			{
				I2C_STAT = RECIVE;
				BitCount = 0;
				Bptr ++;
				SDA_DIR = INPUT;
				if (Bptr == 3) 	
				I2C_STAT = WAIT_STOP;
			}

			break;
		case WAIT_STOP:				
			if (SCL)
			{
				I2C_STAT = IDLE;
				NEW_TASK = 1;
			}

			break;
	 }
}


void main(void)
{
	unsigned char t,t1,q;
CMCON = 0xff;
T0CS = 0;
PSA = 0;//prescale for timer0
PS0 = 0;
PS1 = 0;
PS2 = 0;
//ADCON1 = 0x07;
adress = 0x00;
Bptr = 0;
TRISA=0xff;
TRISB3 = 0;
TURBO_DIR = 0;
RA3 = 1;
NEW_TASK = 0;
T2CON = 0;
TMR2ON = 1;
CCP1M3 = 1;
CCP1M2 = 1;
PR2 = PR2VAL;
RBPU = 0; //set pull ups
SCL_DIR = 1;
SDA_DIR = 1;
INTEDG = 0; //interrup on falling EDGE
INTE = 1; //enable interrupt on RB0
T0IF = 0;
T0IE = 1; //enable tmr0 int
GIE = 1;
cont_mode = EEREAD(CONT_ADR);
flash_mode = EEREAD(FLASH_ADR);
flash_time = EEREAD(TIME_ADR);
/*
	CCPR1L = cont_mode >> 2;
	if (cont_mode & 0x02) CCP1X = 1;
	else
	CCP1X = 0;
	if (cont_mode & 0x01) CCP1Y = 1;
	else
	CCP1Y = 0;
*/
			CCPR1L = 0;
			CCP1X = 0;
			CCP1Y = 0; 

#ifdef SIMPLE_TEST  
			CCPR1L = 0xb;
			CCP1X = 0;
			CCP1Y = 0; 
#endif
//RC3 = 0;
//TRISC3 = 0;
turboflag = 0;
//flash_time = 100;



while(1)
{

if 	(t0flag) 
{
	I2CLOOP();
	t0flag = 0;
}
	I2CLOOP();
if (NEW_TASK)
{
	NEW_TASK = 0;
	switch (B[0] & 0xf0)
	{
		case     SET_CONT:
			EESAVE(CONT_ADR,B[2]);		//saves the value recived
			cont_mode = B[2];
			CCPR1L = B[2] >> 2;
			if (B[2] & 0x02) CCP1X = 1;
			else
			CCP1X = 0;
			if (B[2] & 0x01) CCP1Y = 1;
			else
			CCP1Y = 0;  
			break;
		case     SET_FLASH: 
			if (B[2] != 0) 
			{
				EESAVE(FLASH_ADR,B[2]);
				flash_mode = B[2]; 
			}
			else
			{ 
				EESAVE(FLASH_ADR,cont_mode);//store the value of the light if 0 else store value
				flash_mode = cont_mode;
			}   
			break;
		case     SET_TIME:   
			EESAVE(TIME_ADR,B[2]);		// save time
			flash_time = B[2];
			break; 
		case     OFF:
			CCPR1L = 0;
			CCP1X = 0;
			CCP1Y = 0;   
			break;       
		case     ON:   
			CCPR1L = cont_mode >> 2;
			if (cont_mode & 0x02) CCP1X = 1;
			else
			CCP1X = 0;
			if (cont_mode & 0x01) CCP1Y = 1;
			else
			CCP1Y = 0;  		    
			break;
		case     TURBO:   
			if (B[2] == 0)
			turboflag = 0;
			else
			turboflag = 1;

		default:
			break;
	}    

}
}



}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品888| 欧美亚洲动漫制服丝袜| 91首页免费视频| 91精品国产丝袜白色高跟鞋| 久久久亚洲精品石原莉奈| 亚洲18色成人| av电影在线观看一区| 日韩你懂的在线观看| 亚洲精品视频观看| 成人精品视频一区二区三区尤物| 日韩精品专区在线影院重磅| 亚洲综合色丁香婷婷六月图片| 国产精品一区三区| 欧美一区二区美女| 一区二区三区久久| 国产91精品久久久久久久网曝门| 欧美精品亚洲一区二区在线播放| 亚洲色图在线播放| 99久久精品国产毛片| 欧美国产国产综合| 国产老妇另类xxxxx| 精品卡一卡二卡三卡四在线| 午夜精品久久久久久久久久| 在线欧美小视频| 中文字幕制服丝袜成人av| 国产精品自拍三区| 精品国内片67194| 久久99精品国产| 日韩欧美综合一区| 日韩不卡手机在线v区| 一本大道av伊人久久综合| 亚洲欧洲国产日本综合| 99久久精品国产导航| 国产精品网站导航| av亚洲产国偷v产偷v自拍| 国产精品嫩草久久久久| 成人免费视频免费观看| 1区2区3区欧美| 色88888久久久久久影院野外| 亚洲色图一区二区| 在线精品国精品国产尤物884a| 亚洲免费看黄网站| 欧美亚洲自拍偷拍| 强制捆绑调教一区二区| 欧美日韩在线播放一区| 日韩极品在线观看| 欧美电视剧在线看免费| 国内不卡的二区三区中文字幕| 精品免费国产二区三区| 成人午夜电影久久影院| 亚洲欧美在线高清| 欧美性大战久久| 日韩国产一二三区| 久久精品人人做| av一区二区三区在线| 亚洲最大色网站| 91精品国产入口| 国产精品自在在线| 亚洲美女视频一区| 欧美一区二区大片| 粉嫩aⅴ一区二区三区四区五区| 中文字幕在线不卡视频| 在线成人免费观看| 国产91露脸合集magnet| 亚洲成人一区在线| 国产丝袜在线精品| 在线一区二区观看| 久久成人免费电影| 亚洲三级在线观看| 日韩精品一区二区三区在线观看| 岛国一区二区三区| 亚洲不卡一区二区三区| 国产欧美视频一区二区三区| 欧美在线一二三四区| 国产精品中文字幕欧美| 亚洲综合在线免费观看| 久久亚洲免费视频| 欧美在线视频不卡| 国产成人99久久亚洲综合精品| 亚洲宅男天堂在线观看无病毒| 欧美伦理影视网| 成人毛片视频在线观看| 免费av成人在线| 亚洲精品一卡二卡| 精品88久久久久88久久久| 欧美亚洲精品一区| 成人国产精品免费| 狠狠色丁香久久婷婷综| 亚洲国产三级在线| 中文字幕不卡在线观看| 欧美一级久久久久久久大片| 色综合夜色一区| 免费高清不卡av| 亚洲一区二区欧美| 欧美激情中文不卡| 精品国产sm最大网站免费看| 日本高清无吗v一区| 高清国产一区二区| 激情亚洲综合在线| 日韩电影在线免费| 亚洲成人av资源| 一区二区三区精品视频| 国产精品久久久久三级| 欧美激情一区在线观看| 2021中文字幕一区亚洲| 日韩精品一区二区三区中文不卡 | 国产精品亚洲第一| 一区二区三区不卡在线观看 | 亚洲国产高清在线| www激情久久| 日韩欧美一级在线播放| 欧美一区午夜视频在线观看 | 亚洲一区在线观看免费| 亚洲日穴在线视频| 亚洲欧美激情在线| 综合婷婷亚洲小说| 亚洲美女屁股眼交3| 亚洲视频一区二区在线| 亚洲欧美一区二区在线观看| 日本一区二区成人| 中文字幕一区二区三区精华液| 欧美国产激情一区二区三区蜜月| 国产欧美日韩亚州综合| 国产精品久久久久久亚洲伦| 日产国产高清一区二区三区| 国产一区二区三区电影在线观看 | 欧美一区二区在线看| 欧美日韩亚洲综合在线| 欧美日本一区二区在线观看| 欧美午夜不卡在线观看免费| 欧美日韩国产三级| 日韩一区二区三区在线| 久久综合中文字幕| 国产精品每日更新| 亚洲一二三四区不卡| 日日夜夜精品视频天天综合网| 日韩精品亚洲一区| 国内精品第一页| 97久久久精品综合88久久| 在线视频你懂得一区| 欧美一区中文字幕| 久久久99久久精品欧美| 久久青草欧美一区二区三区| 亚洲欧洲成人精品av97| 日韩精品福利网| 国产一区二区三区黄视频 | 日韩成人免费电影| 日韩**一区毛片| 国模冰冰炮一区二区| 成人动漫av在线| 色老汉一区二区三区| 91精品婷婷国产综合久久性色| 精品久久久久久综合日本欧美| 中文字幕一区二区三区在线不卡| 香蕉久久夜色精品国产使用方法| 国产在线不卡一区| 欧美在线免费播放| 日韩一区二区高清| 亚洲乱码日产精品bd| 麻豆精品蜜桃视频网站| 99国产精品国产精品毛片| 91精品黄色片免费大全| 中文字幕欧美国产| 美女网站色91| 亚洲精品久久久蜜桃| 亚洲精品成人天堂一二三| 久久精品99国产精品| 色综合天天综合狠狠| 日韩女优av电影在线观看| 亚洲精品欧美综合四区| 国产精品性做久久久久久| 欧美蜜桃一区二区三区| 中文字幕一区二区不卡| 韩国三级中文字幕hd久久精品| 欧美自拍丝袜亚洲| 国产目拍亚洲精品99久久精品| 天天操天天干天天综合网| 成人av小说网| 国产香蕉久久精品综合网| 美国三级日本三级久久99| 欧美亚洲一区三区| 成人欧美一区二区三区| 国产一区二区三区国产| 欧美一区二区三区的| 亚洲电影在线免费观看| 91性感美女视频| 久久婷婷国产综合国色天香| 日本不卡视频一二三区| 91福利精品视频| 亚洲欧美激情插 | 成人99免费视频| 国产午夜精品一区二区| 国产在线播精品第三| 精品三级av在线| 青青草国产精品亚洲专区无| 在线播放亚洲一区| 日韩中文字幕不卡| 欧美一级夜夜爽| 蜜臀精品久久久久久蜜臀| 在线成人av网站|