📄 m8demo.lst
字号:
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 + -