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

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

?? main.c

?? 用at89c2051做avr910串口下載器的資料。很好的。對沒有并口的朋友來說是一大福音。
?? C
字號:
#include <REG2051.H>
#include <intrins.H>

//#define SL_BOARD  /*雙龍ISP板*/
//#define SOME_CHIP /*只支持少數幾種芯片*/

	sbit LED_RED1  = P3^3;
	sbit LED_RED2  = P3^4;
	sbit LED_GREEN = P3^5;

	sbit MOSI  = P1^6;
	sbit MISO  = P1^5;
	sbit SCK   = P1^7;
	sbit RESET = P1^4;


#ifdef SOME_CHIP  /*  只支持生產所用的芯片,避免太多的芯片選擇導至出錯!!!  */
	code DeviceType[][2]=
	{
	//AT90S8515
		0x38,0,
	//ATmega8515
		0x3A,'P',
	//ATmega8515 BOOT
		0x3B,'P',
	//ATmega8
		0x76,'P',
	//ATmega8 BOOT
		0x77,'P',
	};
#else 	
	code DeviceType[][2]=
	{
	//AT90S1200 rev. A
		0x10,0,
	//AT90S1200 rev. B	
		0x11,0,
	//AT90S1200 rev. C
		0x12,0,
	//AT90S1200
		0x13,0,
	//AT90S2313
		0x20,0,
	//AT90S4414
		0x28,0,
	//AT90S4433
		0x30,0,
	//AT90S2333
		0x34,0,
	//AT90S8515
		0x38,0,
	//ATmega8515
		0x3A,'P',
	//ATmega8515 BOOT
		0x3B,'P',
	//ATmega103
		0x41,'P',
	//ATmega603
		0x42,'P',
	//ATmega128
		0x43,'P',
	//ATmega128 BOOT
		0x44,'P',
	//AT90S2323
		0x48,0,
	//AT90S2343
		0x4C,0,
	//ATtiny11
		0x50,0,
	//ATtiny10
		0x51,0,
	//ATtiny12
		0x55,0,
	//ATtiny15
		0x56,0,
	//ATtiny19
		0x58,0,
	//ATtiny28
		0x5C,0,
	//ATtiny26
		0x5E,'P',
	//ATmega161
		0x60,'P',
	//ATmega161 BOOT
		0x61,'P',
	//ATmega163
		0x64,'P',
	//ATmega83
		0x65,'P',
	//ATmega163 BOOT
		0x66,'P',
	//ATmega83 BOOT
		0x67,'P',
	//AT90S8535
		0x68,0,
	//ATmega8535??
		0x6A,'P',
	//ATmega8535 BOOT??
		0x6B,'P',
	//AT90S4434
		0x6C,0,
	//AT90C8534
		0x70,0,
	//AT90C8544
		0x71,0,
	//ATmega32
		0x72,'P',
	//ATmega32 BOOT
		0x73,'P',
	//ATmega16
		0x74,'P',
	//ATmega16 BOOT
		0x75,'P',
	//ATmega8
		0x76,'P',
	//ATmega8 BOOT
		0x77,'P',
	//AT89C1051
	//	0x80,0
	//AT89C2051
	//	0x81,0
	//AT89S8252
		0x86,0,
	//AT89S53
		0x87,0
	};
#endif

#define	SW_MAJOR '3'		/*Major SW revision number*/
#define	SW_MINOR '0'		/*Minor SW revision number*/
#define	HW_MAJOR '1'		/*Major HW revision number*/
#define	HW_MINOR '0'		/*Minor HW revision number*/

unsigned char loop,device,pgm_mode;
unsigned char Addr_H,Addr_L ;
unsigned char command;


void Delay(unsigned int time)
{
	while(time) time--;
}

void pulse_sck(void)
{
	SCK = 1;
	_nop_();
	_nop_();
	_nop_();
	SCK = 0;
}

void IncAddrAuto()
{
	Addr_L++;

	if(Addr_L == 0 )
		Addr_H++;
}

void init_serial(void)
{
     SCON = 0X50;/*Timer 1 is being used to generate baud rates.*/
     PCON = 0X80 | PCON;
     TMOD = 0X20;
     TH1 = 0XFD;
     TR1 = 1;            /*TCON.6*/
//   ES = 1;            /*IE.4      */
     RI = 0;              /*SCON.0*/
}

unsigned char getc()
{
	unsigned char buff;

	while(RI == 0);
	buff = SBUF;
	RI = 0;
	return buff;
}

void putc(unsigned char ch)
{
	SBUF = ch ;
	_nop_();
	_nop_();
	while( TI==0 );
	TI =0;
}

void showID()
{
	code char ID[]={"AVR ISP"};

	for(loop=0;loop<sizeof(ID)-1;loop++) //ID-1是不要發串末的0
		putc ( ID[loop] );
}

void show_device(void)
{
	for(	loop=0;
			loop< sizeof(DeviceType)/sizeof(DeviceType[0]);
			loop++		)
		putc ( DeviceType[loop][0] );
}

unsigned char check_device(unsigned char device)
{
	for(	loop=0;
			loop< sizeof(DeviceType)/sizeof(DeviceType[0]);
			loop++		)
	{
		if(device == DeviceType[loop][0] )
			return DeviceType[loop][1];
	}
	return '?';
}

unsigned char wrser(unsigned char dat)
{
	unsigned char indat = 0;
	for(loop = 0;loop<8;loop++)
	{
		if( dat & 0x80 )
			MOSI = 1;
		else
			MOSI = 0;

		dat <<=1;

		indat <<= 1;

		if(MISO)
			indat |= 1;

		pulse_sck();
	}

	return indat;
}

void spiinit()
{
	unsigned char count;

	SCK = 0;
	RESET = 1;
	Delay(10);
	RESET = 0;
	Delay(10);

	wrser(0xac);		// SPI write (byte 1)
	wrser(0x53);		// SPI write (byte 2)
	if ( (device >= 0x20) && (device <= 0x7F) )
	{
		count = 32;
		do {
			if (wrser(0) == 0x53)	// SPI read (byte 3)
				break;
			wrser(0x00);		// SPI write (byte 4)
			pulse_sck();
			wrser(0xac);		// SPI write (byte 1)
			wrser(0x53);		// SPI write (byte 2)

		} while(--count);
	}else wrser(0x00);		// SPI write (byte 3)

	wrser(0x00);	// SPI write (byte 4)
	Delay(100);
}

void writeFLASHdelay(void)
{ //根據芯片類型,決定是否延時
	if(pgm_mode == 0)
	{
#ifndef SL_BOARD
		Delay(100);
#else 
		Delay(250);
#endif
	}
}

unsigned char w17call(unsigned char param1)
{
	wrser(0x30);
	wrser(0x00);
	wrser(param1);
	return wrser(0);
}


unsigned char device;
unsigned char LedData;

