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

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

?? logic.c

?? 使用M32的8通道邏輯分析儀源代碼 使用M32的8通道邏輯分析儀源代碼
?? C
字號:
#include <avr/io.h>
#include <avr/pgmspace.h>
//#include <avr/interrupt.h>
//#include <avr/signal.h>
#include "logic.h"

#define DATAIN	PINA
#define DATADIR	DDRA
#define DATAOUT	PORTA

#define	LOCKDDR	DDRB
#define	LOCK	PORTB
#define LE		0x01

#define lock	LOCK&=(~LE)							//LE=0,鎖存數據
#define unlock	LOCK|=LE							//LE=1,數據進入單片機
#define wait 	while(!(UCSRA&0x80))				//等待數據
#define waitTXC while(!(UCSRA&0x40))				//等待發送完成
#define clrTXC  UCSRA |= 0x04						//清除發送完成標志

const prog_uchar delay_lo[] = {0,  3,  8,  28,  88,  188,  132,  220,  196,148,52, 116,244};
//							   2us,5us,10us,20us,50us,100us,200us,500us,1ms,2ms,4ms,8ms,16ms
const prog_uchar delay_hi[] = {0,  1,  1,   1,   1,   1,    2,    4,    8,  16, 32, 63, 125};

int main()
{
	uint8_t ram[2048];

/****************************初始化命令************************************/
/*管腳配置*/
//DDxn 用來選擇引腳的方向。DDxn 為"1“ 時, Pxn 配置為輸出,否則配置為輸入。
//引腳配置為輸入時,若PORTxn 為"1“,上拉電阻將使能。
//如果需要關閉這個上拉電阻,可以將PORTxn 清零,或者將這個引腳配置為輸出。
	DATADIR = 0x00;				//數據口設置為輸入
	DATAOUT = 0x00;				//關閉上拉電阻
	LOCKDDR = (0x00|LE);		//LE設置為輸出
	unlock;						//LE=0;
/*UART設置*/
	UCSRA = 0x00;				//
	UCSRB = 0x18;				//發送、接收使能
	UCSRC = 0x06;				//8位,無校驗
	UBRRH = 0;
	UBRRL = 25;					//波特率為38400

	while(1)
	{
		wait;					//等待觸發位數據
		trig = UDR;
		wait;					//等待觸發使能數據
		trig_en = UDR;;
		wait;					//等待頻率低位
		fre_lo = UDR;
		wait;					//等待頻率高位
		fre_hi = UDR;
	//分辨率={lo}{hi}
	//2us=0x0402;5us=0x0a02;10us=0x1402;
	//20us=0x2802;50us=0x6402;100us=0xc802;
	//200us=0x3203;500us=0x7d03;1ms=0xfa03;
	//2ms=0x7d04;4ms=0xfa04;8ms=0x7d05;16ms=0xfa05
		wait;					//等待預觸發數據
		pre_trig = UDR;
		wait;					//等待預觸發數據
		pre_trig = UDR;
		wait;					//等待工作模式
		mode = UDR;
		clrTXC;
		UDR = 'D';
		waitTXC;
		for(addr=0; addr<2048; addr++)
			ram[addr] = 0;

		switch(fre_hi)
		{
			case 2:
				if(fre_lo == 0x04)
					sample_num = 0;
				if(fre_lo == 0x0a)
					sample_num = 1;
				if(fre_lo == 0x14)
					sample_num = 2;
				if(fre_lo == 0x28)
					sample_num = 3;
				if(fre_lo == 0x64)
					sample_num = 4;
				if(fre_lo == 0xc8)
					sample_num = 5;
				break;
			case 3:
				if(fre_lo == 0x32)
					sample_num = 6;
				if(fre_lo == 0x7d)
					sample_num = 7;
				if(fre_lo == 0xfa)
					sample_num = 8;
				break;
			case 4:
				if(fre_lo == 0x7d)
					sample_num = 9;
				if(fre_lo == 0xfa)
					sample_num = 10;
				break;
			case 5:
				if(fre_lo == 0x7d)
					sample_num = 11;
				if(fre_lo == 0xfa)
					sample_num = 12;
				break;
		}
		addr = 0;
		switch(mode)
		{
			case 0:				//普通模式
start:			if(sample_num > 12)
					break;
				addr = 0;
				if(sample_num==0) 						//采樣頻率2us
				{
					pre_trig = 8;						//采樣頻率為2us時不能預觸發
					addr = 1;
					while(1)
					{
						lock;
						asm("nop");
						asm("nop");
						temp = DATAIN;
						asm("nop");
						asm("nop");
						unlock;
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						if(trig == (temp | trig_en))
							break;
					}
					asm("nop");
					asm("nop");
					ram[0] = temp;
					asm("nop");
					asm("nop");
					while(1)
					{
						lock;
						asm("nop");
						asm("nop");
						ram[addr] = DATAIN;
						asm("nop");
						asm("nop");
						unlock;
						asm("ldi r16,1");
						asm("ldi r17,0");
						asm("add r10,r16");
						asm("adc r11,r17");
						asm("nop");
						asm("nop");
						if(addr_hi==8)
							break;
					}
				}
				else if(sample_num==1)					//采樣頻率為5us
				{
					while(1)
					{
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						lock;
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						temp = DATAIN;
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						unlock;
						if(trig == (temp | trig_en))
						{
							addr_trig_lo=addr_lo;
							addr_trig_hi=addr_hi;
							break;
						}
						else
						{
							if(addr_hi == (8 - pre_trig))			//預觸發空間
							{
								addr_hi=0;
							}
							else
							{
								asm("nop");
								asm("nop");
								asm("nop");
							}
						}
						ram[addr]=DATAIN;
						asm("ldi r16,1");
						asm("ldi r17,0");
						asm("add r10,r16");
						asm("adc r11,r17");
					}
					asm("nop");
					asm("nop");
					asm("nop");
					addr_lo = 0x00;
					addr_hi = 8 - pre_trig;
					ram[addr]=temp;
					addr_lo = 0x01;
					asm("nop");
					asm("nop");
					asm("nop");
					asm("nop");
					asm("nop");
					asm("nop");
					asm("nop");
					asm("nop");
					while(1)
					{
						lock;
						asm("nop");
						asm("nop");
						asm("nop");
						ram[addr] = DATAIN;
						asm("nop");
						asm("nop");
						unlock;
						asm("ldi r16,1");
						asm("ldi r17,0");
						asm("add r10,r16");
						asm("adc r11,r17");
						asm("nop");
						asm("nop");
						if(addr_hi==8)
							break;
						time_lo=pgm_read_byte(delay_lo + 1);
						time_hi=pgm_read_byte(delay_hi + 1);
						while(1)
						{
							asm("sub r12,r16");
							asm("sbc r13,r17");
							asm("nop");
							if(!time_hi)
								break;
						}
					}
				}
				else									//大于5us
				{
					while(1)
					{
						lock;
						asm("nop");
						asm("nop");
						asm("nop");
						temp = DATAIN;
						asm("nop");
						asm("nop");
						asm("nop");
						unlock;
						if(trig == (temp | trig_en))
						{
							addr_trig_lo=addr_lo;
							addr_trig_hi=addr_hi;
							break;
						}
						else
						{
							if(addr_hi == (8 - pre_trig))			//預觸發空間
							{
								addr_hi=0;
							}
							else
							{
								asm("nop");
								asm("nop");
								asm("nop");
							}
						}
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						ram[addr]=DATAIN;
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						asm("ldi r16,1");
						asm("ldi r17,0");
						asm("add r10,r16");
						asm("adc r11,r17");
						time_lo=pgm_read_byte(delay_lo + sample_num);
						time_hi=pgm_read_byte(delay_hi + sample_num);
						while(1)
						{
							asm("sub r12,r16");
							asm("sbc r13,r17");
							asm("nop");
							if(!time_hi)
								break;
						}
					}
					addr_lo = 0x00;
					addr_hi = 8 - pre_trig;
					ram[addr] = temp;
					addr_lo = 0x01;
					asm("nop");
					asm("nop");
					asm("nop");
					asm("ldi r16,1");
					asm("ldi r17,0");
					while(1)
					{
						time_lo=pgm_read_byte(delay_lo + sample_num);
						time_hi=pgm_read_byte(delay_hi + sample_num);
						asm("nop");
						asm("nop");
						while(1)
						{
							asm("sub r12,r16");
							asm("sbc r13,r17");
							asm("nop");
							if(!time_hi)
								break;
						}
						lock;
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						ram[addr] = DATAIN;
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						asm("nop");
						unlock;
						asm("nop");
						asm("nop");
						asm("nop");
						asm("ldi r16,1");
						asm("ldi r17,0");
						asm("add r10,r16");
						asm("adc r11,r17");
						asm("nop");
						asm("nop");
						for(temp=0;temp<1;temp++)
							asm("nop");
						if(addr_hi==8)
							break;
					}
				}
				break;
			case 1:				//外部時鐘,上升延
				trig |= 0x01;
				trig_en |= 0x01;
				addr = 0;
				while(1)
				{
					do
					{
						temp = DATAIN;
					}
					while(temp & 0x01);
					do
					{
						temp = DATAIN;
					}
					while(!(temp & 0x01));
					if(trig == (temp | trig_en))
					{
						addr_trig_lo=addr_lo;
						addr_trig_hi=addr_hi;
						break;
					}
					else
					{
						if(addr_hi == (8 - pre_trig))			//預觸發空間
						{
							addr_hi=0;
						}
					}
					ram[addr]=temp;
					asm("ldi r16,1");
					asm("ldi r17,0");
					asm("add r10,r16");
					asm("adc r11,r17");
				}
				addr_lo = 0x00;
				addr_hi = 8 - pre_trig;
				ram[addr] = temp;
				addr_lo = 0x01;
				while(1)
				{
					do
					{
						temp = DATAIN;
					}
					while(temp & 0x01);
					do
					{
						temp = DATAIN;
					}
					while(!(temp & 0x01));
					ram[addr]=temp;
					asm("ldi r16,1");
					asm("ldi r17,0");
					asm("add r10,r16");
					asm("adc r11,r17");
					if(addr_hi==8)
						break;
				}
				break;
			case 2:				//外部時鐘,下降延
				trig |= 0x01;
				trig_en |= 0x01;
				addr = 0;
				while(1)
				{
					do
					{
						temp = DATAIN;
					}
					while(!(temp & 0x01));
					do
					{
						temp = DATAIN;
					}
					while(temp & 0x01);
					if(trig == (temp | trig_en))
					{
						addr_trig_lo=addr_lo;
						addr_trig_hi=addr_hi;
						break;
					}
					else
					{
						if(addr_hi == (8 - pre_trig))			//預觸發空間
						{
							addr_hi=0;
						}
					}
					ram[addr]=temp;
					asm("ldi r16,1");
					asm("ldi r17,0");
					asm("add r10,r16");
					asm("adc r11,r17");
				}
				addr_lo = 0x00;
				addr_hi = 8 - pre_trig;
				ram[addr] = temp;
				addr_lo = 0x01;
				while(1)
				{
					do
					{
						temp = DATAIN;
					}
					while(!(temp & 0x01));
					do
					{
						temp = DATAIN;
					}
					while(temp & 0x01);
					ram[addr]=temp;
					asm("ldi r16,1");
					asm("ldi r17,0");
					asm("add r10,r16");
					asm("adc r11,r17");
					if(addr_hi==8)
						break;
				}
				break;
			case 3:				//外部觸發,上升延
				trig = 0xff;
				trig_en = 0xfe;
				pre_trig = 8;
				goto start;
				break;
			case 4:				//外部觸發,下降延
				trig = 0xfe;
				trig_en = 0xfe;
				pre_trig = 8;
				goto start;
				break;
			case 5:				//靜態模式
				break;
			case 7:				//二進制模式
				pre_trig = 8;
				for(addr=0; addr<2048; addr++)
					ram[addr] = addr_lo;;
				break;
			case 8:				//AA、55模式
				pre_trig = 8;
				for(addr=0; addr<2048; addr++)
				{
					if(addr&0x01)
						ram[addr] = 0x55;
					else
						ram[addr] = 0xaa;
				}
				break;
			case 9:				//全為0
				pre_trig = 8;
				for(addr=0; addr<2048; addr++)
					ram[addr] = 0;
				break;
		}
		if(pre_trig != 8)		//預觸發不為0%
		{
			addr = addr_trig;
			for(;addr<2048;)
			{
				clrTXC;
				UDR=ram[addr];
				waitTXC;
				addr++;
				if(addr_hi == 8 - pre_trig)
				{
					addr = 0;
				}
				if(addr == addr_trig)
				{
					break;
				}
			}
		}
		addr_lo = 0x00;
		addr_hi = 8 - pre_trig;
		for(;addr<2048;addr++)
		{
			clrTXC;
			UDR=ram[addr];
			waitTXC;
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
奇米影视一区二区三区| 欧美亚洲丝袜传媒另类| 91社区在线播放| 欧美一级理论性理论a| 中文字幕欧美三区| 日韩在线一二三区| av电影在线观看不卡| 日韩欧美中文一区二区| 亚洲人成网站精品片在线观看| 免费精品视频在线| 日本韩国欧美三级| 国产精品午夜在线| 久久精品国产免费| 欧美日韩国产一区二区三区地区| 国产欧美日韩不卡免费| 美女视频黄 久久| 欧美色综合影院| 1024精品合集| 国产99久久久国产精品免费看| 欧美精品免费视频| 一区二区三区免费网站| 成人av网站免费| 国产亚洲一二三区| 精品一区二区三区在线播放| 欧美日韩极品在线观看一区| 亚洲欧美日韩一区二区三区在线观看| 高清av一区二区| 国产三级一区二区| 国产一级精品在线| 精品国产sm最大网站免费看 | 欧美性生交片4| 亚洲欧洲日产国产综合网| 国产成人在线电影| 国产网站一区二区三区| 久久av老司机精品网站导航| 日韩精品最新网址| 久久国内精品自在自线400部| 欧美精品第1页| 视频在线观看一区| 日韩精品中文字幕在线一区| 麻豆91精品视频| 精品国产一区a| 国产一区二区三区香蕉| 久久久99免费| 懂色av一区二区夜夜嗨| 中文字幕二三区不卡| 成人午夜视频免费看| 国产精品国产三级国产专播品爱网 | 久久伊99综合婷婷久久伊| 九九热在线视频观看这里只有精品| 日韩午夜在线影院| 激情综合色综合久久| 久久精品在线免费观看| 国产成人在线免费观看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 波多野结衣一区二区三区| 一区二区三区**美女毛片| 91精品一区二区三区久久久久久 | 精品国产亚洲一区二区三区在线观看| 精东粉嫩av免费一区二区三区| 久久亚洲精华国产精华液| 成人av在线播放网址| 亚洲韩国一区二区三区| 欧美成人高清电影在线| 懂色中文一区二区在线播放| 亚洲精品国久久99热| 日韩欧美国产精品| 北条麻妃国产九九精品视频| 亚洲午夜久久久久| 久久精品在线观看| 在线一区二区视频| 狠狠色狠狠色综合系列| 中文字幕日本不卡| 欧美一级久久久| www.在线欧美| 蜜臂av日日欢夜夜爽一区| 国产精品午夜久久| 91精品国产全国免费观看| 国产91色综合久久免费分享| 亚洲成人一区二区| 国产精品乱码久久久久久| 宅男噜噜噜66一区二区66| 夫妻av一区二区| 日韩精品91亚洲二区在线观看| 久久精品一区二区三区四区| 欧美日韩一区中文字幕| 成人激情电影免费在线观看| 日本不卡一区二区三区| 亚洲免费高清视频在线| 久久影院电视剧免费观看| 欧美日韩一区不卡| 91免费看视频| 国产成人夜色高潮福利影视| 肉色丝袜一区二区| 亚洲日本成人在线观看| 国产午夜精品福利| 欧美一级片免费看| 欧美伊人久久久久久午夜久久久久| 国产一区二三区| 日本成人在线不卡视频| 亚洲国产综合人成综合网站| 中文字幕制服丝袜一区二区三区| 精品少妇一区二区三区视频免付费| 日本精品视频一区二区| 91丨porny丨国产入口| 国产一区二区主播在线| 精品一区精品二区高清| 日本va欧美va精品发布| 亚洲成人一区二区| 日日欢夜夜爽一区| 国产.欧美.日韩| 亚洲国产成人私人影院tom| 欧美成人乱码一区二区三区| 7777精品久久久大香线蕉| 在线观看免费一区| 色婷婷亚洲婷婷| 色综合久久中文综合久久97| av毛片久久久久**hd| av亚洲精华国产精华精| 成人激情文学综合网| 97se亚洲国产综合自在线不卡| 国产不卡在线视频| 粉嫩在线一区二区三区视频| 国产成人综合网站| 成人免费高清视频| 不卡一区二区在线| 91浏览器在线视频| 欧美色中文字幕| 欧美日韩在线精品一区二区三区激情| 欧美性猛交xxxxxx富婆| 欧美日韩中文另类| 欧美mv和日韩mv国产网站| 欧美成人艳星乳罩| 国产亚洲视频系列| 亚洲视频在线一区观看| 亚洲国产精品久久不卡毛片 | 日韩一区二区视频| 久久久影视传媒| 国产精品麻豆视频| 亚洲精品视频在线| 日韩二区三区在线观看| 另类小说视频一区二区| 国产98色在线|日韩| eeuss鲁一区二区三区| 日本道精品一区二区三区| 欧美少妇一区二区| 久久久久九九视频| 亚洲精品日产精品乱码不卡| 亚洲亚洲人成综合网络| 久久99在线观看| 成人av先锋影音| 4hu四虎永久在线影院成人| 久久精品亚洲国产奇米99| 一区二区视频在线| 久99久精品视频免费观看| 成人av在线播放网址| 91精品婷婷国产综合久久性色 | 亚洲欧美另类综合偷拍| 日本人妖一区二区| 成人性生交大片免费| 91 com成人网| 国产精品久久777777| 蜜桃精品视频在线| 色哟哟精品一区| 欧美成人精品福利| 亚洲一区二区三区视频在线播放 | 久久久久久久久久久黄色| 亚洲免费在线观看| 国产精一区二区三区| 欧美日韩国产电影| 亚洲色欲色欲www| 国产精选一区二区三区| 欧美丰满美乳xxx高潮www| 国产精品嫩草影院av蜜臀| 麻豆成人免费电影| 欧美日本免费一区二区三区| 亚洲欧洲日韩女同| 国产在线视频一区二区| 欧美丝袜自拍制服另类| 国产精品视频免费看| 国内精品久久久久影院薰衣草| 欧美性生活影院| 亚洲女厕所小便bbb| 国产69精品久久久久毛片| 日韩欧美一级特黄在线播放| 亚洲一区二区三区美女| 97se狠狠狠综合亚洲狠狠| 欧美激情艳妇裸体舞| 久久99精品视频| 欧美一区二区三区视频在线| 有码一区二区三区| 99久久久无码国产精品| 国产欧美精品日韩区二区麻豆天美| 日本美女一区二区| 欧美精品tushy高清| 亚洲成人激情综合网| 欧美吞精做爰啪啪高潮| 一区二区三区高清| 日本国产一区二区| 一区二区三区免费看视频|