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

📄 demo.s90

📁 Flashfile system for avr, ICC, IAR compiled with examples. very cool
💻 S90
📖 第 1 页 / 共 5 页
字号:
//////////////////////////////////////////////////////////////////////////////
//                                                                           /
// 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 + -