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

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

?? main.c

?? 基于AVR單片機 Atmel Mega128的AD采集程序。
?? C
字號:
#include <avr/io.h>
#include <avr/signal.h>
#include <avr/interrupt.h>
#include <stdlib.h>
#include <inttypes.h>
#include "adc_sram.h"
#include "macro.h"
//全局變量////////////////////////////
uint8_t global_flag_serie;//通信狀態標志
uint16_t global_ad_counter;//AD轉換計數器
uint8_t global_start_sample_flag;//采樣開始標志
uint8_t global_sample_mode_flag;//采樣方式標志:手動或自動
uint8_t global_operation_detected_flag;//檢測到動作標志
uint16_t global_detect_close[5];//用于檢測合閘動作開始
uint16_t global_detect_trip[5];//用于檢測分閘動作開始
uint8_t global_channel_flag;//通道標志
uint16_t global_close_counter;//合閘線圈地址計數器
uint16_t global_trip_counter;//分閘線圈地址計數器
uint16_t global_motor_counter;//打壓電機地址計數器
uint16_t global_voltage_counter;//操作電壓地址計數器
uint8_t global_ad_finish_flag;//AD轉換結束標志
//串口接收中斷////////////////////////
SIGNAL(SIG_UART0_RECV)
{
//變量定義
	uint8_t temp_data;
	uint16_t i;
//關全局中斷
    cli();
//等待接收到數據標志被置位
	loop_until_bit_is_set(UCSR0A,RXC0);
//對接收到的字節進行判斷
	temp_data=UDR0;//讀取接收的字節
	if(temp_data!=0)//如果接收到非零
	{
		if(global_flag_serie==0)//如果接收到的為第一字節
		{
			switch (temp_data)
			{
				case 2://接到本機地址
					global_flag_serie=1;//準備接收第二字節數據
					UCSR0A&=~(1<<MPCM0);//清零MPCM0,允許繼續接收數據包
					break;
			//	case 0://接到復位命令
			//		global_start_sample_flag=0xff;//復位開始
			//		break;
				case 0x10://接到采集命令
					global_start_sample_flag=0;//開始采集數據
				//	sbi(PORTG,3);//測試用///////////////
					break;
			//	case 17://接到采集結束命令
				//	global_start_sample_flag=0xff;//結束采集數據
			//		break;
				case 0x22://接收到自動測試信號
					global_sample_mode_flag=0;
					break;
				default:
					break;
			}
		}
		else if((global_flag_serie==1)&&(temp_data<=32))//如果接收的是第二字節
		{
			for(i=0;i<0xfff;i++){;}//延時等待
			SEND_ONE_PACKAGE(temp_data);//發送數據包,temp_data為包序號
		//	if(temp_data==17){sbi(PORTG,3);}//測試用////////////
			global_flag_serie=0;
			UCSR0A|=(1<<MPCM0);//準備接收地址
		}
    }
	cbi(PORTE,2);//改為接收狀態
	sei();
}

