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

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

?? mywinch.c

?? 一種深度和拉力測量系統
?? C
?? 第 1 頁 / 共 4 頁
字號:
//**********************************************************************************
//    File:              Mywinch.c for PPS66JC Depth Measure System
//    Written By:        YE ZHAOBO, R&D Center SPT.Inc. 2005.06	
//	  Last	Version 2005
//**********************************************************************************
// This code implements a PPS66JC surface interface box using the P18F6620 MCU;
// The code was compiled using the MC18 compliler ver. 8.01pl3;
// The device frequency should be 3.6864 MHz; 
// The PCB is PPS66JC
//
//關鍵更新信息
//...存貯功能
//...已經修正時間錯誤
//...realtime計時
//...用戶自定義時鐘
//...模式控制
//...采樣控制
//...支持USB數據傳輸(Beta)
//-------------------------------------------------------------------
//-------------------------------------------------------------------
// The following files should be included in the MPLAB project:
//
//     mywinch.c      	   -- Main source code file
//	   winch.h
//                
// Use Bootloader tech
// Support Upgrade Online
// Support E-mail: yezhaobo@hotmail.com
// All Right Reserved 
//---------------------------------------------------------------------

#include <p18f6620.h>        		// Register definitions

#include "winch.h"


///-------------
void high_routine (void); 
void low_routine (void); 
void InitPorts();
void ADCone(void);
void Sample(void);
void Version(void);
void Dectime(void);
void SampleInit(void);
void ADNow(void);
//---------------------------------------------------------------------
// Interrupt routine	中斷處理程序
//---------------------------------------------------------------------
#pragma code high_ISR = 0x08
void high_ISR(void) 
{
_asm
	goto high_routine
_endasm
}
#pragma code  

#pragma code low_ISR=0x18
void low_ISR(void)
{
	_asm 
	goto low_routine
	_endasm 
}
#pragma code

#pragma interruptlow  low_routine save=PROD
void low_routine(void)
{	
//	INTCONbits.GIEL=1;
	if(PIR1bits.RCIF!=0){
	*in++=RCREG1;
	if((in-Buf)>=80) in=Buf;//超過緩沖則將指針復位(指向緩沖的第一個地址)
	}
} 
#pragma interrupt high_routine
void high_routine (void) 
{
	if(INTCON3bits.INT1IF) {
		if(PORTBbits.RB0)
			depth.u++;
		else 
			depth.u--;
		INTCON3bits.INT1IF = 0;
	}
	if(INTCONbits.TMR0IF) {
		d0 = d1;
		d1 = depth.u;
		speed = d1 - d0;
//		f0 = f1;
//		f1 = force;
//		delta = f1 - f0;
		TL++;
		if(TL==0x02){time.l++;TL=0;}
		INTCONbits.TMR0IF = 0;
	}
}
//---------------------------------------------------------------------
//           Functions
//---------------------------------------------------------------------

void Get_RealTimeClock(void);
void Init_RealTimeClock(void);

