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

📄 isp.s

📁 双龙公司开发版源程序
💻 S
字号:
	.module isp.c
	.area text(rom, con, rel)
	.dbfile E:\icc\iccavr\mega8\mega8\music\isp.c
	.dbfunc e uart_init _uart_init fV
	.even
_uart_init::
	.dbline -1
	.dbline 15
; #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)
; {
	.dbline 16
;  OSCCAL=read_flash(osc_address);
	ldi R16,8176
	ldi R17,31
	rcall _read_flash
	out 0x31,R16
	.dbline 17
;  UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE);//允许发送和接收
	ldi R24,152
	out 0xa,R24
	.dbline 18
;  UBRRL=(fosc/16/(baud+1))%256;
	ldi R24,26
	out 0x9,R24
	.dbline 19
;  UBRRH=(fosc/16/(baud+1))/256;
	clr R2
	out 0x20,R2
	.dbline 20
;  UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);//8位数据+1位STOP位
	ldi R24,134
	out 0x20,R24
	.dbline -2
	.dbline 21
; }
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e putchar _putchar fV
;              c -> R16
	.even
_putchar::
	.dbline -1
	.dbline 24
; /*  		字符输出函数 		 */
; void putchar(unsigned char c)
; 	{	 
L3:
	.dbline 25
L4:
	.dbline 25
;      while (!(UCSRA&(1<<UDRE)));
	sbis 0xb,5
	rjmp L3
	.dbline 26
; 	 UDR=c;    
	out 0xc,R16
	.dbline -2
	.dbline 27
; 	}
L2:
	.dbline 0 ; func end
	ret
	.dbsym r c 16 c
	.dbend
	.dbfunc e getchar _getchar fc
	.even
_getchar::
	.dbline -1
	.dbline 30
; /*  		字符输入函数 		 */	
; unsigned char getchar(void)
;   	{
L7:
	.dbline 31
L8:
	.dbline 31
; 	 while(!(UCSRA& (1<<RXC)));
	sbis 0xb,7
	rjmp L7
	.dbline 32
;      return UDR;
	in R16,0xc
	.dbline -2
L6:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 22
	rjmp _isp
	.area text(rom, con, rel)
	.dbfile E:\icc\iccavr\mega8\mega8\music\isp.c
	.area bss(ram, con, rel)
	.dbfile E:\icc\iccavr\mega8\mega8\music\isp.c
L11:
	.blkb 2
	.area text(rom, con, rel)
	.dbfile E:\icc\iccavr\mega8\mega8\music\isp.c
	.dbfunc e isp _isp fV
	.dbsym s adder L11 i
;            val -> R20
	.even
_isp::
	rcall push_lset
	rcall push_gset1
	.dbline -1
	.dbline 36
; 	}	
; #pragma interrupt_handler isp:iv_USART_RXC
; void isp(void)
; 	 {	  
	.dbline 39
; 	  static unsigned int adder;
; 	  unsigned char val;
; 	  val=UDR;
	in R20,0xc
	.dbline 40
; 	  switch (val)
	clr R21
	cpi R20,76
	ldi R30,0
	cpc R21,R30
	brne X1
	rjmp L22
X1:
	ldi R24,76
	ldi R25,0
	cp R24,R20
	cpc R25,R21
	brlt L36
L35:
	cpi R20,27
	ldi R30,0
	cpc R21,R30
	brne X2
	rjmp L13
X2:
	cpi R20,27
	ldi R30,0
	cpc R21,R30
	brge X3
	rjmp L12
X3:
L37:
	cpi R20,65
	ldi R30,0
	cpc R21,R30
	brne X4
	rjmp L19
X4:
	cpi R20,68
	ldi R30,0
	cpc R21,R30
	brne X5
	rjmp L20
X5:
	cpi R20,70
	ldi R30,0
	cpc R21,R30
	brne X6
	rjmp L26
X6:
	rjmp L12
L36:
	cpi R20,97
	ldi R30,0
	cpc R21,R30
	brne X7
	rjmp L18
X7:
	cpi R20,100
	ldi R30,0
	cpc R21,R30
	brne X8
	rjmp L21
X8:
	ldi R24,100
	ldi R25,0
	cp R24,R20
	cpc R25,R21
	brlt L39
L38:
	cpi R20,80
	ldi R30,0
	cpc R21,R30
	brne X9
	rjmp L17
X9:
	cpi R20,83
	ldi R30,0
	cpc R21,R30
	brne X10
	rjmp L28
X10:
	cpi R20,84
	ldi R30,0
	cpc R21,R30
	brne X11
	rjmp L23
X11:
	cpi R20,86
	ldi R30,0
	cpc R21,R30
	brne X12
	rjmp L30
X12:
	rjmp L12
L39:
	cpi R20,109
	ldi R30,0
	cpc R21,R30
	brne X13
	rjmp L34
X13:
	cpi R20,112
	ldi R30,0
	cpc R21,R30
	brne X14
	rjmp L29
X14:
	cpi R20,115
	ldi R30,0
	cpc R21,R30
	brne X15
	rjmp L27
X15:
	cpi R20,116
	ldi R30,0
	cpc R21,R30
	breq L16
	cpi R20,118
	ldi R30,0
	cpc R21,R30
	brne X16
	rjmp L31
X16:
	cpi R20,120
	ldi R30,0
	cpc R21,R30
	brne X17
	rjmp L32
X17:
	cpi R20,121
	ldi R30,0
	cpc R21,R30
	brne X18
	rjmp L33
X18:
	rjmp L12
X0:
	.dbline 41
; 			 {
	.dbline 42
; 			  case 0x1b:{						 	 
	.dbline 43
; 						 break;
L16:
	.dbline 45
; 						}
; 			  case 't':{
	.dbline 46
; 						putchar(device);
	ldi R16,118
	rcall _putchar
	.dbline 47
; 						putchar(0x00);
	clr R16
	rcall _putchar
	.dbline 48
; 					    break;
	rjmp L13
L17:
	.dbline 50
; 					   }
; 			  case 'P':{			   	        
	.dbline 51
; 					 	clr_bit(DDRC,0);
	cbi 0x14,0
	.dbline 52
; 						CLI();
	cli
	.dbline 53
; 						putchar(13);
	ldi R16,13
	rcall _putchar
	.dbline 54
; 						break;
	rjmp L13
L18:
	.dbline 56
; 					   }
; 			  case 'a':{
	.dbline 57
; 					 	putchar('Y');
	ldi R16,89
	rcall _putchar
	.dbline 58
; 					 	break;
	rjmp L13
L19:
	.dbline 60
; 					   }		 		
; 			  case 'A':{
	.dbline 61
; 					 	adder=(getchar()<<8);
	rcall _getchar
	mov R2,R16
	clr R3
	mov R3,R2
	clr R2
	sts L11+1,R3
	sts L11,R2
	.dbline 62
; 					    adder|=getchar();
	rcall _getchar
	mov R2,R16
	clr R3
	lds R4,L11
	lds R5,L11+1
	or R4,R2
	or R5,R3
	sts L11+1,R5
	sts L11,R4
	.dbline 63
; 						putchar(13);
	ldi R16,13
	rcall _putchar
	.dbline 64
; 					 	break;
	rjmp L13
L20:
	.dbline 66
; 					   }
; 			  case 'D':{
	.dbline 67
; 						EEPROMwrite(adder,getchar());
	rcall _getchar
	mov R18,R16
	lds R16,L11
	lds R17,L11+1
	rcall _EEPROMwrite
	.dbline 68
; 					    putchar(13);
	ldi R16,13
	rcall _putchar
	.dbline 69
; 					    adder++;
	lds R24,L11
	lds R25,L11+1
	adiw R24,1
	sts L11+1,R25
	sts L11,R24
	.dbline 70
; 					 	break;
	rjmp L13
L21:
	.dbline 72
; 					   }
; 			  case 'd':{
	.dbline 73
; 						putchar(EEPROMread(adder));
	lds R16,L11
	lds R17,L11+1
	rcall _EEPROMread
	rcall _putchar
	.dbline 74
; 					    adder++;
	lds R24,L11
	lds R25,L11+1
	adiw R24,1
	sts L11+1,R25
	sts L11,R24
	.dbline 75
; 						break;
	rjmp L13
L22:
	.dbline 77
; 				  	   }							  
; 			  case 'L':{
	.dbline 78
; 			            set_bit(DDRC,0);
	sbi 0x14,0
	.dbline 79
; 						SEI();
	sei
	.dbline 80
; 					    putchar(13);					 
	ldi R16,13
	rcall _putchar
	.dbline 81
; 					    break;
	rjmp L13
L23:
	.dbline 83
; 					   }	
; 			  case 'T':{
	.dbline 84
; 					 	if(getchar()==0x38)
	rcall _getchar
	cpi R16,56
	brne L24
	.dbline 85
; 					        putchar(13);
	ldi R16,13
	rcall _putchar
	rjmp L13
L24:
	.dbline 87
; 						else
; 							putchar('?');	 
	ldi R16,63
	rcall _putchar
	.dbline 88
; 						break;
	rjmp L13
L26:
	.dbline 90
; 					   }			
; 			  case 'F':{
	.dbline 91
; 					    putchar(00);
	clr R16
	rcall _putchar
	.dbline 92
; 						break;
	rjmp L13
L27:
	.dbline 94
; 					   }	
; 		  	  case 's':{
	.dbline 95
; 					    putchar(2);
	ldi R16,2
	rcall _putchar
	.dbline 96
; 						putchar(1);
	ldi R16,1
	rcall _putchar
	.dbline 97
; 						putchar(0);
	clr R16
	rcall _putchar
	.dbline 98
; 						break;
	rjmp L13
L28:
	.dbline 100
; 					   }		 	
; 			  case 'S':{
	.dbline 101
; 					    putchar('A');
	ldi R16,65
	rcall _putchar
	.dbline 102
; 						putchar('V');
	ldi R16,86
	rcall _putchar
	.dbline 103
; 						putchar('R');
	ldi R16,82
	rcall _putchar
	.dbline 104
; 						putchar('B');
	ldi R16,66
	rcall _putchar
	.dbline 105
; 						putchar('O');
	ldi R16,79
	rcall _putchar
	.dbline 106
; 						putchar('O');
	ldi R16,79
	rcall _putchar
	.dbline 107
; 						putchar('T');
	ldi R16,84
	rcall _putchar
	.dbline 108
; 						break;
	rjmp L13
L29:
	.dbline 110
; 					   }
; 			  case 'p':{
	.dbline 111
; 					    putchar('S');
	ldi R16,83
	rcall _putchar
	.dbline 112
; 						break;
	rjmp L13
L30:
	.dbline 114
; 					   }
; 			  case 'V':{
	.dbline 115
; 					    putchar('1');
	ldi R16,49
	rcall _putchar
	.dbline 116
; 						putchar('0');
	ldi R16,48
	rcall _putchar
	.dbline 117
; 						break;
	rjmp L13
L31:
	.dbline 119
; 					   }	
; 			  case 'v':{
	.dbline 120
; 					    putchar('1');
	ldi R16,49
	rcall _putchar
	.dbline 121
; 						putchar('0');
	ldi R16,48
	rcall _putchar
	.dbline 122
; 						break;
	rjmp L13
L32:
	.dbline 124
; 					   }		 	 
; 			  case 'x':{
	.dbline 125
; 					    getchar();
	rcall _getchar
	.dbline 126
; 						putchar(13);
	ldi R16,13
	rcall _putchar
	.dbline 127
; 						break;
	rjmp L13
L33:
	.dbline 129
; 					   }
; 			  case 'y':{
	.dbline 130
; 					    getchar();
	rcall _getchar
	.dbline 131
; 					    putchar(13);
	ldi R16,13
	rcall _putchar
	.dbline 132
; 						break;
	rjmp L13
L34:
	.dbline 134
; 					   }	
; 			  case 'm':{
	.dbline 135
; 					    putchar(13);
	ldi R16,13
	rcall _putchar
	.dbline 136
; 					    break;
	rjmp L13
L12:
	.dbline 138
	.dbline 139
	ldi R16,63
	rcall _putchar
	.dbline 140
	.dbline 141
L13:
	.dbline -2
	.dbline 142
; 				       }		 								  		 							 			 					  		  		 								 			 
; 			  default:{
; 					   putchar('?');
; 					  } 		  					
; 			 }	 
; 	 }
L10:
	rcall pop_gset1
	rcall pop_lset
	.dbline 0 ; func end
	reti
	.dbsym r val 20 c
	.dbend

⌨️ 快捷键说明

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