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

📄 m8demo.lst

📁 AVR系列被广泛应用的单片机MEGA8开发(原理图)及例程
💻 LST
📖 第 1 页 / 共 5 页
字号:
    0543 C10B      RJMP	0x064F
(0533) 				  case AT45DB021_data_modify_mode:
(0534)  	 	                       AT45DB021_data--;
    0544 918001BE  LDS	R24,AT45DB021_data
    0546 5081      SUBI	R24,1
    0547 938001BE  STS	AT45DB021_data,R24
(0535)    				 	  PutStr("45DB21 Write Start");
    0549 EF0A      LDI	R16,0xFA
    054A E010      LDI	R17,0
    054B D4BA      RCALL	_PutStr
(0536)  	 	                       WriteBlock(AT45DB021_addr, AT45DB021_data);
    054C 912001BE  LDS	R18,AT45DB021_data
    054E 91000064  LDS	R16,AT45DB021_addr
    0550 D310      RCALL	_WriteBlock
(0537)    				 	  PutInt( AT45DB021_data );
    0551 910001BE  LDS	R16,AT45DB021_data
    0553 2711      CLR	R17
    0554 D4C4      RCALL	_PutInt
(0538)    				 	  PutStr("45DB21 Write End");
    0555 EE09      LDI	R16,0xE9
    0556 E010      LDI	R17,0
    0557 D4AE      RCALL	_PutStr
(0539)  	 	    		 	  break;
(0540) 
(0541)                               default :break;
(0542)  	 	       	}
(0543) 			break;
    0558 C0F6      RJMP	0x064F
(0544)  	 	case key_mode:
(0545)  	 	       switch(mode_state)
    0559 916001C3  LDS	R22,mode_state
    055B 2777      CLR	R23
    055C 3060      CPI	R22,0
    055D 0767      CPC	R22,R23
    055E F0E9      BEQ	0x057C
    055F 3061      CPI	R22,1
    0560 E0E0      LDI	R30,0
    0561 077E      CPC	R23,R30
    0562 F131      BEQ	0x0589
    0563 3062      CPI	R22,2
    0564 E0E0      LDI	R30,0
    0565 077E      CPC	R23,R30
    0566 F179      BEQ	0x0596
    0567 3064      CPI	R22,4
    0568 E0E0      LDI	R30,0
    0569 077E      CPC	R23,R30
    056A F409      BNE	0x056C
    056B C037      RJMP	0x05A3
    056C 3065      CPI	R22,5
    056D E0E0      LDI	R30,0
    056E 077E      CPC	R23,R30
    056F F409      BNE	0x0571
    0570 C062      RJMP	0x05D3
    0571 3068      CPI	R22,0x8
    0572 E0E0      LDI	R30,0
    0573 077E      CPC	R23,R30
    0574 F409      BNE	0x0576
    0575 C08D      RJMP	0x0603
    0576 3069      CPI	R22,0x9
    0577 E0E0      LDI	R30,0
    0578 077E      CPC	R23,R30
    0579 F409      BNE	0x057B
    057A C088      RJMP	0x0603
    057B C0D3      RJMP	0x064F
(0546)  	 	       	{
(0547)  	 	       	  case clock_mode:
(0548)  	 	       	  	mode_state=out_eeprom_addr_modify_mode;
    057C E081      LDI	R24,1
    057D 938001C3  STS	mode_state,R24
(0549)  	 	                	PutStr("外部EEPROM地址修改");
    057F ED06      LDI	R16,0xD6
    0580 E010      LDI	R17,0
    0581 D484      RCALL	_PutStr
(0550)  	 	                	out_eeprom_addr=0xFF;
    0582 EF8F      LDI	R24,0xFF
    0583 93800060  STS	out_eeprom_addr,R24
(0551)  	 	                	out_eeprom_data=0xF1;
    0585 EF81      LDI	R24,0xF1
    0586 938001C0  STS	out_eeprom_data,R24
(0552)  	 	       	  	break;
    0588 C0C6      RJMP	0x064F
(0553)  	 	                case out_eeprom_addr_modify_mode:
(0554)  	 	                	 mode_state=in_eeprom_addr_modify_mode;
    0589 E084      LDI	R24,4
    058A 938001C3  STS	mode_state,R24
(0555)  	 	                	 PutStr("内部EEPROM地址修改");
    058C EC03      LDI	R16,0xC3
    058D E010      LDI	R17,0
    058E D477      RCALL	_PutStr
(0556)  	 	                	in_eeprom_addr=0xFF;
    058F EF8F      LDI	R24,0xFF
    0590 93800061  STS	in_eeprom_addr,R24
(0557)  	 	                	in_eeprom_data=0xF2;
    0592 EF82      LDI	R24,0xF2
    0593 938001BF  STS	in_eeprom_data,R24
(0558) 
(0559)  	 	             		break;
    0595 C0B9      RJMP	0x064F
(0560)  	 	                case out_eeprom_data_modify_mode:
(0561)  	 	                	 mode_state=in_eeprom_addr_modify_mode;
    0596 E084      LDI	R24,4
    0597 938001C3  STS	mode_state,R24
(0562)  	 	                	PutStr("内部EEPROM地址修改");
    0599 EC03      LDI	R16,0xC3
    059A E010      LDI	R17,0
    059B D46A      RCALL	_PutStr
(0563)  	 	                	in_eeprom_addr=0xFF;
    059C EF8F      LDI	R24,0xFF
    059D 93800061  STS	in_eeprom_addr,R24
(0564)  	 	                	in_eeprom_data=0xF2;
    059F EF82      LDI	R24,0xF2
    05A0 938001BF  STS	in_eeprom_data,R24
(0565)  	 	             		break;
    05A2 C0AC      RJMP	0x064F
(0566) 	 	         
(0567)  	 	                case in_eeprom_addr_modify_mode:
(0568)  	 	                	adc_Enable();
    05A3 DC34      RCALL	_adc_Enable
(0569)  	 	                	mode_state=adc_mode;
    05A4 E087      LDI	R24,7
    05A5 938001C3  STS	mode_state,R24
(0570)  	 	       	  	PutStr("ADC模式");
    05A7 EB0B      LDI	R16,0xBB
    05A8 E010      LDI	R17,0
    05A9 D45C      RCALL	_PutStr
(0571)  	 	       	  	adc_value=8888;
    05AA EB88      LDI	R24,0xB8
    05AB E292      LDI	R25,0x22
    05AC 93900063  STS	adc_value+1,R25
    05AE 93800062  STS	adc_value,R24
(0572)  	 	       	  	key_pressed=false;
    05B0 2422      CLR	R2
    05B1 922001C4  STS	key_pressed,R2
    05B3 C01D      RJMP	0x05D1
(0573)  	 	       	  	#ifdef  query_adc
(0574)  	 	       	   while(1)
(0575)  	 	       	  	{ Key_Task();
    05B4 DD63      RCALL	_Key_Task
(0576)  	 	       	  	if(key_pressed)
    05B5 902001C4  LDS	R2,key_pressed
    05B7 2022      TST	R2
    05B8 F091      BEQ	0x05CB
(0577)  	 	       	  		if(key_value==key_mode)
    05B9 918001C5  LDS	R24,key_value
    05BB 3F8C      CPI	R24,0xFC
    05BC F471      BNE	0x05CB
(0578)  	 	       	  		{
(0579)  	 	       	  		adc_Disable();
    05BD DC23      RCALL	_adc_Disable
(0580)  	 	       	  		AT45DB021_addr=0x7F;
    05BE E78F      LDI	R24,0x7F
    05BF 93800064  STS	AT45DB021_addr,R24
(0581)  	 	                		AT45DB021_data=0xF3;
    05C1 EF83      LDI	R24,0xF3
    05C2 938001BE  STS	AT45DB021_data,R24
(0582)  	 	                		mode_state=AT45DB021_addr_modify_mode;
    05C4 E088      LDI	R24,0x8
    05C5 938001C3  STS	mode_state,R24
(0583)  	 	       	  		PutStr("45DB21块地址修改");
    05C7 EA0A      LDI	R16,0xAA
    05C8 E010      LDI	R17,0
    05C9 D43C      RCALL	_PutStr
(0584)  	 	       	  		goto end_key_value;
    05CA C084      RJMP	0x064F
(0585)  	 	       	  		}
(0586)  	 	       	  	adc_value=ReadADC(0);
    05CB 2700      CLR	R16
    05CC DC3E      RCALL	_ReadADC
    05CD 93100063  STS	adc_value+1,R17
    05CF 93000062  STS	adc_value,R16
    05D1 CFE2      RJMP	0x05B4
(0587)  	 	       	       	}
(0588)  	 	       	  	#endif
(0589)  	 	                	break;
    05D2 C07C      RJMP	0x064F
(0590)  	 	                 case in_eeprom_data_modify_mode:
(0591)  	 	                	adc_Enable();
    05D3 DC04      RCALL	_adc_Enable
(0592)  	 	                	 mode_state=adc_mode;
    05D4 E087      LDI	R24,7
    05D5 938001C3  STS	mode_state,R24
(0593)  	 	       	  	PutStr("ADC模式");
    05D7 EB0B      LDI	R16,0xBB
    05D8 E010      LDI	R17,0
    05D9 D42C      RCALL	_PutStr
(0594)  	 	       	  	 adc_value=8888;
    05DA EB88      LDI	R24,0xB8
    05DB E292      LDI	R25,0x22
    05DC 93900063  STS	adc_value+1,R25
    05DE 93800062  STS	adc_value,R24
(0595)  	 	       	  	 	key_pressed=false;
    05E0 2422      CLR	R2
    05E1 922001C4  STS	key_pressed,R2
    05E3 C01D      RJMP	0x0601
(0596)  	 	       	  	 	#ifdef  query_adc
(0597)  	 	       	      while(1)
(0598)  	 	       	  	{ Key_Task();
    05E4 DD33      RCALL	_Key_Task
(0599)  	 	       	  	if(key_pressed)
    05E5 902001C4  LDS	R2,key_pressed
    05E7 2022      TST	R2
    05E8 F091      BEQ	0x05FB
(0600)  	 	       	  		if(key_value==key_mode)
    05E9 918001C5  LDS	R24,key_value
    05EB 3F8C      CPI	R24,0xFC
    05EC F471      BNE	0x05FB
(0601)  	 	       	  		{
(0602)  	 	       	  		adc_Disable();
    05ED DBF3      RCALL	_adc_Disable
(0603)  	 	       	  		AT45DB021_addr=0x7F;
    05EE E78F      LDI	R24,0x7F
    05EF 93800064  STS	AT45DB021_addr,R24
(0604)  	 	                		AT45DB021_data=0xF3;
    05F1 EF83      LDI	R24,0xF3
    05F2 938001BE  STS	AT45DB021_data,R24
(0605)  	 	                		mode_state=AT45DB021_addr_modify_mode;
    05F4 E088      LDI	R24,0x8
    05F5 938001C3  STS	mode_state,R24
(0606)  	 	       	  		PutStr("45DB21块地址修改");
    05F7 EA0A      LDI	R16,0xAA
    05F8 E010      LDI	R17,0
    05F9 D40C      RCALL	_PutStr
(0607)  	 	       	  		goto end_key_value;
    05FA C054      RJMP	0x064F
(0608)  	 	       	  		}
(0609)  	 	       	  	adc_value=ReadADC(0);
    05FB 2700      CLR	R16
    05FC DC0E      RCALL	_ReadADC
    05FD 93100063  STS	adc_value+1,R17
    05FF 93000062  STS	adc_value,R16
    0601 CFE2      RJMP	0x05E4
(0610)  	 	       	       	}
(0611)  	 	       	      #endif
(0612)  	 	                	break;
    0602 C04C      RJMP	0x064F
(0613)  	 	                   case AT45DB021_addr_modify_mode:
(0614)  	 	                   case AT45DB021_data_modify_mode:
(0615)  	 	                	mode_state=clock_mode;
    0603 2422      CLR	R2
    0604 922001C3  STS	mode_state,R2
(0616)  	 	       	  	PutStr("时钟模式");
    0606 E406      LDI	R16,0x46
    0607 E011      LDI	R17,1
    0608 D3FD      RCALL	_PutStr
(0617)  	 	                	break;
(0618)                               default :break;
(0619)  	 	       	}
(0620) 			 break;
    0609 C045      RJMP	0x064F
(0621)  	 	case key_enter:
(0622) /* 	 		PutStr("key_enter");
(0623)  	 		if(UCSRB&0x10)
(0624)                      uart0_RX_Enable();
(0625)                      else
(0626)                      uart0_RX_Disable();*/
(0627)                       switch(mode_state)
    060A 914001C3  LDS	R20,mode_state
    060C 2755      CLR	R21
    060D 3041      CPI	R20,1
    060E E0E0      LDI	R30,0
    060F 075E      CPC	R21,R30
    0610 F0A9      BEQ	0x0626
    0611 3042      CPI	R20,2
    0612 E0E0      LDI	R30,0
    0613 075E      CPC	R21,R30
    0614 F0C1      BEQ	0x062D
    0615 3044      CPI	R20,4
    0616 E0E0      LDI	R30,0
    0617 075E      CPC	R21,R30
    0618 F0D9      BEQ	0x0634
    0619 3045      CPI	R20,5
    061A E0E0      LDI	R30,0
    061B 075E      CPC	R21,R30
    061C F0F1      BEQ	0x063B
    061D 3048      CPI	R20,0x8
    061E E0E0      LDI	R30,0
    061F 075E      CPC	R21,R30
    0620 F109      BEQ	0x0642
    0621 3049      CPI	R20,0x9
    0622 E0E0      LDI	R30,0
    0623 075E      CPC	R21,R30
    0624 F121      BEQ	0x0649
    0625 C029      RJMP	0x064F