//AD轉換結束中斷int7//////////////////
SIGNAL(SIG_INTERRUPT7)
{
//變量定義
	uint16_t int16_temp1;
	uint8_t temp1,temp2,i;
//關中斷
	cli();
//讀取ad轉換結果
	int16_temp1=AD7891_READ();
//如果是需要保存到RAM的采樣
	if(global_sample_mode_flag==0xFF)
	{
	//AD7891 deselect,否則數據總線與RAM沖突
		sbi(PORTD,5);
	//AD轉換結果存入RAM
		temp1=int16_temp1/256;
		temp2=int16_temp1%256;
	//保存數據
		switch(global_channel_flag)
		{
			case 1://保存合閘線圈電流
				SRAM_1M_8_WRITE(global_close_counter,temp1);//高位字節
				SRAM_1M_8_WRITE(global_close_counter+1,temp2);//低位字節
				global_close_counter+=2;
				break;
			case 2://保存分閘線圈電流
				SRAM_1M_8_WRITE(global_trip_counter,temp1);//高位字節
				SRAM_1M_8_WRITE(global_trip_counter+1,temp2);//低位字節
				global_trip_counter+=2;
				break;
			case 3://保存操作電壓
			//	SRAM_1M_8_WRITE(global_motor_counter,temp1);//高位字節
			//	SRAM_1M_8_WRITE(global_motor_counter+1,temp2);//低位字節
				SRAM_1M_8_WRITE(global_voltage_counter,temp1);//高位字節
				SRAM_1M_8_WRITE(global_voltage_counter+1,temp2);//低位字節
				global_voltage_counter+=2;
			//	global_motor_counter+=2;
				break;
		//	case 4://保存操作電壓
			//	SRAM_1M_8_WRITE(global_voltage_counter,temp1);//高位字節
			//	SRAM_1M_8_WRITE(global_voltage_counter+1,temp2);//低位字節
			//	global_voltage_counter+=2;
			//	break;
			default:
				break;
		}
	//計數器自加
		global_ad_counter++;
	}
//如果是檢測動作是否開始的采樣
	if(global_sample_mode_flag==0x00)
	{
	//采樣輪轉賦值
		//合閘線圈采樣
		if(global_ad_counter%2==0)
		{
		//	global_detect_close[0]=int16_temp1;
			global_detect_close[0]=global_detect_close[1];
			global_detect_close[1]=global_detect_close[2];
			global_detect_close[2]=int16_temp1;
	//		global_detect_close[2]=int16_temp1;
		}
		//分閘線圈采樣
		if(global_ad_counter%2==1)
		{
		//	global_detect_trip[0]=int16_temp1;
			global_detect_trip[0]=global_detect_trip[1];
			global_detect_trip[1]=global_detect_trip[2];
			global_detect_trip[2]=int16_temp1;
		//	global_detect_trip[2]=int16_temp1;
		}
	//判斷是否有碼值變化
		//判斷合閘數據
		if((global_detect_close[0]>2046)&&(global_detect_close[1]>2046)&&(global_detect_close[2]>2046))//&&(global_detect_close[3]>2045)&&(global_detect_close[4]>2045))
		{
		//檢測到動作標志賦值
			global_operation_detected_flag=1;
		}
	//	if(global_detect_close[0]>2049)
	//	{
	//		if((global_detect_close[1]-global_detect_close[0]>1)&&(global_detect_close[2]-global_detect_close[1]>1))//&&(global_detect_close[3]-global_detect_close[0]>1))
	//		{
			//檢測到動作標志賦值
	//			global_operation_detected_flag=1;
	//		}
	//	}
		//判斷分閘數據
		if((global_detect_trip[0]>2046)&&(global_detect_trip[1]>2046)&&(global_detect_trip[2]>2046))//&&(global_detect_trip[3]>2045)&&(global_detect_trip[4]>2045))
		{
		//檢測到動作標志賦值
			global_operation_detected_flag=1;
		}
	//	if(global_detect_trip[0]>2049)
	//	{
	//		if((global_detect_trip[1]-global_detect_trip[0]>1)&&(global_detect_trip[2]-global_detect_trip[1]>1))//&&(global_detect_trip[3]-global_detect_trip[0]>1))
	//		{
			//檢測到動作標志賦值
	//			global_operation_detected_flag=1;
	//		}
	//	}
	//	if(int16_temp1>2049)
	//	{
		//檢測到動作標志賦值
	//		global_operation_detected_flag=1;
	//	}
		global_ad_counter++;
	}
//完成一次AD轉換,將AD轉換結束標志賦值
	global_ad_finish_flag=0xFF;
//開中斷
	sei();
}

//主程序//////////////////////////////
int main()
{
//變量定義
	uint8_t i;
//初始化和串口波特率設置
	INITIATION();
//PG3供測試用/////////////
	sbi(DDRG,3);
	cbi(PORTG,3);
//開中斷
	sei();
//自動測試標志初始化
	global_sample_mode_flag=0xFF;
//采集控制標志初始化
	global_start_sample_flag=0xFF;
//串口接收控制變量初始化
	global_flag_serie=0;
//開串口接收中斷
	UART_RXCINT_OPEN();
//延時
	for(i=0;i<0xFF;i++)
	{
		TIMER_BEGIN();
		//等待定時器溢出,AD結束中斷處理在等待過程中完成
		while(!(TIFR&(1<<OCF1A))){;}
		TIFR|=1<<OCF1A;
		//終止定時器
		TIMER_STOP();
	}
//數據采集流程
	while(1)
	{
	//檢測動作開始標志清零
		for(i=0;i<4;i++){global_detect_close[i]=0;}
		for(i=0;i<4;i++){global_detect_trip[i]=0;}
	//如果自動測試
		if(global_sample_mode_flag==0x00)
		{
		//關串口接收中斷
			UART_RXCINT_CLOSE();
		//開外部中斷7(AD轉換結束中斷)
			EXTERN_INTERRUPT_OPEN(7);
		//檢測采樣
			OPERATION_DETECTION();
		//如果檢測到有信號變化,向COUNTER發送開始采集命令
			sbi(UCSR0B,TXB8);//將TXB8置1
			UART_DATA_BYTE_SEND(0x10);//發送數據采集命令
		//開始采樣
			SAMPLE();
		//關外部中斷7
			EXTERN_INTERRUPT_CLOSE(7);
		//開串口接收中斷,等待數據包傳輸命令
			UART_RXCINT_OPEN();
		//向主機發送采集結束命令0x33
			UART_DATA_BYTE_SEND(0x33);
		//自動測試標志復原
			global_sample_mode_flag=0xFF;
		}
	//如果接收到開始采集命令
		if(global_start_sample_flag==0x00)
		{
		//關串口接收中斷
			UART_RXCINT_CLOSE();
		//開外部中斷7(AD轉換結束中斷)
			EXTERN_INTERRUPT_OPEN(7);
		//采樣
			SAMPLE();
		//關外部中斷7
			EXTERN_INTERRUPT_CLOSE(7);
		//開串口接收中斷,等待數據包傳輸命令
			UART_RXCINT_OPEN();
		//開始采集標志復原
			global_start_sample_flag=0xFF;
		}
	}
	
	for(;;){;}
	return 0;
}

/*final test//////////////////////////
	//變量定義
//初始化和串口設置,不包括串口中斷開啟
	INITIATION();
//PG3供測試用/////////////
	sbi(DDRG,3);
	cbi(PORTG,3);
//開中斷
	sei();
//數據采集流程
	while(1)
	{
	//采集控制標志初始化
		global_start_sample_flag=0xFF;
	//開串口接收中斷
		UART_RXCINT_OPEN();
	//等待采集控制標志
		while(global_start_sample_flag!=0x00){;}
	//關串口接收中斷
		UART_RXCINT_CLOSE();
	//開外部中斷7(AD轉換結束中斷)
		EXTERN_INTERRUPT_OPEN(7);
	//采樣
		SAMPLE();
	//關外部中斷7
		EXTERN_INTERRUPT_CLOSE(7);
	//開串口接收中斷,等待數據包傳輸命令
		UART_RXCINT_OPEN();
	}
*/
/*timer test//////////////////////////
	sbi(DDRE,6);//用示波器看PE6的輸出
	sbi(PORTE,6);
	TIMER_BEGIN();
	while(1)
	{
		PORTE=~PORTE;
		while(!(TIFR&(1<<OCF1A))){;}
		TIFR|=1<<OCF1A;
	}
	TIMER_STOP();
*/
/*sun's test//////////////////////////
	DDRC=0xFF;//端口C輸出
	PORTC=0xFF;
	DDRF|=0x0F;//端口F輸出
	sbi(DDRB,2);//CONVST初始化,輸出
	sbi(PORTB,2);
	sbi(DDRG,0);//WR初始化,輸出1
	sbi(PORTG,0);
	sbi(DDRG,1);//RD初始化,輸出1
	sbi(PORTG,1);
	sbi(DDRG,2);//ALE初始化,輸出1
	sbi(PORTG,2);
	sbi(DDRD,5);//CS_ADC初始化,輸出1
	sbi(PORTD,5);
	sbi(DDRD,6);//CS_RAM初始化,輸出1
	sbi(PORTD,6);
	UART_SETTING(19200,8000000);//串口初始化
	sbi(DDRE,2);// 串口接受控制
	cbi(PORTE,2);
	EXTERN_INTERRUPT_OPEN(7);//開外部中斷7,等待AD轉換結束
	sei();//開中斷
	sample_sign=0xff;
	global_flag_serie=0;
	
	uint32_t addd=00010;
	uint16_t i;
	for(i=0;i<0xffff;i++)
	{
		SRAM_1M_8_WRITE(addd,i);
		addd++;
	}
	
	for(;;)
	{
		;
	}
*/

/*extern interrupt test///////////////
	uint16_t j;
	
	INITIATION();//初始化和串口設置,不包括串口中斷開啟
	sei();//開中斷
	EXTERN_INTERRUPT_OPEN(7);//開外部中斷7(AD轉換結束中斷)
	AD7891_CHANNEL_SELECT(2);
	for(;;)
	{
		AD7891_CONVERSION_START();
		for(j=0;j<0xFF;j++)
		{
			j|=0x00;
		}
	}
*/

/*AD7891 test/////////////////////////
	INITIATION();//初始化和串口設置,不包括串口中斷開啟
	sei();//開中斷
	while(1)
	{
		EXTERN_INTERRUPT_OPEN(7);//開外部中斷7(AD轉換結束中斷)
		AD7891_CHANNEL_SELECT(1);//選擇通道1
		AD7891_CONVERSION_START();//轉換開始
	}
*/
/*SRAM test///////////////////////////
	uint8_t temp1,temp2;
	SRAM_1M_8_WRITE(0x10,0x88);//高位字節
	SRAM_1M_8_WRITE(0x11,0x89);//低位字節

	temp1=SRAM_1M_8_READ(0x10);//高位字節
	temp2=SRAM_1M_8_READ(0x11);//低位字節
	
	temp1=0x88;
	temp2=0xFF;
*/
/*SIGNAL(SIG_INTERRUPT7)//////////////
SIGNAL(SIG_INTERRUPT7)
{
//變量定義
	uint16_t int16_temp1,int16_temp2,int16_temp3;
	uint8_t temp1,temp2,i;
//關中斷
	cli();
//讀取ad轉換結果
	int16_temp1=AD7891_READ();
//AD7891 deselect,否則數據總線與RAM沖突
	sbi(PORTD,5);
//AD轉換結果存入RAM
	temp1=int16_temp1/256;
	temp2=int16_temp1%256;
	int16_temp2=global_ad_counter%4;
	int16_temp3=global_ad_counter/4;
	//保存合閘線圈電流
	if(int16_temp2==0)
	{
		SRAM_1M_8_WRITE(0+int16_temp3*2,temp1);//高位字節
		SRAM_1M_8_WRITE(0+int16_temp3*2+1,temp2);//低位字節
	}
	//保存分閘線圈電流
	if(int16_temp2==1)
	{
		SRAM_1M_8_WRITE(10000+int16_temp3*2,temp1);//高位字節
		SRAM_1M_8_WRITE(10000+int16_temp3*2+1,temp2);//低位字節
	}
	//保存電機電流
	if(int16_temp2==2)
	{
		SRAM_1M_8_WRITE(20000+int16_temp3*2,temp1);//高位字節
		SRAM_1M_8_WRITE(20000+int16_temp3*2+1,temp2);//低位字節
	}
	//保存操作電壓
	if(int16_temp2==3)
	{
		SRAM_1M_8_WRITE(30000+int16_temp3*2,temp1);//高位字節
		SRAM_1M_8_WRITE(30000+int16_temp3*2+1,temp2);//低位字節
	}
//計數器自加
	global_ad_counter++;
//開中斷
	sei();
}
*/
/*傳感器測試用////////////////////////
SIGNAL(SIG_INTERRUPT7)
{
//變量定義
	uint16_t int16_temp1;
	float float_temp1,float_temp2;
//關中斷
	cli();
//讀取ad轉換結果
	int16_temp1=AD7891_READ();
	float_temp1=int16_temp1;
	float_temp2=float_temp1/20.48;
	float_temp2-=100;
	float_temp2*=1000;
//開中斷
	sei();
}
*/
/*測試SRAM中數據是否正確//////////////
//變量定義
	uint16_t i;
	uint8_t temp_array[512];
//初始化和串口設置,不包括串口中斷開啟
	INITIATION();
//PG3供測試用/////////////
	sbi(DDRG,3);
	cbi(PORTG,3);
//開中斷
	sei();
//數據采集流程
	while(1)
	{
	//開外部中斷7(AD轉換結束中斷)
		EXTERN_INTERRUPT_OPEN(7);
	//采樣
		SAMPLE();
	//關外部中斷7
		EXTERN_INTERRUPT_CLOSE(7);

		for(i=0;i<512;i++)
		{
			temp_array[i]=SRAM_1M_8_READ(i);//讀取數據
		}
	}
*/


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产日韩一级| 精品日本一线二线三线不卡| 国产精品欧美精品| 欧美高清hd18日本| 国产精品77777| 亚洲一区av在线| 中文字幕一区免费在线观看 | 欧美精品一区二区三| 色综合中文字幕国产| 青青草原综合久久大伊人精品 | 7777精品伊人久久久大香线蕉最新版| 国产在线一区二区| 美女视频黄免费的久久 | 中文字幕在线观看一区| 欧美一区欧美二区| 欧美情侣在线播放| 91片黄在线观看| 午夜精品久久久久久| 夜夜精品视频一区二区| 亚洲激情网站免费观看| 亚洲免费观看高清| 一区免费观看视频| 国产精品视频你懂的| 中文子幕无线码一区tr| 国产亚洲女人久久久久毛片| 久久天堂av综合合色蜜桃网| 2024国产精品| 国产精品色呦呦| 亚洲三级电影全部在线观看高清| 国产精品国产精品国产专区不片| 国产精品国产三级国产普通话99| 中文字幕中文字幕在线一区| 国产精品久久久久久福利一牛影视| 18欧美乱大交hd1984| 亚洲综合男人的天堂| 毛片不卡一区二区| 99久久国产综合精品女不卡| 一本久道中文字幕精品亚洲嫩| 欧洲亚洲精品在线| 国产农村妇女毛片精品久久麻豆 | 欧美在线观看你懂的| 欧美一区二区免费观在线| 亚洲激情一二三区| 国产一区在线视频| 欧美精品v日韩精品v韩国精品v| 久久久久国产精品厨房| 精品一区精品二区高清| 欧洲一区在线观看| 国产精品三级久久久久三级| 日本不卡视频在线| 在线亚洲人成电影网站色www| 欧美mv日韩mv亚洲| 日韩精品电影在线| 国产福利一区二区三区在线视频| 欧美伊人精品成人久久综合97| 久久久久久电影| 国产一区二区视频在线| 欧美一区二区高清| 蜜臀久久久99精品久久久久久| 91视频你懂的| 亚洲丝袜制服诱惑| 8v天堂国产在线一区二区| 一区二区三区中文字幕| 成人黄色在线网站| 久久精品视频免费观看| 老汉av免费一区二区三区| 欧美一级理论片| 国产又黄又大久久| 国产精品另类一区| 91国产免费看| 亚洲成人自拍一区| 欧美久久久久中文字幕| 另类小说综合欧美亚洲| 国产天堂亚洲国产碰碰| 99精品一区二区三区| 一区二区三区免费在线观看| 91久久国产最好的精华液| 亚洲综合一区二区精品导航| 欧美日韩午夜精品| 国产精品一区在线观看乱码| 国产精品视频一二| 欧美日韩你懂得| 国产精品一区二区久激情瑜伽| |精品福利一区二区三区| 欧美日韩一区二区三区在线 | 国产91高潮流白浆在线麻豆 | 日韩美女一区二区三区四区| 粉嫩av一区二区三区在线播放| 亚洲免费av高清| 国产亚洲女人久久久久毛片| 在线免费观看一区| 国产精品系列在线播放| 亚洲电影第三页| 国产欧美日韩在线| 日韩一级片网址| 欧美人妇做爰xxxⅹ性高电影| 国产91丝袜在线观看| 裸体健美xxxx欧美裸体表演| 亚洲视频每日更新| 中国av一区二区三区| 欧美精品一区二区在线播放| 欧美日韩在线播放| 欧美视频一区在线观看| 一本大道av一区二区在线播放| 高清不卡一区二区在线| 成人夜色视频网站在线观看| 国产精品一区免费视频| 久久99久久99小草精品免视看| 日韩成人一区二区| 奇米色777欧美一区二区| 午夜精彩视频在线观看不卡| 亚洲在线视频免费观看| 一区二区三区四区精品在线视频 | 久久久久亚洲蜜桃| 日本一区二区三区免费乱视频 | 久久女同性恋中文字幕| 中文字幕成人网| 亚洲黄网站在线观看| 天堂精品中文字幕在线| 另类综合日韩欧美亚洲| 国产成人精品综合在线观看| 波波电影院一区二区三区| 色婷婷亚洲婷婷| 欧美大胆人体bbbb| 一区二区三区四区激情| 视频一区免费在线观看| 国产成+人+日韩+欧美+亚洲| 91九色最新地址| 精品久久国产老人久久综合| 国产精品国产自产拍高清av| 首页国产欧美久久| 粗大黑人巨茎大战欧美成人| 欧美四级电影在线观看| 欧美国产日韩在线观看| 午夜久久福利影院| 在线视频综合导航| 亚洲天堂精品在线观看| 国产成人av网站| 91精品在线麻豆| 亚洲一区二区三区在线看| 国产成人精品三级麻豆| 欧美肥胖老妇做爰| 亚洲激情欧美激情| 粉嫩av亚洲一区二区图片| 日韩免费一区二区三区在线播放| 亚洲一区视频在线观看视频| 欧美精品九九99久久| 三级久久三级久久| 欧美色图一区二区三区| 亚洲六月丁香色婷婷综合久久| 国产成人精品亚洲日本在线桃色| 久久综合九色欧美综合狠狠 | 国产高清精品网站| 一色屋精品亚洲香蕉网站| 狠狠色综合日日| 欧美v日韩v国产v| 国产激情视频一区二区在线观看| 久久久久99精品国产片| 国产成人精品免费一区二区| 国产亚洲综合性久久久影院| 国产成人啪午夜精品网站男同| 中文字幕在线视频一区| 欧美色爱综合网| 国产一区二区三区免费看| 亚洲视频一区二区免费在线观看 | 777午夜精品免费视频| 国产美女在线观看一区| 亚洲欧美激情视频在线观看一区二区三区 | 色天天综合色天天久久| 亚洲国产sm捆绑调教视频| 欧美一区二区日韩| 欧美在线一区二区三区| 精品一区二区日韩| 水蜜桃久久夜色精品一区的特点| 久久久久久久久久久黄色| 欧美日韩一区二区电影| 国产精品一区二区在线观看不卡| 一区二区在线免费| 国产亚洲综合在线| 欧美大黄免费观看| 91精品国产综合久久蜜臀| 一本大道久久a久久综合| 国产激情视频一区二区三区欧美| 五月综合激情网| 亚洲一区免费视频| 亚洲成人www| 亚洲成人免费视频| 亚洲精品中文在线影院| 亚洲天天做日日做天天谢日日欢| 国产亚洲精品久| 国产精品欧美经典| 日韩美女视频一区| 中文字幕字幕中文在线中不卡视频| 欧美激情一区二区三区全黄| 久久久久久久久久久久久女国产乱| 久久精品夜夜夜夜久久| 国产亚洲欧洲997久久综合| 国产日韩av一区| 亚洲黄色小视频| 日韩高清在线不卡|