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

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

?? main.c

?? 我今天找的很多的資料!5460資料的!希望對大家有作用!
?? C
字號:
                

#include <stdio.h>
#include <reg51.h>
#include <main.h>
#include <interrupt.h>
#include <spi.h>
#include <dlt645.h>

#include <memory.h>
#include <rs485.h>

#define uchar unsigned char
#define uint unsigned int


//#define MAX_CMD_LEN		53		
#define INIT_FLAG_ADDR	0x10
#define INIT_FLAG_LEN	5	
#define DEVICE_ID_ADDR	0x15
#define DEVICE_ID_LEN	6
													
uchar code init_flag[INIT_FLAG_LEN]={0x19,0x98,0x09,0x30,0x04};

//uchar code table_calibrate_cmd[9]={0xc8,0xc4,0xc0,0xd8,0xd4,0xd0,0xe0,0xe8,0xe4};
uchar code table_bit[8]={1,2,4,8,0x10,0x20,0x40,0x80};


extern uchar count_level;
uchar 	pointer_buf485,rs485_timeout;
uchar 	pointer_send,send_len;
uchar 	oper_len,send_offset,chk_sum,send_i;
uchar 	device_id[DEVICE_ID_LEN];
uchar 	count_1s;
uint  	count_10s;
uchar 	rs485_buf[MAX_485_LEN];
uchar 	chksum;
uchar 	idata spi_buf[MAX_SPI_LEN];
uchar 	bdata flag_byte1;

sbit 	flag_key=flag_byte1^0;
sbit	flag_data_ok=flag_byte1^1;
sbit	flag_send_data=flag_byte1^2;
sbit	flag_level=flag_byte1^3;

sbit	flag_rs485=flag_byte1^4;
sbit	flag_key_detect=flag_byte1^5;
sbit	flag_rd_measure_module=flag_byte1^6;
sbit	flag_drdy=flag_byte1^7;		
													
typedef union 
		{	
  		  	uint dptr;
			uchar byte[2];
  	 	}un;		
				  	

sbit 	LED_A=P2^5;
sbit 	LED_B=P2^6;
sbit 	LED_C=P2^7;
sbit 	Sub_Rst=P1^0;

sbit  	MOTOR_L=P2^1;
sbit	MOTOR_COM=P2^2;
sbit	MOTOR_R=P2^3;

extern code struct TRead_Write_Attribute irregular_cmd_table[IRREGULAR_CMD_NUM];