(0628)  	 	       	{
(0629)  	 	                case out_eeprom_addr_modify_mode:
(0630)  	 	                	PutStr("外部EEPROM数据修改");
    0626 E907      LDI	R16,0x97
    0627 E010      LDI	R17,0
    0628 D3DD      RCALL	_PutStr
(0631)  	 	                	mode_state=out_eeprom_data_modify_mode;
    0629 E082      LDI	R24,2
    062A 938001C3  STS	mode_state,R24
(0632)  	 	                	break;
    062C C022      RJMP	0x064F
(0633)  	 	                case out_eeprom_data_modify_mode:
(0634)  	 	                	PutStr("外部EEPROM地址修改");
    062D ED06      LDI	R16,0xD6
    062E E010      LDI	R17,0
    062F D3D6      RCALL	_PutStr
(0635)  	 	                	mode_state=out_eeprom_addr_modify_mode;
    0630 E081      LDI	R24,1
    0631 938001C3  STS	mode_state,R24
(0636)  	 	               	 break;
    0633 C01B      RJMP	0x064F
(0637)  	 	                case in_eeprom_addr_modify_mode:
(0638)  	 	                	PutStr("内部EEPROM数据修改");
    0634 E804      LDI	R16,0x84
    0635 E010      LDI	R17,0
    0636 D3CF      RCALL	_PutStr
(0639)  	 	                	mode_state=in_eeprom_data_modify_mode;
    0637 E085      LDI	R24,5
    0638 938001C3  STS	mode_state,R24
(0640)  	 	                	break;
    063A C014      RJMP	0x064F
(0641)  	 	                case in_eeprom_data_modify_mode:
(0642)  	 	                	PutStr("内部EEPROM地址修改");
    063B EC03      LDI	R16,0xC3
    063C E010      LDI	R17,0
    063D D3C8      RCALL	_PutStr
(0643)  	 	                	mode_state=in_eeprom_addr_modify_mode;
    063E E084      LDI	R24,4
    063F 938001C3  STS	mode_state,R24
(0644)  	 	               	 break;
    0641 C00D      RJMP	0x064F
(0645)  	 	                case AT45DB021_addr_modify_mode:
(0646)  	 	       	  	PutStr("45DB21数据修改");
    0642 E705      LDI	R16,0x75
    0643 E010      LDI	R17,0
    0644 D3C1      RCALL	_PutStr
(0647)  	 	                	mode_state=AT45DB021_data_modify_mode;
    0645 E089      LDI	R24,0x9
    0646 938001C3  STS	mode_state,R24
(0648)  	 	                	break;
    0648 C006      RJMP	0x064F
(0649)  	 	                case AT45DB021_data_modify_mode:
(0650)  	 	       	  		PutStr("45DB21地址修改");	
    0649 E606      LDI	R16,0x66
    064A E010      LDI	R17,0
    064B D3BA      RCALL	_PutStr
(0651)  	 	                	mode_state=AT45DB021_addr_modify_mode;
    064C E088      LDI	R24,0x8
    064D 938001C3  STS	mode_state,R24
(0652)  	 	               	 break;
(0653) 
(0654)                               default :break;
(0655)  	 	       	}
(0656) 			 break;
(0657)  	 	default:break;
(0658)  	 	}
(0659) end_key_value:
(0660) 	key_pressed=false;
    064F 2422      CLR	R2
    0650 922001C4  STS	key_pressed,R2
    0652 CD82      RJMP	0x03D5
    0653 9622      ADIW	R28,2
    0654 D46C      RCALL	pop_gset5
    0655 9508      RET
(0661)  	 	}
(0662)  	}
(0663)  //insert your functional code here...
(0664) }
(0665) 
(0666) void main()
(0667) {
(0668) UserApplication();
_main:
    0656 DD62      RCALL	_UserApplication
    0657 9508      RET
FILE: D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\AT45DB021.c
(0001) #include "AT45DB021.h"
(0002) #include <iom8v.h>
(0003) #include <macros.h>
(0004) #include "M8Demo.h"
(0005) #include "Uart.h"
(0006) 
(0007) void SPI_MOSI(unsigned char   flag)
(0008) {
(0009) if(flag)
_SPI_MOSI:
  flag                 --> R16
    0658 2300      TST	R16
    0659 F011      BEQ	0x065C
(0010) PORTC|=0x02;
    065A 9AA9      SBI	0x15,1
    065B C003      RJMP	0x065F
(0011) else
(0012) PORTC&=0x7D;
    065C B385      IN	R24,0x15
    065D 778D      ANDI	R24,0x7D
    065E BB85      OUT	0x15,R24
    065F 9508      RET
(0013) }
(0014) unsigned char   SPI_MISO(void)
(0015) {
(0016) if

⌨️ 快捷键说明

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