/**********************************************************************************/
void Get_RealTimeClock(void)
{

	IdleI2C();
	StartI2C();
	while (SSPCON2bits.SEN);     		// wait until start condition is over 
	WriteI2C(0b11010000);				// Write DS1307:D0H
	NotAckI2C();

	IdleI2C();							// ensure module is idle
	if ( !SSPCON2bits.ACKSTAT )   		// test for ACK condition, if received
	{
		WriteI2C(0x00);					// DS1307 : REG Addr.
		NotAckI2C();
	}
	IdleI2C();	
	StopI2C();
	while(SSPCON2bits.PEN);				// wait until stop condition is over

	//------------------------------------------------------------------------

	IdleI2C();
	StartI2C();
	while (SSPCON2bits.SEN);     		// wait until start condition is over 
	WriteI2C(0b11010001);				// Read DS1307:D1H
	NotAckI2C();

	IdleI2C();							// ensure module is idle
	if ( !SSPCON2bits.ACKSTAT )   		// test for ACK condition, if received
	{
		real_time.Seconds = ReadI2C();
		AckI2C();
		while(SSPCON2bits.ACKEN);

		real_time.Minutes = ReadI2C();
		AckI2C();
		while(SSPCON2bits.ACKEN);

		real_time.Hours = ReadI2C();
		AckI2C();
		while(SSPCON2bits.ACKEN);

		real_time.Day = ReadI2C();
		AckI2C();
		while(SSPCON2bits.ACKEN);

		real_time.Date = ReadI2C();
		AckI2C();
		while(SSPCON2bits.ACKEN);

		real_time.Month = ReadI2C();
		AckI2C();
		while(SSPCON2bits.ACKEN);

		real_time.Year = ReadI2C();
		NotAckI2C();
		while(SSPCON2bits.ACKEN);
	}

	IdleI2C();	
	StopI2C();
		while(SSPCON2bits.PEN);				// wait until stop condition is over

}
/*------------------------------------------------------------------------------------*/
void Init_RealTimeClock(void)
{
	IdleI2C();
	StartI2C();
	while (SSPCON2bits.SEN);     		// wait until start condition is over 
	WriteI2C(0b11010000);				// Write DS1307:D0H
	NotAckI2C();

	IdleI2C();							// ensure module is idle
	if ( !SSPCON2bits.ACKSTAT )   		// test for ACK condition, if received
	{
		WriteI2C(0x00);					// DS1307 : REG Addr.
		NotAckI2C();

		IdleI2C();			
		if ( !SSPCON2bits.ACKSTAT )   	
		{
			WriteI2C(real_time.Seconds);	// Configuration data  
			NotAckI2C();
		}

		IdleI2C();			
		if ( !SSPCON2bits.ACKSTAT )   	
		{
			WriteI2C(real_time.Minutes);	// Configuration data
			NotAckI2C();
		}

		IdleI2C();			
		if ( !SSPCON2bits.ACKSTAT )   	
		{
			WriteI2C(real_time.Hours);		// Configuration data
			NotAckI2C();
		}

		IdleI2C();			
		if ( !SSPCON2bits.ACKSTAT )   	
		{
			WriteI2C(real_time.Day);		// Configuration data
			NotAckI2C();
		}

		IdleI2C();			
		if ( !SSPCON2bits.ACKSTAT )   	
		{
			WriteI2C(real_time.Date);		// Configuration data
			NotAckI2C();
		}

		IdleI2C();			
		if ( !SSPCON2bits.ACKSTAT )   	
		{
			WriteI2C(real_time.Month);		// Configuration data
			NotAckI2C();
		}

		IdleI2C();			
		if ( !SSPCON2bits.ACKSTAT )   	
		{
			WriteI2C(real_time.Year);		// Configuration data
			NotAckI2C();
		}

		IdleI2C();			
		if ( !SSPCON2bits.ACKSTAT )   	
		{
			WriteI2C(real_time.ctr_reg);	// Control REG
			NotAckI2C();
		}
	}

	IdleI2C();	
	StopI2C();
	while(SSPCON2bits.PEN);					// wait until stop condition is over

}
///
void Init_RealTime(void)
{
	IdleI2C();
	StartI2C();
	while (SSPCON2bits.SEN);     		// wait until start condition is over 
	WriteI2C(0b11010000);				// Write DS1307:D0H
	NotAckI2C();

	IdleI2C();							// ensure module is idle
	if ( !SSPCON2bits.ACKSTAT )   		// test for ACK condition, if received
	{
		WriteI2C(0x00);					// DS1307 : REG Addr.
		NotAckI2C();

		IdleI2C();			
		if ( !SSPCON2bits.ACKSTAT )   	
		{
			WriteI2C(real_time.Seconds);	// Configuration data  
			NotAckI2C();
		}

		IdleI2C();			
		if ( !SSPCON2bits.ACKSTAT )   	
		{
			WriteI2C(real_time.Minutes);	// Configuration data
			NotAckI2C();
		}

		IdleI2C();			
		if ( !SSPCON2bits.ACKSTAT )   	
		{
			WriteI2C(real_time.Hours);		// Configuration data
			NotAckI2C();
		}
	}

	IdleI2C();	
	StopI2C();
	while(SSPCON2bits.PEN);					// wait until stop condition is over

}
void Init_RealDate(void)
{
	IdleI2C();
	StartI2C();
	while (SSPCON2bits.SEN);     		// wait until start condition is over 
	WriteI2C(0b11010000);				// Write DS1307:D0H
	NotAckI2C();

	IdleI2C();							// ensure module is idle
	if ( !SSPCON2bits.ACKSTAT )   		// test for ACK condition, if received
	{
		WriteI2C(0x04);					// DS1307 : REG Addr.
		NotAckI2C();

		IdleI2C();			
		if ( !SSPCON2bits.ACKSTAT )   	
		{
			WriteI2C(real_time.Date);	// Configuration data  
			NotAckI2C();
		}

		IdleI2C();			
		if ( !SSPCON2bits.ACKSTAT )   	
		{
			WriteI2C(real_time.Month);	// Configuration data
			NotAckI2C();
		}

		IdleI2C();			
		if ( !SSPCON2bits.ACKSTAT )   	
		{
			WriteI2C(real_time.Year);		// Configuration data
			NotAckI2C();
		}
	}

	IdleI2C();	
	StopI2C();
	while(SSPCON2bits.PEN);					// wait until stop condition is over

}
////
char hextodec(unsigned char temp)
{
	unsigned char a,b,c;
	a=(temp&0xf0)>>4;
	b=(temp&0x0f);
	c=10*a+b;
	return c;
}