//uchar 	ij;
//uint 	kj;
//bit 	flag_motor_l;

	main()
	{
		Delay_10us(250);
		
	   	P0=0xff;
		P1=0xff;
		P2=0x0f;
		P3=0xff;
		Sub_Rst=0;
		Delay_10us(250);
		Sub_Rst=1;
		
		for(count_1s=0;count_1s<3;count_1s++)
		{
			if(!Judge_Device_Init_Flag())
				break;
			else
				Delay_10us(250);	
		}
		if(count_1s==3)
		{
			device_id[0]=device_id[1]=device_id[2]=device_id[3]=device_id[4]=device_id[5]=0;
			spi_buf[0]=init_flag[0];
			spi_buf[1]=init_flag[1];
			spi_buf[2]=init_flag[2];
			spi_buf[3]=init_flag[3];
			spi_buf[4]=init_flag[4];
		   	Write_To_Memory(spi_buf,INIT_FLAG_ADDR,INIT_FLAG_LEN);
			Write_To_Memory(device_id,DEVICE_ID_ADDR,DEVICE_ID_LEN);
		}
  		
		pointer_buf485=0;
		flag_byte1=0x0;
		count_1s=0;

		Init_8051();   	
		
		while(1)
		{
			flag_byte1|=0x70;				
			
		   if(flag_rs485)
				Rs485_Process();
			if(flag_key_detect)
				Task_Key_Detect();
			if(flag_rd_measure_module)
				Read_Measure_Module_Data();
		
		}
	}
	

	void Rs485_Process(void)
	{
		if(pointer_buf485<10)
 			return;
		
		if(pointer_buf485<rs485_buf[9]+12)
			return;
						
		rs485_timeout=0;		
		pointer_buf485--;
		
		if((rs485_buf[7]!=0x68) || (rs485_buf[pointer_buf485]!=0x16) )
		{
			pointer_buf485=0;
			return;
		}
          
	 	pointer_buf485--;
		if(Get_Chksum(rs485_buf,rs485_buf[9]+10)!=rs485_buf[pointer_buf485])
		{
			pointer_buf485=0;
			return;
		}
			
		if(Compare_Device_ID())
		{
			pointer_buf485=0;
			return;
		}

		ES=0;											//forbid rs485 interrupt
		pointer_buf485=0;
		if(rs485_buf[8]==0x01)
			Read_Data_From_Spi();				//read data from measure board
		else if(rs485_buf[8]==0x04 || rs485_buf[8]==0x1e)
			Write_Data_To_Spi();					//write data to measure board
		else if(rs485_buf[8]==0x0a)
			Write_Device_Addr();					//write device id to EEPROM
		else if(rs485_buf[8]==0x1d)
			Erect_Device_Connect();				//contact with Personal Computer

	}

	void Task_Key_Detect(void)
	{
		uchar i;
		if(flag_key)	//key is pressed
		{
			KEY_BIT=1;
			if(!KEY_BIT)
				return;
			else
			{
				for(i=0;i<3;i++);
				if(KEY_BIT)
				{
					flag_key=0;
					P2=0xff;
					return;					
			   }
			}				
		}
		
		else
		{
			if(KEY_BIT)
				return;
			else
			{
				for(i=0;i<3;i++);
				if(!KEY_BIT)
				{
					flag_key=1;
//					count_2min=12000;			//T=1200*10ms=120000ms=120s=2min
					P2=0x0f;
/*
	for test
*/		

/*
		rs485_buf[0]=0x68;
		rs485_buf[1]=device_id[0];
		rs485_buf[2]=device_id[1];		
		rs485_buf[3]=device_id[2];
		rs485_buf[4]=device_id[3];				
		rs485_buf[5]=device_id[4];
		rs485_buf[6]=device_id[5];		
		rs485_buf[7]=0x68;
		rs485_buf[8]=0x1d;
		rs485_buf[9]=0x01;
		rs485_buf[10]=0x55;
//		Get_Send_Frame_Package(1);
		Send_Frame_To_485(1,0);
*/					
					
					return;					
			   }
			}			   
		}				
	}
		
													
	void Read_Measure_Module_Data(void)
	{		
		uchar temp;	
/*		SPI_DRDY=HIGH;
		if(count_1s)
			return;				
		flag_data_ok=0;
		if(SPI_DRDY || flag_send_data)
			return;
		count_1s=100;					
*/	
				
		if((!flag_drdy) || flag_send_data)	
			return;
							
		flag_drdy=0;						
						
	   	if(Read_From_Measure(0x08,spi_buf,MAX_SPI_LEN))		//128
   	   		return;
/* 
		temp=chksum;
	   	if(Read_From_Measure(0x07,&rs485_buf[MAX_485_LEN-2],1))
   	   		return;	   
				   	   
		if(temp!=chksum)
		{
//			LED_A=~LED_A;
			return;		   	   
		}			
*/		
		LED_A=~LED_A;
		
		flag_data_ok=1;		
		count_1s=250;
	}
	
	
	
	

			
		
	void Read_Data_From_Spi(void)
	{
		uchar item,cmd_type;
//		uchar len,property;
		un un0;
		
		un0.byte[0]=rs485_buf[11];
		un0.byte[1]=rs485_buf[10];
		
		item=Get_Iregular_Cmd_Atrib(un0.dptr);
		if(item==0xff)
		{
			ES=1;
			return;
		}			
		cmd_type=irregular_cmd_table[item].cmd_spi_read;
//		send_offset=irregular_cmd_table[item].offset;
//		oper_len=irregular_cmd_table[item].oper_len;
		
		if(cmd_type==0x60)		//read eeprom
		{	
			flag_data_ok=0;
			if(Read_From_Measure(0x60,spi_buf,MAX_SPI_LEN))	//128
			{
				ES=1;
				return;		
			}
		}
			
		else
		{
			if(!flag_data_ok)
			{
				ES=1;
				return;
			}				
		}
					
		Send_Frame_To_485(2+irregular_cmd_table[item].oper_len,irregular_cmd_table[item].offset);
	}
				
			
			

	void Write_Data_To_Spi(void)
	{
		uchar  item,phase,cmd_type,property;
		un un0;
		
		un0.byte[0]=rs485_buf[11];
		un0.byte[1]=rs485_buf[10];

		item=Get_Iregular_Cmd_Atrib(un0.dptr);
		if(item==0xff)
		{
			ES=1;
			return;
		}	                           	
		phase=rs485_buf[10] & 0x0f;		//phase=1,2,3(,4,5,6)
//		i=rs485_buf[10] >>4;			//i=1,2,3,4,5,6,7,8,9
			
		cmd_type=irregular_cmd_table[item].cmd_spi_write;
		property=irregular_cmd_table[item].property;
		
		if((property & 0x01)==0)
		{
			ES=1;
			return;			
      }
		SET_ALL_LED_OFF;			
     	if(phase<4)            
			SET_LED_ON(phase+4);			//p2.5 p2.6 p2.7
      	else
			SET_LED_ON(phase+1);		
				
		if(property & 0x02)			//case1: calibration
		{						                  	
			if(Write_To_Measure(cmd_type,&spi_buf[0],0))
			{
				ES=1;
        		SET_ALL_LED_OFF;			
				return;
			}				
			count_10s=1000;			//1000*10ms=10s						
			
			SPI_DRDY=HIGH;
         	do
         	{ 
         		if(count_10s==0)
         		{
         			SET_ALL_LED_OFF;			
         			ES=1;
         			return;
				}         		
         	}while(SPI_DRDY);  //wait drdy to low
                                                
         	do
         	{
         		if(count_10s==0)
         		{
         			SET_ALL_LED_OFF;		
         			ES=1;
         			return;
				}         		
         	}while(!SPI_DRDY); //wait drdy to high            
            
		}
		else if(property & 0x04)	//case2: soft modify
		{	
			if(property & 0x10)		//phase modify
			{		
				if(property & 0x08)
					rs485_buf[16]=0x87;
				else
					rs485_buf[16]=0x01;						
			}
			else
			{		
				rs485_buf[16]=rs485_buf[12];											
				if(property & 0x08)
					rs485_buf[16]|=0x80;
			}
				
			for(item=0;item<3;item++)
			{			  	
				if(Write_To_Measure(cmd_type,&rs485_buf[16],1)==0)
					break;
			}
			if(item!=3)
			{	
				for(phase=0;phase<30;phase++)
					for(item=0;item<255;item++);
			}
		}			
		else								//case3:other
		{
			item=irregular_cmd_table[item].oper_len;
			if(Write_To_Measure(cmd_type,&rs485_buf[16],item))
			{
				ES=1;
				return;					
			}				
		}			
       	
		if(!(property & 0x06))			//not calibration					
			Send_Frame_To_485(0,0);
		else
			ES=1;
		
		SET_ALL_LED_OFF;		
	}
	


	void Write_Device_Addr(void)
	{
		uchar i;					
		
		for(i=0;i<DEVICE_ID_LEN;i++)
			device_id[i]=rs485_buf[16+i];
		if(Write_To_Memory(device_id,DEVICE_ID_ADDR,DEVICE_ID_LEN))
		{
			ES=1;
			return;									   
		}			
//		Get_Send_Frame_Package(0);
		Send_Frame_To_485(0,0);				
	}
	
	
	void Erect_Device_Connect(void)
	{	
		uchar i;
		
      	rs485_buf[0]=0x68;
      	rs485_buf[1]='J';
      	rs485_buf[2]='A';
      	rs485_buf[3]='C';
      	rs485_buf[4]='K';
      	rs485_buf[5]='I';
      	rs485_buf[6]='E';
      	rs485_buf[7]=0x68;
		
		rs485_buf[10]=device_id[0];
		rs485_buf[11]=device_id[1];
		
      	for(i=0;i<4;i++)
         	spi_buf[i]=device_id[i+2];
		for(i=4;i<16;i++)
			spi_buf[i]=0;         
      		     
//		Get_Send_Frame_Package(18);
		Send_Frame_To_485(18,0);
	}


	/*---------------------------------------------
	 The following sentences are subroutines.			
	-----------------------------------------------*/
	
	


	void Init_8051(void)
	{
		flag_byte1=0;
		REN_TEN=0;
		PCON=0x00;
		TCON=0;
		SCON=0xd0;

		TMOD=0x21;
		IP=0x10;			//es priority is highest
		
		TH0=TH0_C;
		TL0=TL0_C;		/*T0=10ms*/
		TH1=253;		//baudrate=1200   232(24)
		TL1=253;		//baudrate=9600	253(3)

		TR0=1;
		TR1=1;
		
		ET1=0;		//forbite timer1 to interrupt
		ET0=1;
		ES=1;
		EA=1;
	}

	bit Judge_Device_Init_Flag(void)
	{	
		uchar i;
		Read_From_Memory(spi_buf,INIT_FLAG_ADDR,INIT_FLAG_LEN);
		for(i=0;i<INIT_FLAG_LEN;i++)
		{
			if(spi_buf[i]!=init_flag[i])
				break;
		}
		if(i!=INIT_FLAG_LEN)
			return 1;
		Read_From_Memory(spi_buf,DEVICE_ID_ADDR,DEVICE_ID_LEN);
		for(i=0;i<DEVICE_ID_LEN;i++)
			device_id[i]=spi_buf[i];
		return 0;			
	}

	bit Compare_Device_ID(void)
	{
		uchar i;
		for(i=0;i<DEVICE_ID_LEN;i++)
		{
			if(rs485_buf[i+1]!=0x99)
				break;
		}
		if(i==DEVICE_ID_LEN)
			return 0;
			
		for(i=0;i<DEVICE_ID_LEN;i++)
		{
			if(rs485_buf[i+1]!=device_id[i])
				break;
		}
		if(i==DEVICE_ID_LEN)
			return 0;
		else 
			return 1;
	}