void main(void)
{
	LED_GREEN = 0;
	Delay(60254);
	LED_GREEN = 1;
	init_serial( );
	while(1)
	{
		_nop_();
		switch(getc())
		{
		case 0x1b:
			LED_GREEN = 0;
			break;

		case 'T':
			device = getc();
			putc(0x0d);
			break;

		case 'S':
			showID();
			break;

		case 'V':
			putc(SW_MAJOR);
			putc(SW_MINOR);
			break;

		case 'v':
			putc(HW_MAJOR);
			putc(HW_MINOR);
			break;

		case 't':
			show_device();//Show supported devices
			break;

		case 'p':
			putc('S');
			break;

		case 'a':
			putc('Y');
			break;

		case 'x':
			LedData = getc();
			if(LedData == 1)
				LED_GREEN = 0 ;
			else 
				LED_GREEN = 1 ;
			putc(0x0d);
			break;
		
		case 'y':
			LedData = getc();
			if(LedData == 1)
				LED_RED2 = 0 ;
			else 
				LED_RED2 = 1 ;
			putc(0x0d);
			break;

		case 'P':
			spiinit();
			LED_RED1 = 0;
			pgm_mode = check_device(device);
			if ( pgm_mode != '?' )
				putc(0x0d);
			else 
				putc('?');
			break;

		case 'C':	//Write program memory, high byte
			wrser(0x48);
			wrser(Addr_H);
			wrser(Addr_L);
			wrser(getc());

			IncAddrAuto();

			writeFLASHdelay();
			putc(0x0d);
			break;

		case 'c':	//Write program memory, low byte
			wrser(0x40);
			wrser(Addr_H);
			wrser(Addr_L);
			wrser(getc());

			writeFLASHdelay();
			putc(0x0d);
			break;

		case 'R'://Read program memory
			wrser(0x28);
			wrser(Addr_H);
			wrser(Addr_L);
			putc( wrser ( 0 ) );

			wrser(0x20);
			wrser(Addr_H);
			wrser(Addr_L);
			putc( wrser( 0 ) );

			IncAddrAuto();
			break;

		case 'A':
			Addr_H = getc();
			Addr_L = getc();
			putc( 0x0d );
			break;

		case 'D':		//Write data memory
			wrser(0xC0);
			wrser(Addr_H);
			wrser(Addr_L);
			wrser(getc() );
			Delay(250);
			IncAddrAuto();
			putc(0x0d);
			break;

		case 'd':	//Read data memory
			wrser(0xA0);
			wrser(Addr_H);
			wrser(Addr_L);
			putc( wrser( 0 ) );
			IncAddrAuto();
			break;

		case 'L':		//Leave programming mode

			MOSI = 1;
			MISO = 1;
			SCK  = 1;
			LED_RED1 = 1;
			putc(0x0d);
			RESET = 1;
			break;

		case 'e':		//Chip erase
			wrser(0xAC);
			wrser(0x80);
			wrser(0x04);
			wrser(0x00);
			Delay(10);
			putc(0x0d);

			break;

		case 'l':		//Write lock bits
			wrser(0xAC);
			wrser( (getc() & 0x6) | 0xe0 );
			wrser(0x00);
			wrser(0x00);
			Delay(10);
			putc(0x0d);
			break;

		case 's':		//Read signature bytes
			putc (w17call(2) );
			putc (w17call(1) );
			putc (w17call(0) );
			break;

		case 'm':		//Write Program Memory Page
			wrser(0x4c);
			wrser(Addr_H);
			wrser(Addr_L);
			wrser(0);

			Delay(10);
			putc(0x0d);
			break;

		case ':':		//Universal Command
			wrser(getc());
			wrser(getc());
			wrser(getc());
			putc( wrser(0));
			Delay(10);
			putc(0x0d);
			break;

		case '.':		//New Universal Command
			wrser( getc() );
			wrser( getc() );
			wrser( getc() );
			putc(wrser ( getc() ) );
			Delay( 10 );
			putc( 0x0d );
			break;

		default:
			putc('?');
		}
	}	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
视频一区二区欧美| 久久综合九色综合久久久精品综合| 久久精品国产精品青草| 韩日精品视频一区| 91蝌蚪porny九色| 久久影音资源网| 亚洲一区二区精品视频| 五月综合激情网| 成人黄页毛片网站| 日韩欧美国产综合一区| 精品日韩在线观看| 樱桃国产成人精品视频| 蜜桃视频一区二区三区在线观看| 大白屁股一区二区视频| 欧美一区欧美二区| 亚洲在线视频网站| 国产69精品久久777的优势| 欧美午夜一区二区三区| 日韩一区二区三区精品视频| 91精品国产欧美一区二区成人| 亚洲欧洲制服丝袜| 粉嫩嫩av羞羞动漫久久久| 欧美一卡二卡三卡| 国产精品美女久久久久av爽李琼| 麻豆国产精品官网| 日韩一区二区在线免费观看| 午夜欧美大尺度福利影院在线看| 色屁屁一区二区| 一个色在线综合| 91网站在线播放| 丝袜a∨在线一区二区三区不卡| 韩国av一区二区三区| 欧美二区三区的天堂| 亚洲综合av网| 欧美日韩精品高清| 日韩和欧美一区二区| 91精品国产91热久久久做人人| 亚洲精品国产a| 7777精品伊人久久久大香线蕉最新版| 亚洲国产精品影院| 日韩亚洲欧美综合| 久久国产精品99久久人人澡| 国产欧美日韩另类一区| 91污在线观看| 久久电影国产免费久久电影 | 欧美精品亚洲二区| 综合电影一区二区三区 | 综合久久综合久久| 欧美日韩精品福利| 国产白丝网站精品污在线入口| 国产精品狼人久久影院观看方式| 欧美日韩三级一区| 激情文学综合插| 国产在线精品一区二区| 午夜精品免费在线观看| 久久综合成人精品亚洲另类欧美| 高清不卡在线观看av| 亚洲精品高清视频在线观看| 亚洲视频中文字幕| 东方aⅴ免费观看久久av| 亚洲电影第三页| 国产精品美女一区二区在线观看| 日韩一区二区三区电影在线观看 | 久久―日本道色综合久久| 欧美系列日韩一区| 高清beeg欧美| 国产伦精品一区二区三区免费| 亚洲成av人片一区二区梦乃| 亚洲欧美二区三区| 亚洲人成网站影音先锋播放| 亚洲女人****多毛耸耸8| 国产一区不卡在线| 老司机精品视频在线| 亚洲国产成人91porn| 一区二区在线观看视频在线观看| 国产片一区二区| 亚洲视频在线一区二区| 国产精品久久福利| 亚洲乱码国产乱码精品精98午夜 | 日韩小视频在线观看专区| 7777精品伊人久久久大香线蕉经典版下载 | 国产欧美日韩另类视频免费观看| 337p日本欧洲亚洲大胆精品| 777久久久精品| 精品国产成人系列| 久久久精品中文字幕麻豆发布| 久久精品综合网| 亚洲精品成人天堂一二三| 亚洲丰满少妇videoshd| 亚洲成人一区二区| 久久国内精品视频| 94-欧美-setu| 欧美电影免费观看高清完整版在线| 亚洲欧美日韩国产手机在线| 亚洲18女电影在线观看| 狠狠色伊人亚洲综合成人| 不卡一区二区中文字幕| 欧美日韩成人综合天天影院| 久久色.com| 亚洲一区二区三区三| 国产成人av自拍| 欧美伦理视频网站| 专区另类欧美日韩| 国产乱码精品一区二区三区忘忧草| 日韩亚洲电影在线| 亚洲乱码日产精品bd| 国产老肥熟一区二区三区| 在线观看91av| 亚洲欧洲日韩女同| 国产精品影视天天线| 欧美三级中文字幕| 综合欧美亚洲日本| 国产91精品免费| 精品免费国产二区三区| 视频一区二区三区中文字幕| 在线观看av一区| 国产精品激情偷乱一区二区∴| 精品在线视频一区| 91精品国产综合久久婷婷香蕉| 亚洲成人av一区二区| 欧美日韩精品一区二区三区| 国产一区二区三区在线观看免费视频 | 亚洲人成网站在线| 国产成人免费在线观看不卡| 久久精品一区八戒影视| 26uuu国产电影一区二区| 性久久久久久久| 国产精品美女久久久久aⅴ国产馆| 欧美日韩一区不卡| 日韩综合小视频| 精品粉嫩超白一线天av| 国产成人av一区二区三区在线| 亚洲国产岛国毛片在线| 色一情一乱一乱一91av| 无码av免费一区二区三区试看| 欧美喷水一区二区| 国产一区二区在线视频| 国产精品护士白丝一区av| 欧美日韩成人综合天天影院| 奇米精品一区二区三区在线观看 | 欧美日韩综合一区| 黑人精品欧美一区二区蜜桃| 亚洲精品第1页| 久久久www成人免费毛片麻豆| 91成人网在线| 成人精品电影在线观看| 另类调教123区| 婷婷中文字幕一区三区| 国产精品白丝在线| 欧美日韩高清影院| 久久久91精品国产一区二区三区| 99热精品一区二区| 日本福利一区二区| 欧美一二三区在线| 日韩女优制服丝袜电影| 7777精品伊人久久久大香线蕉完整版 | 精品一区二区影视| 日本午夜精品一区二区三区电影| 亚洲免费观看高清完整| 亚洲一区二区三区自拍| 亚洲一区二区三区四区五区中文| 中文字幕不卡在线播放| 一区在线观看视频| 亚洲自拍欧美精品| 日韩激情av在线| 国产剧情一区在线| 国产精品一区二区三区四区| 国产麻豆成人精品| 成人性色生活片| 欧美日韩一区中文字幕| 日韩一级精品视频在线观看| 日韩美女天天操| 中文字幕精品综合| 亚洲一区二区av电影| 日韩成人免费电影| 亚洲欧美在线aaa| 三级成人在线视频| 成人深夜在线观看| 欧美精品欧美精品系列| 日韩电影在线观看网站| 精品写真视频在线观看 | 欧美日韩在线亚洲一区蜜芽| 欧美精选一区二区| 日韩欧美国产一区在线观看| 久久久不卡网国产精品二区| 国产精品蜜臀av| 亚洲成人综合视频| 国产麻豆欧美日韩一区| 精品视频一区三区九区| 精品日韩欧美在线| 午夜精品福利视频网站| 成人黄色一级视频| www日韩大片| 人人狠狠综合久久亚洲| 91视频在线观看| 国产亚洲一二三区| 亚洲成人高清在线| 91久久精品一区二区三区| 精品99一区二区| 免费亚洲电影在线|