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

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

?? serial1.c

?? 基于Atmega128的串口通信(232)
?? C
字號:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <avr/pgmspace.h>
#include <avr/eeprom.h>
#define SYNC 0x40
#define PARITY_EVEN 0x20
#define PARITY_ODD  0x30
#define STOP_2  0x04
#define DATA_5  0x00
#define DATA_6  0x02
#define DATA_7  0x04
#define DATA_8  0x06
#define DATA_9  0x0c
#define SYSTEM_CLOCK 14745600L
#define BAUD_RATE    115200L
#define UART_RX_BUFFER_SIZE 128
#define UART_RX_BUFFER_MASK (UART_RX_BUFFER_SIZE-1)
#if(UART_RX_BUFFER_SIZE&UART_RX_BUFFER_MASK)
#error RX buffer size is not a power of 2
#endif
#define UART_TX_BUFFER_SIZE 128
#define UART_TX_BUFFER_MASK (UART_TX_BUFFER_SIZE-1)
#if(UART_TX_BUFFER_SIZE&UART_TX_BUFFER_MASK)
#error TX buffer size is not a power of 2
#endif
volatile static unsigned char UART_RxBuf[UART_RX_BUFFER_SIZE];
volatile static unsigned char UART_RxHead;
volatile static unsigned char UART_RxTail;
volatile static unsigned char UART_TxBuf[UART_TX_BUFFER_SIZE];
volatile static unsigned char UART_TxHead;
volatile static unsigned char UART_TxTail;
unsigned char __attribute__((__progmem__)) prompt[]="ATmega128> ";
unsigned char __attribute__((__progmem__)) EEPROM_prompt[]="EEPROM> ";
unsigned char __attribute__((__progmem__)) logo[]="\r\n+----------------------------------+\r\n| AVR(ATmega128) Test program ver 1.0  |\r\n+----------------------------------+\r\n|<H> Help Messages                     |\r\n|                                       |\r\n|                Serial Test Program    |\r\n      +----------------------------------+\r\n";
unsigned char __attribute__((__progmem__)) M_Unknown_Command[]=
                                     "Unknown Command, Try again\r\n";
unsigned char __attribute__((__progmem__)) M_Enter_Address[]=
                                      "\r\nBase Address:0x";
unsigned char __attribute__((__progmem__)) M_Help[]="\r\n                                      H: This Message\r\n                                      D:Dump Internal Flash \r\n									  E:EEPROM Test Mode\r\n									  L:Logo Print\r\n";
unsigned char __attribute__((__progmem__)) M_EEPROM_Test[]="\r\n										                         EEPROM   Test  Mode...\r\n                        press<Q> to quit,<H> to Display Help Message\r\n";
unsigned char __attribute__((__progmem__)) M_EEPROM_Write[]="\r\n	                                      EEPROM Write  Mode\r\n";							 
unsigned char __attribute__((__progmem__)) M_EEPROM_Read[]="\r\n                                      EEPROM Read Mode\r\n";
unsigned char __attribute__((__progmem__)) M_EEPROM_Write_End[]="\r\n                                      EEPROM Write  Mode 	End\r\n";								 
unsigned char __attribute__((__progmem__)) M_EEPROM_Help[]="\r\n                                      H:This Message\r\n 								      W:EEPROM Write Test\r\n									  R:EEPROM Read Test\r\n									  E:EEPROM Entire Erase Mode\r\n";
unsigned char __attribute__((__progmem__)) M_EEPROM_Empty[]="\r\n                                      EEPROM is Empty !\r\n";
unsigned char __attribute__((__progmem__)) M_EEPROM_Erase_Wait[]="\r\n                      Please Wait for Erasing of Entire EEPROM Memory\r\n";									 
void Initialize(void);
void serial_Initialize(unsigned long int baud);
unsigned char  ReceiveByte(void);
void TransmitByte( unsigned char  data);
void print_logo(void);
void print_prompt(void);
void print_Message(unsigned char *message);
void program_memory_dump(unsigned int base_addr);
unsigned int To_Numeric(unsigned char in_data);
void EEPROM_Test(void);
void Initialize(void)
{
  MCUCR=0x00;
  serial_Initialize(BAUD_RATE);
}
void serial_Initialize(unsigned long int baud)
{
   unsigned short int ubrr1;
   ubrr1=((SYSTEM_CLOCK/(16L*baud))-1);
   UBRR1H=(unsigned char)(ubrr1>>8);
   UBRR1L=(unsigned char)ubrr1;
   UCSR1A=0x20;
   UCSR1B=((1<<RXCIE)|(1<<RXEN)|(1<<TXEN));
   UCSR1C=DATA_8;
   UART_RxTail=0;
   UART_RxHead=0;
   UART_TxTail=0;
   UART_TxHead=0;
}
SIGNAL(SIG_UART1_RECV)
{ 
   unsigned char data;
   unsigned char tmphead;
   data=UDR1;
   tmphead=(UART_RxHead+1)&UART_RX_BUFFER_MASK;
   UART_RxHead=tmphead;
   if(tmphead==UART_RxTail){
      }
	UART_RxBuf[tmphead]=data;
}
SIGNAL(SIG_UART1_DATA)
{
   unsigned char tmptail;
   if( UART_TxHead!= UART_TxTail){
        tmptail= (UART_TxTail+1)& UART_TX_BUFFER_MASK;
        UART_TxTail=tmptail;
	    UDR1=UART_TxBuf[tmptail];
	  }
	else{
	     UCSR1B&=~(1<<UDRIE);
		 }
}
unsigned char ReceiveByte(void)
{
   unsigned char tmptail;
   while( UART_RxHead==UART_RxTail);
   tmptail=(UART_RxTail+1)&UART_RX_BUFFER_MASK ;
   UART_RxTail=tmptail;
   return  UART_RxBuf[tmptail];
} 
void TransmitByte( unsigned char  data)
{
   unsigned char tmphead;
   tmphead=(UART_TxHead+1)&UART_TX_BUFFER_MASK;
   while( tmphead==UART_TxTail);
   UART_TxBuf[tmphead]=data;
   UART_TxHead=tmphead;
   UCSR1B|=(1<<UDRIE);
}
int main(void)
{
   unsigned char  data;
   unsigned int address=0;
    Initialize();
	sei();
	print_logo();
	while(1){
	   data=ReceiveByte();
	   switch(data){
	      case '\r': TransmitByte('\r');
	                  TransmitByte('\n');
					  print_prompt();
					  break;
		  case'\n':  TransmitByte('\r');
	                  TransmitByte('\n');
					   print_prompt();
					   break;
		  case 'd':
		  case 'D':  TransmitByte(data);
		              print_Message((unsigned char *)M_Enter_Address);
				      for(;;){
				          data=ReceiveByte();
						  if((data!='\r')&&(data!='\n')){
						     address=address*16+To_Numeric(data);
							 TransmitByte(data);
							}
						  else{
							 TransmitByte('\r');
	                         TransmitByte('\n'); 
                             break;
                             }
                         }
                      TransmitByte('\r');
	                  TransmitByte('\n'); 
                      program_memory_dump(address);
					  print_prompt();
					  break;
			case 'h':
			case 'H': TransmitByte(data);
			           print_Message((unsigned char *)M_Help);
                       print_prompt();
					   break;
			case 'l':
			case 'L':
			          TransmitByte(data);
					  print_logo();
					  break;
			case 'e':
			case 'E': TransmitByte(data);
                       print_Message((unsigned char *)M_EEPROM_Test);
					   EEPROM_Test();
					   print_prompt();
					   break;
			default:  TransmitByte(data);
			}
	}
}
void print_logo(void)
{
  unsigned int i;
  for(i=0;;i++){
       if(PRG_RDB(logo+i)=='\0')
	       break;
		TransmitByte(PRG_RDB(logo+i));
		}
	 print_prompt();
}
void print_prompt(void)	
{
  unsigned int i;
  for(i=0;;i++){
       if(PRG_RDB(prompt+i)=='\0')
	       break;
		TransmitByte(PRG_RDB(prompt+i));
	 }
}
void print_Message(unsigned char *message)
{
   unsigned int i;
   for(i=0;;i++){
       if(PRG_RDB(message+i)=='\0')
	       break;
		TransmitByte(PRG_RDB(message+i));
	 }
}
void program_memory_dump(unsigned int base_addr)
{
   unsigned char upper_L,lower_L,upper_H,lower_H,mask=0x0f;
   unsigned char compensate_numeric=48, compensate_uppercase='A'-0x0a;
   unsigned int i,temp,j;
   unsigned char *pAddr,data[16]={0,};
   pAddr=0x00;
   for(i=base_addr;i<(base_addr+256);i=i+2){
        if(i%16==0){
		   temp=i>>8;
		   upper_H=(unsigned char)temp>>4;
		   upper_H&=mask;
	       lower_H=(unsigned char)temp&mask;
		   if(upper_H<=9)
		      upper_H+=compensate_numeric;
		    else
			  upper_H+=compensate_uppercase;
			if(lower_H<=9)
			  lower_H+=compensate_numeric;
			else
			   lower_H+=compensate_uppercase;
			TransmitByte(upper_H);
			TransmitByte(lower_H);
			upper_L=(unsigned char)i>>4;
			upper_L&=mask;
			upper_L=(unsigned char)i&mask;
			if(upper_L<=9)
			   upper_L+=compensate_numeric;
			else
			   upper_L+=compensate_uppercase;
			if(lower_L<=9)
			    lower_L+=compensate_numeric;
			else
			    lower_L+=compensate_uppercase;
            TransmitByte(upper_L); 
			TransmitByte(lower_L);
			TransmitByte(' ');
			TransmitByte(':');
			TransmitByte(' ');
			}
		data[i&0x0f]=(PRG_RDB(pAddr+i));
		upper_L=data[i&0x0f]>>4;
		upper_L&=mask;
		lower_L=data[i&0x0f]&mask;
		if(upper_L<=9)
		   lower_L+=compensate_numeric;
		else
		    upper_L+=compensate_uppercase;
		if(lower_L<=9)
		    lower_L+=compensate_numeric;
		else
			lower_L+=compensate_uppercase;
		data[(i+1)&0x0f]=(PRG_RDB(pAddr+i+1));
		upper_H=data[(i+1)&0x0f]>>4;
		upper_H&=mask;
		lower_H=data[(i+1)&0x0f]&mask;
		if(upper_H<=9)
		   upper_H+=compensate_numeric;
		else
			upper_H+=compensate_uppercase;
		if(lower_H<=9)
		    lower_H+=compensate_numeric;
		else
			 lower_H+=compensate_uppercase;
		 TransmitByte(upper_L); 
		 TransmitByte(lower_L);
		 TransmitByte(' ');
		 TransmitByte(upper_H);
		 TransmitByte(lower_H );
         TransmitByte(' ');
        if(i%16==14){
           TransmitByte(' ');
           for(j=0;j<16;j++){
               if((data[j]<=122)&&(data[j]>=32))
                  TransmitByte(data[j]);
                else
                  TransmitByte('.');
                }
            TransmitByte('\r');
            TransmitByte('\n');
            }
        }
    TransmitByte('\r');
    TransmitByte('\n');	
} 
 unsigned int To_Numeric(unsigned char in_data)
{
   if(in_data=='0')
       return 0;
	else if((in_data<='9')&&(in_data>='1'))
	   return(unsigned int)(in_data-'1'+1);
	else if((in_data<='f')&&(in_data>='a'))
	   return(unsigned int)(in_data-'a'+10);
	else if((in_data<='F')&&(in_data>='A'))
	   return(unsigned int)(in_data-'A'+10);
	else
	   return 0;
}	   
void EEPROM_Test(void)
{
  unsigned char temp_data,temp;
  unsigned int address=0;
  for(;;){
      print_Message((unsigned char*)EEPROM_prompt);
	  temp= ReceiveByte();
	  if((temp=='w')||(temp=='W')){
	    TransmitByte(temp);
		print_Message((unsigned char*)M_EEPROM_Write);
		address=0;
		for(;;){
		     temp_data=ReceiveByte();
			 if((temp_data=='\r')||(temp_data='\n')){
			    _EEPUT(address++,temp_data);
				print_Message((unsigned char*)M_EEPROM_Write_End);
				address=0;
				break;
				  }
			  else{
			     _EEPUT(address++,temp_data);
                 TransmitByte(temp_data); 
				   }
			 }
          }
		else if((temp=='r')||(temp=='R')){
		     TransmitByte(temp);
			 print_Message((unsigned char*)M_EEPROM_Read);
			 address=0;
			for(;;){
			  _EEGET(temp_data,address++);
			  if((temp_data=='\r')||(temp_data=='\n')||(temp_data==0xff)){
			     if(address==1)
				    print_Message((unsigned char*)M_EEPROM_Empty);
                  TransmitByte('\r');
                  TransmitByte('\n');
                  break;
                 }
              else{
                   TransmitByte(temp_data);
                   }
                }
            }
        else if( (temp=='e')||(temp=='E')){
               TransmitByte(temp);
			   print_Message((unsigned char*)M_EEPROM_Erase_Wait);
			   for(address=0;address<4096;address++)
			      _EEPUT(address,0xff);
               TransmitByte('\r');
               TransmitByte('\n');
               }
        else if( (temp=='h')||(temp=='H')){
               print_Message((unsigned char*)M_EEPROM_Help);
			   }
		else if( (temp=='q')||(temp=='Q')){
		       TransmitByte(temp);
			   TransmitByte('\r');
               TransmitByte('\n');
			   break;
			   }
		else{
		     TransmitByte(temp);
			 TransmitByte('\r');
             TransmitByte('\n');
			 }
	}
}
	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产人妖乱国产精品人妖| 精品国产制服丝袜高跟| 国产精品99久久久久| 韩国成人精品a∨在线观看| 美女在线一区二区| 久久电影网电视剧免费观看| 精油按摩中文字幕久久| 国产专区欧美精品| 大美女一区二区三区| 成人高清免费观看| 色狠狠一区二区三区香蕉| 色88888久久久久久影院按摩| 色视频欧美一区二区三区| 欧美日韩的一区二区| 精品国产自在久精品国产| 中文字幕 久热精品 视频在线| 中文字幕巨乱亚洲| 一区二区三区美女视频| 蜜桃av噜噜一区| 成人丝袜高跟foot| 在线观看日韩电影| 日韩手机在线导航| 国产三级欧美三级日产三级99| 亚洲欧美在线aaa| 性感美女极品91精品| 国产一区二区三区四区在线观看| 高清在线不卡av| 欧美日韩一区高清| 精品国一区二区三区| 亚洲欧洲综合另类| 麻豆精品视频在线观看免费| 成人性生交大片免费看在线播放| 色婷婷精品久久二区二区蜜臂av| 欧美一区二区三区性视频| 国产欧美1区2区3区| 亚洲无人区一区| 粉嫩在线一区二区三区视频| 欧美日韩一区二区电影| 久久九九久精品国产免费直播| 亚洲色图欧洲色图婷婷| 裸体健美xxxx欧美裸体表演| 99久久久久免费精品国产| 日韩精品一区二区三区中文精品| 国产精品视频一区二区三区不卡| 亚洲一二三四区不卡| 国产精品18久久久久久久网站| 欧美性淫爽ww久久久久无| 久久久久久**毛片大全| 视频一区二区中文字幕| 91在线国内视频| 久久久久久久久免费| 日韩影院免费视频| 色哟哟在线观看一区二区三区| 精品国产欧美一区二区| 天堂成人免费av电影一区| 91色婷婷久久久久合中文| 国产午夜精品久久| 精品一区二区三区不卡| 欧美电影一区二区三区| 亚洲黄色尤物视频| 91香蕉视频mp4| 国产日韩欧美精品综合| 国产在线不卡一区| 日韩欧美在线综合网| 五月天激情综合网| 欧美日韩国产高清一区二区三区 | 91精品国产综合久久久蜜臀粉嫩| 亚洲私人黄色宅男| 成人午夜av影视| 国产偷v国产偷v亚洲高清| 国产盗摄一区二区三区| 日韩欧美国产小视频| 麻豆视频一区二区| 日韩欧美123| 国产在线精品视频| 久久这里只有精品6| 国产丶欧美丶日本不卡视频| 国产日产亚洲精品系列| 国产91丝袜在线播放九色| 欧美激情一区二区三区在线| 国产高清不卡一区| 国产精品久久久久久久午夜片| 成人午夜在线播放| 有坂深雪av一区二区精品| 91成人在线免费观看| 午夜精品成人在线| 日韩欧美久久一区| 国产a区久久久| 亚洲免费看黄网站| 欧美裸体一区二区三区| 蜜桃av一区二区在线观看| 久久精品亚洲精品国产欧美 | 亚洲柠檬福利资源导航| 在线观看一区二区精品视频| 丝袜亚洲另类丝袜在线| 精品国产第一区二区三区观看体验| 国产麻豆视频精品| 中文字幕亚洲区| 欧美精品日日鲁夜夜添| 激情文学综合插| 亚洲精品水蜜桃| 欧美丰满少妇xxxxx高潮对白 | 欧美乱妇15p| 精品一区二区三区在线播放 | 国产高清精品久久久久| 一区二区三区在线不卡| 日韩丝袜情趣美女图片| 91色视频在线| 九一久久久久久| 亚洲少妇中出一区| 精品久久久久久亚洲综合网| 91在线观看下载| 久久国产精品99久久人人澡| 日韩美女视频一区二区| 欧美一区二区黄| 日本韩国视频一区二区| 久久国产精品区| 香蕉久久一区二区不卡无毒影院| 精品av久久707| 精品视频色一区| 夫妻av一区二区| 麻豆精品蜜桃视频网站| 亚洲综合精品久久| 国产日产亚洲精品系列| 久久在线观看免费| 欧美亚日韩国产aⅴ精品中极品| 国产精品91一区二区| 日韩av成人高清| 亚洲国产精品麻豆| 最新日韩av在线| 国产三级久久久| 久久综合九色综合97婷婷| 3d成人h动漫网站入口| 色爱区综合激月婷婷| 不卡的av网站| 国产成人在线色| 久久91精品国产91久久小草| 午夜av一区二区三区| 亚洲精品自拍动漫在线| 日韩一区日韩二区| 中文字幕免费不卡| 久久精品一级爱片| 国产亚洲美州欧州综合国| 精品国产人成亚洲区| 精品欧美一区二区在线观看| 日韩欧美一区二区在线视频| 欧美日韩高清在线播放| 欧美日韩高清在线| 欧美日本一区二区| 欧美美女直播网站| 欧美一级视频精品观看| 日韩一区二区三区免费观看| 日韩一区二区电影| 精品国产亚洲在线| 国产日韩三级在线| 国产精品久久久久久久第一福利| 国产精品美女久久久久久久网站| 国产精品视频一二三区| 亚洲三级电影全部在线观看高清| 亚洲欧美日韩人成在线播放| 亚洲同性gay激情无套| 亚洲一区在线观看免费| 天天免费综合色| 狠狠色狠狠色综合日日91app| 另类欧美日韩国产在线| 国产精品小仙女| 色视频成人在线观看免| 欧美日本一区二区| 久久久国产午夜精品| 国产精品色呦呦| 亚洲一区二区美女| 蓝色福利精品导航| av一二三不卡影片| 欧美性大战久久久久久久| 91精品婷婷国产综合久久| 精品国产区一区| 国产精品久久久久国产精品日日| 亚洲久草在线视频| 久久精品国产99国产| 懂色av中文一区二区三区| 欧美亚洲综合色| 欧美不卡在线视频| 亚洲色图制服诱惑 | 久久www免费人成看片高清| 国产精品12区| 欧美久久久久久蜜桃| 国产日韩欧美麻豆| 婷婷六月综合亚洲| 成人午夜伦理影院| 56国语精品自产拍在线观看| 国产嫩草影院久久久久| 亚洲va欧美va天堂v国产综合| 激情五月婷婷综合| 欧美日韩亚洲综合| 日本一区二区视频在线观看| 天天操天天干天天综合网| av中文字幕不卡| www成人在线观看| 性欧美疯狂xxxxbbbb| 色综合久久综合中文综合网|