/*
	bit Get_Inregular_Cmd_Index(uint cmd_type)
	{
    	uchar max,min,mid;
	   max=MAX_CMD_LEN;
	   min=0;
	   mid=MAX_CMD_LEN/2;
    		
	   if(cmd_type==table_cmd[max-1]) 
			return 0;
    	if(cmd_type==table_cmd[min]) 
			return 0;
	   while(1)
		{ 	
    	   if(cmd_type==table_cmd[mid]) return 0;
			else if(cmd_type>table_cmd[mid])
			{
	         min=mid;
	         mid=(max+min)/2;
	      }	
	      else
	      {
				max=mid;
				mid=(max+min)/2;
			}
			if((max-min)<=1)break;
		}
		if(cmd_type==table_cmd[max]) return 0;
		else if(cmd_type==table_cmd[min])return 0;
		else return 1;
	}
*/	

	
	void timer_0(void) interrupt 1 using 0	
	{	
		TH0=TH0_C;
		TL0=TL0_C;		//T0=10ms
		
		if(rs485_timeout)
		{
			rs485_timeout--;
			if(rs485_timeout==0)
			{
//				flag_send_data=0;
				pointer_buf485=0;
				REN_TEN=LOW;
			}				
		}
											
		SPI_DRDY=1;											
      	if(flag_level)   				//the flag is set when drdy is detected highly
      	{		
         	if(SPI_DRDY)        
         	{
            	count_level++;
            	if(count_level>5)
            	{	
               		flag_level=0;
               		count_level=0;
            	}
         	}	
         	else
            	count_level=0;
      	}
      	else  	
      	{					                           
        	if(!SPI_DRDY)          //p1.5=0
         	{		
            	count_level++;
            	if(count_level>5)
            	{		
					flag_level=1;
					flag_drdy=1;
               		count_level=0;   	
//               count_1s=20;		//clr flag_drdy when there isn't drdy signal waiting for 2s 
            	}
         	}	
         	else
            	count_level=0;
      	}
      
		if(count_1s)
		{	
			count_1s--;			
			if(count_1s==0)
				flag_data_ok=0;
		}					
			
			
		if(count_10s)
			count_10s--;			
	}
	

         














































































































































?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久人人做人人爱| 午夜成人在线视频| 亚洲综合色噜噜狠狠| 日韩电影一二三区| www.久久久久久久久| 制服丝袜亚洲色图| 亚洲欧美视频一区| 国产一区二区三区综合| 欧美精品久久久久久久多人混战| 国产日产精品1区| 日韩高清一区二区| 色先锋aa成人| 国产欧美一区二区精品性色| 五月婷婷激情综合网| jizz一区二区| 国产三级精品三级在线专区| 婷婷综合另类小说色区| 一本色道久久加勒比精品| 久久久精品免费免费| 美日韩一区二区| 欧美丝袜第三区| 亚洲美女精品一区| 成人午夜免费av| 亚洲精品一线二线三线 | 精品国产免费一区二区三区香蕉| 夜夜操天天操亚洲| 色综合久久综合网欧美综合网| 精品乱人伦小说| 久久99久久精品欧美| 日韩一区二区免费在线电影| 亚洲bt欧美bt精品777| 欧美性感一类影片在线播放| 亚洲男人的天堂在线观看| 波多野结衣中文字幕一区| 国产日产欧美一区| 高清av一区二区| 国产欧美日产一区| 成人理论电影网| 亚洲欧洲成人自拍| 91福利视频网站| 亚洲午夜久久久久久久久久久 | 蜜桃视频一区二区三区 | 色八戒一区二区三区| 亚洲三级小视频| 在线精品视频一区二区三四| 一区二区三区四区在线播放| 色噜噜久久综合| 五月天丁香久久| 日韩精品中文字幕一区二区三区| 美女在线一区二区| 国产日韩欧美精品综合| 成人av网站免费观看| 成人免费一区二区三区在线观看| 99久久99久久免费精品蜜臀| 一区二区三区欧美久久| 欧美日韩激情在线| 捆绑调教一区二区三区| 欧美国产一区二区在线观看| 色综合久久综合| 丝袜亚洲另类丝袜在线| 精品人在线二区三区| 成人精品视频一区二区三区尤物| 亚洲色欲色欲www| 这里只有精品电影| 国产精品综合二区| 亚洲精品大片www| 欧美一级搡bbbb搡bbbb| 国产一区不卡视频| 亚洲精品欧美综合四区| 日韩一级高清毛片| 99久精品国产| 日韩成人免费在线| 中文字幕在线视频一区| 欧美日本在线视频| 国产精品一区二区x88av| 亚洲激情校园春色| 精品区一区二区| 日本丶国产丶欧美色综合| 精品一区二区三区在线播放视频 | 亚洲品质自拍视频| 日韩欧美亚洲另类制服综合在线| eeuss鲁片一区二区三区在线观看| 亚洲国产三级在线| 中文字幕精品一区| 欧美电影影音先锋| 色94色欧美sute亚洲线路一ni | 日韩一区二区三区电影| 色综合久久久久综合| 国产麻豆精品theporn| 亚洲成人福利片| 中文字幕五月欧美| 亚洲精品在线一区二区| 欧美午夜免费电影| 不卡在线视频中文字幕| 国产专区欧美精品| 日日噜噜夜夜狠狠视频欧美人| 亚洲欧洲成人精品av97| 久久久国际精品| 精品人在线二区三区| 欧美人牲a欧美精品| 色琪琪一区二区三区亚洲区| 国产69精品久久99不卡| 久久99最新地址| 日本少妇一区二区| 日韩中文字幕不卡| 中文字幕一区二区三区四区 | 久久国产精品免费| 五月天精品一区二区三区| 亚洲欧美日本韩国| 国产精品久久久久久久久快鸭| 久久久精品欧美丰满| 国产色产综合色产在线视频| 久久这里只有精品首页| 欧美成人三级在线| 欧美成人精品二区三区99精品| 欧美一级片在线看| 制服丝袜激情欧洲亚洲| 欧美一区二区视频观看视频| 欧美一区二区视频在线观看| 欧美一级日韩一级| 精品少妇一区二区| 精品成a人在线观看| 亚洲精品一区二区三区精华液| 精品美女被调教视频大全网站| 欧美成人三级在线| 久久久www成人免费毛片麻豆| 国产日韩欧美高清| 国产精品久久国产精麻豆99网站| 国产精品婷婷午夜在线观看| 《视频一区视频二区| 亚洲欧美成人一区二区三区| 亚洲国产一区二区三区| 日韩国产在线观看| 国产一区二区三区不卡在线观看| 国产福利一区二区三区| 成人国产精品免费观看| 在线免费av一区| 欧美一区二区播放| 国产亲近乱来精品视频| 亚洲欧美偷拍卡通变态| 亚洲超碰97人人做人人爱| 久久精品国产色蜜蜜麻豆| 国产精品综合网| 在线免费不卡电影| 日韩欧美激情在线| 中文字幕中文字幕一区二区 | 麻豆一区二区三| 国产成人高清视频| 在线免费观看日韩欧美| 日韩一二在线观看| 国产精品久久久久久久裸模| 亚洲一区二区黄色| 精品一区二区三区av| 99精品欧美一区| 日韩欧美国产麻豆| 亚洲免费观看在线视频| 久久精品国产久精国产| 色系网站成人免费| 久久免费偷拍视频| 亚洲影院在线观看| 国产成人日日夜夜| 欧美精品自拍偷拍| 中文字幕在线观看一区| 麻豆精品一区二区| 欧美综合欧美视频| 国产亚洲va综合人人澡精品 | 捆绑调教美女网站视频一区| av资源网一区| 欧美一区二区三区在| 自拍偷拍亚洲综合| 国产曰批免费观看久久久| 日本高清不卡视频| 中文幕一区二区三区久久蜜桃| 日本美女一区二区| 日本道精品一区二区三区| 久久久久久久免费视频了| 午夜精品久久久久久久99樱桃| 成人精品在线视频观看| 精品久久一区二区三区| 亚洲国产人成综合网站| 99在线视频精品| 国产欧美日韩中文久久| 激情小说亚洲一区| 欧美一区二区三区在线看| 亚洲中国最大av网站| 99精品国产一区二区三区不卡| 久久久久久久国产精品影院| 美脚の诱脚舐め脚责91 | 色综合久久99| 一区免费观看视频| a在线播放不卡| 欧美激情一区三区| 国产一区二区三区美女| 精品国产乱码久久久久久久 | 欧美精品一二三区| 亚洲综合在线五月| 色天天综合色天天久久| 日韩伦理免费电影| 色综合天天综合网国产成人综合天| 中文字幕欧美日本乱码一线二线 |