void Recorddepth(void)
{
	IdleI2C();
	StartI2C();
	while (SSPCON2bits.SEN);     		// wait until start condition is over 
	WriteI2C(0b11010000);				// Write DS1307:D0H
	NotAckI2C();

	IdleI2C();							// ensure module is idle
	if ( !SSPCON2bits.ACKSTAT )   		// test for ACK condition, if received
	{
		WriteI2C(0b00010000);					// DS1307 : REG Addr.0x10
		NotAckI2C();

		for(i=0;i<4;i++){
			IdleI2C();			
			if ( !SSPCON2bits.ACKSTAT ){
				WriteI2C(depth.c[i]);	// Configuration data  
				NotAckI2C();
			}
		}
	}

	IdleI2C();	
	StopI2C();
	while(SSPCON2bits.PEN);					// wait until stop condition is over

}

void Readrecord(void)
{
char e,i;

	IdleI2C();
	StartI2C();
	while (SSPCON2bits.SEN);     		// wait until start condition is over 
	WriteI2C(0b11010000);				// Write DS1307:D0H
	NotAckI2C();

	IdleI2C();							// ensure module is idle
	if ( !SSPCON2bits.ACKSTAT )   		// test for ACK condition, if received
	{
		WriteI2C(0b00010000);					// DS1307 : REG Addr.0x10
		NotAckI2C();
	}
	IdleI2C();	
	StopI2C();
	while(SSPCON2bits.PEN);				// wait until stop condition is over

Nop();
Nop();
///------------------------------------------------------------------------

	IdleI2C();
	StartI2C();
	while (SSPCON2bits.SEN);     		// wait until start condition is over 
	WriteI2C(0b11010001);				// Read DS1307:D1H
	NotAckI2C();

	IdleI2C();							// ensure module is idle
	if ( !SSPCON2bits.ACKSTAT )   		// test for ACK condition, if received
	{

	for(i=0;i<4;i++){
			depth.c[i] = ReadI2C();
			AckI2C();
			while(SSPCON2bits.ACKEN);
		}

			e = ReadI2C();
			AckI2C();
			while(SSPCON2bits.ACKEN);
	}

	IdleI2C();	
	StopI2C();
	while(SSPCON2bits.PEN);				// wait until stop condition is over
}
/////
void Dectime(void)
{

	Get_RealTimeClock();

	sec=hextodec(real_time.Seconds);
	min=hextodec(real_time.Minutes);
	hour=hextodec(real_time.Hours);
	mday=hextodec(real_time.Date);
	mon=hextodec(real_time.Month);
	year=hextodec(real_time.Year)+2000;

}
unsigned int sleyear(unsigned int yr)
{
if(yr%4==0||(yr%4==0&&yr%100!=0)) return(366);
  else return(365);
}
//////
void DostoUnix(void)
{
	unsigned int i;
	unsigned  long j;

	j=0;
///從1970到現在的天數
	 for(i=2000; i<year; i++){
	  j=j+sleyear(i);///2000~2005
	 }
///計算本年到現在天數  
	 for(i=0; i<(mon-1); i++){
	  j+=moninit[i]; 
	 }
	j=j+mday;
///若本年為閏年則加1天
	 if(mon >= 2 && sleyear(year) == 366)  j++;
     j=j-1;
	 j=j*86400;
	 j=j+(hour*3600);
	 j=j+(min*60);
	 j=j+sec;
	 totalsec=j;
     time.l=totalsec;	///給計時賦初值
   	 Nop();
     Nop();
}
//-------------------------------------
//-------------串口接收與發送
//-------------------------------------
char getch(void)
{
	char c;
	while(in==out);//相等表示沒有新數據進來
	c = *out;
	out++;
	if((out-Buf)>=80) out=Buf;
	return c;
}
void SCISend(char c)
{
	while(TXSTA1bits.TRMT==0);
	TXREG1=c;
}
void putch(char c)
{
	while(TXSTA1bits.TRMT==0);
	TXREG1=c;
}
void ResetMem(void)
{
//MEM
	MEM_CE=0;
	MEM_CLE=0;
	MEM_WE=1;
	MEM_ALE=0;
	MEM_RE=1;
}
//======================
//-----存儲器代碼-------
//======================
void SCILoadAddr(void)
{
	MEM_sector = (Buf[5] & 0x0f);
	MEM_block  =  Buf[6];
	MEM_page   =  Buf[7];
	MEM_line   =  Buf[8];
}
//--------------
void MEM_COMD(char command)
{
	TRISD=0X00;
	PORTD=0X00;
	MEM_CLE=0;
//command
	MEM_CLE=1;
	MEM_CE=0;
	MEM_ALE=0;
	MEM_WE=0;
	PORTD=command;
	MEM_WE=1;
	MEM_CLE=0;
	TRISD = 0xFF;
}
//----存儲地址計算
void MEM_CalAddr(unsigned char sector_addr,
                 unsigned char block_addr,
                 unsigned char page_addr)
{
	second_addr = ((block_addr & 0x07)<<5) | page_addr;
	third_addr  = ((sector_addr & 0x07)<<5) | ((block_addr & 0xF8)>>3);
}

//--------------
void MEM_WeAddr(void)
{
//char first_addr,char second_addr,char third_addr
	TRISD=0X00;
	PORTD=0X00;
//address
	MEM_ALE=1;
	MEM_WE=0;
	PORTD=first_addr;
	MEM_WE=1;

	MEM_WE=0;
	PORTD= second_addr;
	MEM_WE=1;

	MEM_WE=0;	
	PORTD=third_addr;
	MEM_WE=1;
	MEM_ALE=0;

	Delay1TCY();
	Delay1TCY();
	Delay1TCY();
	Delay1TCY();
	Delay1TCY();
	Delay1TCY();
	Delay1TCY();
	Delay1TCY();
	Delay1TCY();
	Delay1TCY();			

	TRISD=0XFF;
}
//---------------------
unsigned char MEM_status(void)
{
	char stu;

	PORTE = 0xe6;
	TRISE = 0x00;				// Set port D as output

	MEM_DIR = 1;
	TRISD = 0x00;				// Set port D as output
	MEM_COMD(0x70);
	TRISD = 0x00;

	MEM_DIR = 0;
	TRISD = 0xFF;

	MEM_CE = 0;

	Delay1KTCYx(100);

	MEM_RE = 0;
	stu = PORTD;
	MEM_RE = 1;

	MEM_CE = 1;
	MEM_DIR = 1;
	return(stu);
}
//----------------------------------------------------------------------------------
void MEM_EraseBlock(unsigned char sector_addr,
                    unsigned char block_addr,
                    unsigned char page_addr)
{

	TRISD=0X00;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧洲精品视频在线观看| 中文欧美字幕免费| 国产精品色婷婷久久58| 亚洲一二三区视频在线观看| 国产精品一二三区| 91精品国产综合久久婷婷香蕉 | 欧美日韩国产123区| 国产亚洲精久久久久久| 亚洲成人av电影在线| 成人一道本在线| 精品久久久久久久久久久久包黑料| 国产精品大尺度| 国产在线播放一区| 这里只有精品免费| 亚洲成人av中文| 欧洲一区在线电影| 亚洲品质自拍视频| 国产成人精品www牛牛影视| 欧美一个色资源| 亚洲成人综合在线| 欧美亚洲综合色| 一区二区三区毛片| 99久久免费精品| 国产精品网站导航| 国产成人鲁色资源国产91色综| 日韩一区二区三区视频| 偷拍亚洲欧洲综合| 欧美日韩综合一区| 亚洲国产精品一区二区久久| 中文字幕一区在线| 717成人午夜免费福利电影| 日韩影院免费视频| 中文字幕不卡在线| 精品福利在线导航| 欧美区在线观看| 91麻豆精品在线观看| 麻豆精品国产传媒mv男同 | 麻豆91精品91久久久的内涵| 日本欧美在线看| 欧美日韩亚洲国产综合| 亚洲一区视频在线观看视频| 一本高清dvd不卡在线观看| 亚洲欧美韩国综合色| 色综合久久六月婷婷中文字幕| 亚洲欧美日韩精品久久久久| 色激情天天射综合网| 亚洲影院理伦片| 在线电影一区二区三区| 久久aⅴ国产欧美74aaa| 久久九九国产精品| 99re6这里只有精品视频在线观看| 最近中文字幕一区二区三区| 欧美影视一区二区三区| 日韩va欧美va亚洲va久久| 日韩免费观看高清完整版在线观看| 日韩成人一区二区三区在线观看| 成人午夜免费电影| 日韩美女视频一区| 色婷婷一区二区三区四区| 亚洲人成网站精品片在线观看 | 亚洲精品老司机| 色女孩综合影院| 亚洲午夜久久久久久久久电影网| 欧美在线观看视频一区二区| 亚洲欧美视频在线观看| 99久久精品99国产精品| 一个色综合网站| 欧美人狂配大交3d怪物一区| 日韩福利电影在线| 久久综合av免费| 国产激情视频一区二区三区欧美 | 久草精品在线观看| 久久婷婷国产综合国色天香 | 久久精品一区二区三区不卡 | 777奇米四色成人影色区| 日韩不卡手机在线v区| 久久综合色婷婷| 色激情天天射综合网| 免费观看在线色综合| 久久久久久99久久久精品网站| 波多野结衣一区二区三区 | 久久五月婷婷丁香社区| 国产精品综合网| 亚洲五码中文字幕| 日韩精品一区二| 成人免费视频网站在线观看| 一级日本不卡的影视| 日韩欧美123| 色综合久久久久综合99| 蜜臂av日日欢夜夜爽一区| 国产精品国产三级国产普通话99| 欧美亚洲精品一区| 国产激情91久久精品导航| 国产精品国产精品国产专区不蜜| 欧美日韩在线精品一区二区三区激情| 免费一区二区视频| 亚洲丝袜另类动漫二区| 欧美大胆一级视频| 在线观看日韩电影| 国产不卡在线视频| 五月综合激情日本mⅴ| 国产精品视频免费| 69堂亚洲精品首页| 成年人午夜久久久| 精油按摩中文字幕久久| 天天综合天天做天天综合| 国产欧美一区二区精品久导航| 欧美色综合影院| 99热精品一区二区| 国产精品99久久久久| 免费精品99久久国产综合精品| 亚洲日本韩国一区| 日韩精品一区二区三区四区 | 欧美精品一区二区在线播放 | 成人黄色av电影| 精品写真视频在线观看 | 国产精品色在线| 日韩欧美在线1卡| 欧美性猛片aaaaaaa做受| 国产ts人妖一区二区| 狠狠色2019综合网| 麻豆91精品91久久久的内涵| 日韩黄色一级片| 香蕉久久夜色精品国产使用方法 | 欧洲一区在线电影| 色悠悠久久综合| 处破女av一区二区| 久久国产生活片100| 亚洲午夜视频在线观看| √…a在线天堂一区| 国产精品久久久久aaaa樱花 | 日本二三区不卡| 91丨九色丨黑人外教| av亚洲产国偷v产偷v自拍| 高清不卡一区二区| av在线这里只有精品| www.亚洲国产| 91极品视觉盛宴| 97久久超碰国产精品电影| 成人免费视频国产在线观看| 成人免费毛片app| www.欧美精品一二区| 91美女在线看| 欧美中文字幕不卡| 欧美一区二区三区成人| 日韩一区二区在线观看视频播放| 日韩欧美你懂的| 国产日韩在线不卡| 中文字幕国产一区| 亚洲成在线观看| 久久精品国产久精国产| 国产精品1区2区3区| 97se亚洲国产综合在线| 欧美自拍偷拍午夜视频| 日韩一区二区视频在线观看| 国产亚洲成年网址在线观看| 亚洲欧美另类久久久精品2019| 亚洲精品国久久99热| 日韩精品免费专区| 裸体健美xxxx欧美裸体表演| 国产一区二区看久久| 色8久久精品久久久久久蜜| 在线观看一区二区精品视频| 日韩一级黄色大片| 国产精品网站在线| 午夜欧美在线一二页| 日韩国产欧美在线播放| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲丝袜美腿综合| 日韩高清欧美激情| 国产在线不卡视频| 色呦呦日韩精品| 日韩限制级电影在线观看| 中文字幕第一区二区| 亚洲福利一二三区| 国产精品1区二区.| 欧美精品丝袜中出| 欧美国产1区2区| 日本亚洲视频在线| 另类中文字幕网| 这里只有精品99re| 亚洲四区在线观看| 国产成人精品影视| 欧美丰满少妇xxxbbb| 亚洲欧美激情在线| 国产电影精品久久禁18| 欧美日韩在线直播| 国产亚洲精品精华液| 久久国产精品第一页| 欧美少妇bbb| 精品国产欧美一区二区| 亚洲一区二区欧美| proumb性欧美在线观看| 精品久久久久久久人人人人传媒 | 欧美一级xxx| 丝袜诱惑亚洲看片| 91精品国产免费久久综合| 日韩va欧美va亚洲va久久| 欧美美女激情18p| 日本中文一区二区三区|