?? demo.s90
字號:
//////////////////////////////////////////////////////////////////////////////
// /
// IAR Atmel AVR C/EC++ Compiler V3.20C/W32 11/Mar/2005 14:24:46 /
// Copyright 1996-2004 IAR Systems. All rights reserved. /
// /
// Source file = I:\FlashFile\IARFlashCF\demo.c /
// Command line = --cpu=m128 -ms -o I:\FlashFile\IARFlashCF\Debug\Obj\ /
// -lCN I:\FlashFile\IARFlashCF\Debug\List\ -lB /
// I:\FlashFile\IARFlashCF\Debug\List\ /
// --initializers_in_flash -z3 --no_cse --no_inline /
// --no_code_motion --no_cross_call --no_clustering /
// --debug -e -I "C:\Program Files\IAR Systems\Embedded /
// Workbench 3.2\avr\INC\" -I "C:\Program Files\IAR /
// Systems\Embedded Workbench 3.2\avr\INC\CLIB\" /
// --eeprom_size 4096 I:\FlashFile\IARFlashCF\demo.c /
// List file = I:\FlashFile\IARFlashCF\Debug\List\demo.s90 /
// /
// /
//////////////////////////////////////////////////////////////////////////////
NAME demo
RSEG CSTACK:DATA:NOROOT(0)
RSEG RSTACK:DATA:NOROOT(0)
EXTERN ?EPILOGUE_B10_L09
EXTERN ?EPILOGUE_B11_L09
EXTERN ?EPILOGUE_B12_L09
EXTERN ?EPILOGUE_B14_L09
EXTERN ?EPILOGUE_B16_L09
EXTERN ?EPILOGUE_B3_L09
EXTERN ?EPILOGUE_B4_L09
EXTERN ?EPILOGUE_B5_L09
EXTERN ?EPILOGUE_B6_L09
EXTERN ?EPILOGUE_B8_L09
EXTERN ?EPILOGUE_B9_L09
EXTERN ?L_EC_MUL_L03
EXTERN ?L_SHL_L03
EXTERN ?PROLOGUE10_L09
EXTERN ?PROLOGUE11_L09
EXTERN ?PROLOGUE12_L09
EXTERN ?PROLOGUE14_L09
EXTERN ?PROLOGUE16_L09
EXTERN ?PROLOGUE3_L09
EXTERN ?PROLOGUE4_L09
EXTERN ?PROLOGUE5_L09
EXTERN ?PROLOGUE6_L09
EXTERN ?PROLOGUE8_L09
EXTERN ?PROLOGUE9_L09
EXTERN ?Register_R10_is_cg_reg
EXTERN ?Register_R11_is_cg_reg
EXTERN ?Register_R12_is_cg_reg
EXTERN ?Register_R13_is_cg_reg
EXTERN ?Register_R14_is_cg_reg
EXTERN ?Register_R15_is_cg_reg
EXTERN ?Register_R4_is_cg_reg
EXTERN ?Register_R5_is_cg_reg
EXTERN ?Register_R6_is_cg_reg
EXTERN ?Register_R7_is_cg_reg
EXTERN ?Register_R8_is_cg_reg
EXTERN ?Register_R9_is_cg_reg
EXTERN ?S_EC_MUL_L02
EXTERN ?S_SHL_L02
EXTERN ?UC_DIVMOD_L01
EXTERN ?UL_DIVMOD_L03
EXTERN ?US_DIVMOD_L02
EXTERN ?US_SHR_L02
EXTERN ?need_segment_init
PUBWEAK `?<Segment init: NEAR_Z>`
PUBLIC BPB_FATSz16
PUBLIC BPB_FATType
PUBLIC BPB_RootEntCnt
PUBLIC BPB_RsvdSecCnt
PUBLIC BPB_SecPerClus
PUBLIC BS_VolLab
PUBLIC BS_VolSerial
PUBLIC C2DStr
PUBLIC CSCStr
PUBLIC CreateFailedStr
PUBLIC CreatedStr
PUBLIC DataClusTot
PUBLIC EOFStr
PUBLIC Entry_str
PUBLIC FILENAME
PUBLIC Fail_str
PUBLIC FileList_str
PUBLIC FirstDataSector
PUBLIC GetVolID
PUBLIC SC_str
PUBLIC SDSStr
PUBLIC StartDemoStr
PUBLIC VolLabelStr
PUBLIC VolSerialStr
PUBLIC WORKING_FOLDER
PUBWEAK _A_DDRA
PUBWEAK _A_DDRB
PUBWEAK _A_DDRC
PUBWEAK _A_DDRD
PUBWEAK _A_DDRE
PUBWEAK _A_DDRF
PUBWEAK _A_DDRG
PUBWEAK _A_EICRA
PUBWEAK _A_EICRB
PUBWEAK _A_EIMSK
PUBWEAK _A_ETIMSK
PUBWEAK _A_MCUCR
PUBWEAK _A_PINA
PUBWEAK _A_PINC
PUBWEAK _A_PORTA
PUBWEAK _A_PORTB
PUBWEAK _A_PORTC
PUBWEAK _A_PORTD
PUBWEAK _A_PORTE
PUBWEAK _A_PORTF
PUBWEAK _A_PORTG
PUBWEAK _A_SREG
PUBWEAK _A_TIMSK
PUBWEAK _A_TWBR
PUBWEAK _A_TWCR
PUBWEAK _A_TWDR
PUBWEAK _A_TWSR
PUBWEAK _A_UBRR0H
PUBWEAK _A_UBRR0L
PUBWEAK _A_UBRR1H
PUBWEAK _A_UBRR1L
PUBWEAK _A_UCSR0A
PUBWEAK _A_UCSR0B
PUBWEAK _A_UCSR0C
PUBWEAK _A_UCSR1A
PUBWEAK _A_UCSR1B
PUBWEAK _A_UCSR1C
PUBWEAK _A_UDR0
PUBWEAK _A_XDIV
PUBWEAK _A_XMCRA
PUBLIC _FF_1C_str
PUBLIC _FF_BPB_BPS_str
PUBLIC _FF_BPB_FTE_str
PUBLIC _FF_BPB_FT_str
PUBLIC _FF_BPB_Fz16_str
PUBLIC _FF_BPB_NFAT_str
PUBLIC _FF_BPB_REC_str
PUBLIC _FF_BPB_RSC_str
PUBLIC _FF_BPB_SPC_str
PUBLIC _FF_BPB_TS16_str
PUBLIC _FF_BS_PA_str
PUBLIC _FF_BSec_str
PUBLIC _FF_CCnt_str
PUBLIC _FF_DIR_ADDR
PUBLIC _FF_ERR_str
PUBLIC _FF_F2Addr_str
PUBLIC _FF_FAT1_ADDR
PUBLIC _FF_FAT2_ADDR
PUBLIC _FF_FDSec_str
PUBLIC _FF_FNAME
PUBLIC _FF_FULL_PATH
PUBLIC _FF_InvParTbl_str
PUBLIC _FF_PART_ADDR
PUBLIC _FF_RAddr_str
PUBLIC _FF_RDSec_str
PUBLIC _FF_RErr_str
PUBLIC _FF_ROOT_ADDR
PUBLIC _FF_bcd2bin
PUBLIC _FF_bin2bcd
PUBLIC _FF_buff
PUBLIC _FF_buff_addr
PUBLIC _FF_chdir
PUBLIC _FF_checkdir
PUBLIC _FF_error
PUBLIC _FF_n_temp
PUBLIC _FF_read
PUBLIC _FF_read_disp
PUBLIC _FF_strlen
PUBLIC _FF_strncmp
PUBLIC _FF_strrchr
PUBLIC _FF_write
PUBWEAK __?EEARH
PUBWEAK __?EEARL
PUBWEAK __?EECR
PUBWEAK __?EEDR
PUBLIC __CR
PUBLIC __CRLF
PUBLIC __LF
PUBLIC __OpenBracket
PUBLIC __Period
PUBLIC __Quote
PUBLIC __Tab
PUBLIC __Xstr
PUBLIC addr_to_clust
PUBLIC append_toc
PUBLIC ascii_to_char
PUBLIC available_clusters
PUBLIC c_counter
PUBLIC cf_addr_setup
PUBLIC cf_cmd
PUBLIC cf_pulse_oe
PUBLIC cf_pulse_wr
PUBLIC chdir
PUBLIC chdirc
PUBLIC checkcard
PUBLIC clus_0_addr
PUBLIC clust_to_addr
PUBLIC column_d
PUBLIC done_str
PUBLIC dump_file_data_hex
PUBLIC dump_file_data_view
PUBLIC erase_clus_chain
PUBLIC fclose
PUBLIC fcreate
PUBLIC fcreatec
PUBLIC fend
PUBLIC feof
PUBLIC fflush
PUBLIC ffreemem
PUBLIC fget_file_info
PUBLIC fget_file_infoc
PUBLIC fgetc_
PUBLIC fgets
PUBLIC file_name_conversion
PUBLIC fopen
PUBLIC fopenc
PUBLIC fprintf
PUBLIC fputc_
PUBLIC fputs
PUBLIC fputsc
PUBLIC fquickformat
PUBLIC fread
PUBLIC fseek
PUBLIC ftell
PUBLIC fwrite
PUBLIC init_devices
PUBLIC initialize_media
PUBLIC ld_str
PUBLIC main
PUBLIC mkdir
PUBLIC next_cluster
PUBLIC p2DCRLFStr
PUBLIC p2DColinStr
PUBLIC p2DSlashStr
PUBLIC p4DStr
PUBLIC port_init
PUBLIC prev_cluster
PUBLIC putchar
PUBLIC read_directory
PUBLIC remove
PUBLIC removec
PUBLIC rename
PUBLIC rmdir
PUBLIC rtc_date
PUBLIC rtc_get_timeNdate
PUBLIC rtc_hour
PUBLIC rtc_min
PUBLIC rtc_month
PUBLIC rtc_sec
PUBLIC rtc_set_date
PUBLIC rtc_set_time
PUBLIC rtc_year
PUBLIC scan_directory
PUBLIC twi_read
PUBLIC twi_rtc
PUBLIC twi_setup
PUBLIC twi_status
PUBLIC twi_step
PUBLIC twi_write
PUBLIC uart0_init
PUBLIC uart1_init
PUBLIC ungetc
PUBLIC valid_file_char
PUBLIC write_clus_table
EXTERN printf_P
EXTERN malloc
EXTERN free
EXTERN vsprintf
EXTERN _Small_Ctype
// I:\FlashFile\IARFlashCF\demo.c
// 1 /*********************************************
// 2 Project : FlashFileSD Example
// 3 Version : 2.03
// 4 Date : 03/11/2005
// 5 Author : Erick M Higa
// 6 Company : Progressive Resources LLC
// 7 Comments:
// 8 This is a simple example program for the FlashFileSD
// 9
// 10
// 11 Chip type : ATmega128
// 12 Program type : Application
// 13 Clock frequency : 14.745600 MHz
// 14 Memory model : Small
// 15 External SRAM size : 0
// 16 Data Stack size : 1024
// 17 *********************************************/
// 18
// 19
// 20
// 21 #include <iom128.h>
// 22 #include "putchar.c"
RSEG CODE:CODE:NOROOT(1)
// __nearfunc int putchar(int)
putchar:
??putchar_0:
SBIS 0x0B,0x05
RJMP ??putchar_0
MOV R18,R16
OUT 0x0C,R18
RET
// 23 #include "options.h"
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// unsigned char __near _FF_buff[512]
_FF_buff:
DS 512
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// unsigned char __near BPB_SecPerClus
BPB_SecPerClus:
DS 1
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// uHILO16 __near BPB_RsvdSecCnt
BPB_RsvdSecCnt:
DS 2
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// uHILO16 __near BPB_RootEntCnt
BPB_RootEntCnt:
DS 2
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// uHILO16 __near BPB_FATSz16
BPB_FATSz16:
DS 2
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// unsigned char __near BPB_FATType
BPB_FATType:
DS 1
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// uHILO32 __near BS_VolSerial
BS_VolSerial:
DS 4
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// unsigned char __near BS_VolLab[12]
BS_VolLab:
DS 12
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// unsigned int __near _FF_PART_ADDR
_FF_PART_ADDR:
DS 2
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// unsigned long __near _FF_ROOT_ADDR
_FF_ROOT_ADDR:
DS 4
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// unsigned long __near _FF_DIR_ADDR
_FF_DIR_ADDR:
DS 4
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// unsigned int __near _FF_FAT1_ADDR
_FF_FAT1_ADDR:
DS 2
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// unsigned long __near _FF_FAT2_ADDR
_FF_FAT2_ADDR:
DS 4
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// unsigned int __near FirstDataSector
FirstDataSector:
DS 2
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// unsigned char __near _FF_error
_FF_error:
DS 1
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// unsigned long __near _FF_buff_addr
_FF_buff_addr:
DS 4
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// unsigned int __near clus_0_addr
clus_0_addr:
DS 2
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// unsigned int __near _FF_n_temp
_FF_n_temp:
DS 2
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// unsigned int __near c_counter
c_counter:
DS 2
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// unsigned char __near _FF_FULL_PATH[50]
_FF_FULL_PATH:
DS 50
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// unsigned long __near DataClusTot
DataClusTot:
DS 4
RSEG FAR_F:CODE:NOROOT(0)
// char __farflash _FF_BSec_str[33]
_FF_BSec_str:
DB "\015\012Boot_Sec: [%X %X %X] [%X] [%X]"
RSEG FAR_F:CODE:NOROOT(0)
// char __farflash _FF_BS_PA_str[20]
_FF_BS_PA_str:
DB "\015\012Part Address: %lX"
RSEG FAR_F:CODE:NOROOT(0)
// char __farflash _FF_BPB_BPS_str[21]
_FF_BPB_BPS_str:
DB "\015\012BPB_BytsPerSec: %X"
RSEG FAR_F:CODE:NOROOT(0)
// char __farflash _FF_BPB_SPC_str[21]
_FF_BPB_SPC_str:
DB "\015\012BPB_SecPerClus: %X"
RSEG FAR_F:CODE:NOROOT(0)
// char __farflash _FF_BPB_RSC_str[21]
_FF_BPB_RSC_str:
DB "\015\012BPB_RsvdSecCnt: %X"
RSEG FAR_F:CODE:NOROOT(0)
// char __farflash _FF_BPB_NFAT_str[18]
_FF_BPB_NFAT_str:
DB "\015\012BPB_NumFATs: %X"
RSEG FAR_F:CODE:NOROOT(0)
// char __farflash _FF_BPB_REC_str[21]
_FF_BPB_REC_str:
DB "\015\012BPB_RootEntCnt: %X"
RSEG FAR_F:CODE:NOROOT(0)
// char __farflash _FF_BPB_Fz16_str[18]
_FF_BPB_Fz16_str:
DB "\015\012BPB_FATSz16: %X"
RSEG FAR_F:CODE:NOROOT(0)
// char __farflash _FF_BPB_TS16_str[20]
_FF_BPB_TS16_str:
DB "\015\012BPB_TotSec16: %lX"
RSEG FAR_F:CODE:NOROOT(0)
// char __farflash _FF_BPB_FT_str[19]
_FF_BPB_FT_str:
DB "\015\012BPB_FATType: FAT"
RSEG FAR_F:CODE:NOROOT(0)
// char __farflash _FF_1C_str[4]
_FF_1C_str:
DB "1%c"
RSEG FAR_F:CODE:NOROOT(0)
// char __farflash _FF_ERR_str[9]
_FF_ERR_str:
DB " ERROR!!"
RSEG FAR_F:CODE:NOROOT(0)
// char __farflash _FF_BPB_FTE_str[28]
_FF_BPB_FTE_str:
DB "\015\012BPB_FATType: FAT ERROR!!!"
RSEG FAR_F:CODE:NOROOT(0)
// char __farflash _FF_CCnt_str[18]
_FF_CCnt_str:
DB "\015\012ClusterCnt: %lX"
RSEG FAR_F:CODE:NOROOT(0)
// char __farflash _FF_RAddr_str[17]
_FF_RAddr_str:
DB "\015\012ROOT_ADDR: %lX"
RSEG FAR_F:CODE:NOROOT(0)
// char __farflash _FF_F2Addr_str[17]
_FF_F2Addr_str:
DB "\015\012FAT2_ADDR: %lX"
RSEG FAR_F:CODE:NOROOT(0)
// char __farflash _FF_RDSec_str[21]
_FF_RDSec_str:
DB "\015\012RootDirSectors: %X"
RSEG FAR_F:CODE:NOROOT(0)
// char __farflash _FF_FDSec_str[22]
_FF_FDSec_str:
DB "\015\012FirstDataSector: %X"
RSEG FAR_F:CODE:NOROOT(0)
// char __farflash _FF_RErr_str[16]
_FF_RErr_str:
DB "\015\012Read ERROR!!!"
RSEG FAR_F:CODE:NOROOT(0)
// char __farflash _FF_InvParTbl_str[32]
_FF_InvParTbl_str:
DB "\015\012Invalid Partition Table Error"
RSEG CODE:CODE:NOROOT(1)
// __nearfunc unsigned char initialize_media()
initialize_media:
CALL ?PROLOGUE6_L09
REQUIRE ?Register_R4_is_cg_reg
REQUIRE ?Register_R5_is_cg_reg
SBIW R29 : R28,6
LDI R16,224
OUT 0x14,R16
LDI R16,255
OUT 0x1A,R16
LDI R16,1
STS 100,R16
LDI R16,255
OUT 0x17,R16
LDI R16,64
OUT 0x15,R16
LDI R16,1
STS 101,R16
LDI R16,0
OUT 0x1B,R16
LDI R16,5
OUT 0x18,R16
LDI R16,0
LDI R17,0
LDI R30,LOW(_FF_n_temp)
LDI R31,(_FF_n_temp) >> 8
ST Z,R16
STD Z+1,R17
RCALL checkcard
TST R16
BRNE ??initialize_media_0
LDI R16,0
RJMP ??initialize_media_1
??initialize_media_0:
LDI R20,LOW(_FF_buff)
LDI R21,(_FF_buff) >> 8
LDI R16,0
LDI R17,0
LDI R18,0
LDI R19,0
RCALL _FF_read
TST R16
BRNE ??initialize_media_2
LDI R16,LOW(_FF_RErr_str)
LDI R17,HIGH(_FF_RErr_str)
LDI R18,(_FF_RErr_str) >> 16
CALL printf_P
LDI R16,1
STS _FF_error,R16
LDI R16,0
RJMP ??initialize_media_1
??initialize_media_2:
LDS R16,(_FF_buff + 510)
CPI R16,85
BRNE ??initialize_media_3
LDS R16,(_FF_buff + 511)
CPI R16,170
BREQ ??initialize_media_4
??initialize_media_3:
LDI R16,LOW(_FF_InvParTbl_str)
LDI R17,HIGH(_FF_InvParTbl_str)
LDI R18,(_FF_InvParTbl_str) >> 16
CALL printf_P
LDI R16,18
STS _FF_error,R16
LDI R16,0
RJMP ??initialize_media_1
??initialize_media_4:
LDS R16,_FF_buff
CPI R16,235
BRNE ??initialize_media_5
LDS R16,(_FF_buff + 2)
CPI R16,144
BREQ ??initialize_media_6
??initialize_media_5:
LDS R16,_FF_buff
CPI R16,233
BRNE ??initialize_media_7
??initialize_media_6:
LDI R16,0
LDI R17,0
ST Y,R16
STD Y+1,R17
RJMP ??initialize_media_8
??initialize_media_7:
LDS R16,(_FF_buff + 447)
TST R16
BREQ ??initialize_media_9
LDS R16,(_FF_buff + 455)
STD Y+1,R16
LDS R16,(_FF_buff + 454)
ST Y,R16
RJMP ??initialize_media_8
??initialize_media_9:
LDS R16,(_FF_buff + 463)
TST R16
BREQ ??initialize_media_10
LDS R16,(_FF_buff + 471)
STD Y+1,R16
LDS R16,(_FF_buff + 470)
ST Y,R16
RJMP ??initialize_media_8
??initialize_media_10:
LDS R16,(_FF_buff + 479)
TST R16
BREQ ??initialize_media_11
LDS R16,(_FF_buff + 487)
STD Y+1,R16
LDS R16,(_FF_buff + 486)
ST Y,R16
RJMP ??initialize_media_8
??initialize_media_11:
LDS R16,(_FF_buff + 495)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -