⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 isp.c

📁 双龙公司开发版源程序
💻 C
字号:
#include <iom8v.h>
#include <macros.h>
#include <eeprom.h>
/*		 		 位操作宏  				*/
#define set_bit(x,y)	(x|=(1<<y))
#define clr_bit(x,y)	(x&=~(1<<y)) 
#define get_bit(x,y)	(x&(1<<y))
#define fosc 8000000
#define baud 19200
#define device 0x76
#define osc_address   0x1ff0
extern unsigned char read_flash(unsigned int add);
/*			UART初始化				*/	
void uart_init(void)
{
 OSCCAL=read_flash(osc_address);
 UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE);//允许发送和接收
 UBRRL=(fosc/16/(baud+1))%256;
 UBRRH=(fosc/16/(baud+1))/256;
 UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);//8位数据+1位STOP位
}
/*  		字符输出函数 		 */
void putchar(unsigned char c)
	{	 
     while (!(UCSRA&(1<<UDRE)));
	 UDR=c;    
	}
/*  		字符输入函数 		 */	
unsigned char getchar(void)
  	{
	 while(!(UCSRA& (1<<RXC)));
     return UDR;
	}	
#pragma interrupt_handler isp:iv_USART_RXC
void isp(void)
	 {	  
	  static unsigned int adder;
	  unsigned char val;
	  val=UDR;
	  switch (val)
			 {
			  case 0x1b:{						 	 
						 break;
						}
			  case 't':{
						putchar(device);
						putchar(0x00);
					    break;
					   }
			  case 'P':{			   	        
					 	clr_bit(DDRC,0);
						CLI();
						putchar(13);
						break;
					   }
			  case 'a':{
					 	putchar('Y');
					 	break;
					   }		 		
			  case 'A':{
					 	adder=(getchar()<<8);
					    adder|=getchar();
						putchar(13);
					 	break;
					   }
			  case 'D':{
						EEPROMwrite(adder,getchar());
					    putchar(13);
					    adder++;
					 	break;
					   }
			  case 'd':{
						putchar(EEPROMread(adder));
					    adder++;
						break;
				  	   }							  
			  case 'L':{
			            set_bit(DDRC,0);
						SEI();
					    putchar(13);					 
					    break;
					   }	
			  case 'T':{
					 	if(getchar()==0x38)
					        putchar(13);
						else
							putchar('?');	 
						break;
					   }			
			  case 'F':{
					    putchar(00);
						break;
					   }	
		  	  case 's':{
					    putchar(2);
						putchar(1);
						putchar(0);
						break;
					   }		 	
			  case 'S':{
					    putchar('A');
						putchar('V');
						putchar('R');
						putchar('B');
						putchar('O');
						putchar('O');
						putchar('T');
						break;
					   }
			  case 'p':{
					    putchar('S');
						break;
					   }
			  case 'V':{
					    putchar('1');
						putchar('0');
						break;
					   }	
			  case 'v':{
					    putchar('1');
						putchar('0');
						break;
					   }		 	 
			  case 'x':{
					    getchar();
						putchar(13);
						break;
					   }
			  case 'y':{
					    getchar();
					    putchar(13);
						break;
					   }	
			  case 'm':{
					    putchar(13);
					    break;
				       }		 								  		 							 			 					  		  		 								 			 
			  default:{
					   putchar('?');
					  } 		  					
			 }	 
	 }
	 
	    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -