📄 rtc.asm
字号:
AND V9, V9, #7 ; |99|
MOV A1, V9, LSL #3 ; |99|
ADD V9, A1, V9, LSL #1 ; |99|
LDR A1, [SP, #12] ; |99|
AND A1, A1, #15 ; |99|
ADD V9, A1, V9 ; |99|
STR V9, [SP, #4] ; |99|
.dwpsn "RTC.c",101,3
LDR V9, [SP, #16] ; |101|
MOV V9, V9, ASR #4 ; |101|
AND V9, V9, #7 ; |101|
MOV A1, V9, LSL #3 ; |101|
ADD V9, A1, V9, LSL #1 ; |101|
LDR A1, [SP, #16] ; |101|
AND A1, A1, #15 ; |101|
ADD V9, A1, V9 ; |101|
STR V9, [SP, #16] ; |101|
.dwpsn "RTC.c",103,3
LDR V9, [SP, #16] ; |103|
STR V9, [SP, #0] ; |103|
MOV A1, #1 ; |103|
ADR A2, SL4 ; |103|
LDR A3, [SP, #8] ; |103|
LDR A4, [SP, #4] ; |103|
BL _UART_Printf ; |103|
; |103|
.dwpsn "RTC.c",105,3
ADD SP, SP, #20
.dwcfa 0x0e, 4
LDMFD SP!, {PC}
.dwattr DW$21, DW_AT_end_file("RTC.c")
.dwattr DW$21, DW_AT_end_line(0x69)
.dwattr DW$21, DW_AT_end_column(0x03)
.dwendentry
.dwendtag DW$21
.sect ".text"
.align 4
.clink
.armfunc _Alarm_Test
.state32
.global _Alarm_Test
DW$26 .dwtag DW_TAG_subprogram, DW_AT_name("Alarm_Test"), DW_AT_symbol_name("_Alarm_Test")
.dwattr DW$26, DW_AT_low_pc(_Alarm_Test)
.dwattr DW$26, DW_AT_high_pc(0x00)
.dwattr DW$26, DW_AT_begin_file("RTC.c")
.dwattr DW$26, DW_AT_begin_line(0x72)
.dwattr DW$26, DW_AT_begin_column(0x07)
.dwpsn "RTC.c",115,2
.dwfde DW$CIE
;*****************************************************************************
;* FUNCTION NAME: Alarm_Test *
;* *
;* Regs Modified : A1,A2,A3,A4,V9,SP,LR,SR *
;* Regs Used : A1,A2,A3,A4,V9,SP,LR,SR *
;* Local Frame Size : 0 Args + 24 Auto + 4 Save = 28 byte *
;*****************************************************************************
_Alarm_Test:
;* --------------------------------------------------------------------------*
.dwcfa 0x0e, 0
.dwcfa 0x09, 26, 14
STMFD SP!, {LR}
.dwcfa 0x0e, 4
.dwcfa 0x80, 14, 1
SUB SP, SP, #24
.dwcfa 0x0e, 28
DW$27 .dwtag DW_TAG_variable, DW_AT_name("hour"), DW_AT_symbol_name("_hour")
.dwattr DW$27, DW_AT_type(*DW$T$10)
.dwattr DW$27, DW_AT_location[DW_OP_breg13 0]
DW$28 .dwtag DW_TAG_variable, DW_AT_name("minute"), DW_AT_symbol_name("_minute")
.dwattr DW$28, DW_AT_type(*DW$T$10)
.dwattr DW$28, DW_AT_location[DW_OP_breg13 4]
DW$29 .dwtag DW_TAG_variable, DW_AT_name("second"), DW_AT_symbol_name("_second")
.dwattr DW$29, DW_AT_type(*DW$T$10)
.dwattr DW$29, DW_AT_location[DW_OP_breg13 8]
DW$30 .dwtag DW_TAG_variable, DW_AT_name("temp1"), DW_AT_symbol_name("_temp1")
.dwattr DW$30, DW_AT_type(*DW$T$10)
.dwattr DW$30, DW_AT_location[DW_OP_breg13 12]
DW$31 .dwtag DW_TAG_variable, DW_AT_name("temp2"), DW_AT_symbol_name("_temp2")
.dwattr DW$31, DW_AT_type(*DW$T$10)
.dwattr DW$31, DW_AT_location[DW_OP_breg13 16]
DW$32 .dwtag DW_TAG_variable, DW_AT_name("previous"), DW_AT_symbol_name("_previous")
.dwattr DW$32, DW_AT_type(*DW$T$10)
.dwattr DW$32, DW_AT_location[DW_OP_breg13 20]
.dwpsn "RTC.c",118,3
ADR A2, SL5 ; |118|
MOV A1, #1 ; |118|
BL _UART_Printf ; |118|
; |118|
.dwpsn "RTC.c",120,3
ADR A2, SL1 ; |120|
MOV A1, #1 ; |120|
BL _UART_Printf ; |120|
; |120|
.dwpsn "RTC.c",121,3
MOV A1, #1 ; |121|
BL _UART_GetNum ; |121|
; |121|
STR A1, [SP, #0] ; |121|
.dwpsn "RTC.c",122,3
MOV A1, #1 ; |122|
ADR A2, SL2 ; |122|
BL _UART_Printf ; |122|
; |122|
.dwpsn "RTC.c",123,3
MOV A1, #1 ; |123|
BL _UART_GetNum ; |123|
; |123|
STR A1, [SP, #4] ; |123|
.dwpsn "RTC.c",124,3
MOV A1, #1 ; |124|
ADR A2, SL3 ; |124|
BL _UART_Printf ; |124|
; |124|
.dwpsn "RTC.c",125,3
MOV A1, #1 ; |125|
BL _UART_GetNum ; |125|
; |125|
STR A1, [SP, #8] ; |125|
.dwpsn "RTC.c",127,3
MOV A1, #1 ; |127|
BL _MSI2C_AccessPage ; |127|
; |127|
.dwpsn "RTC.c",130,3
LDR A1, [SP, #0] ; |130|
MOV A2, #10 ; |130|
BL I_DIV ; |130|
; |130|
STR A2, [SP, #12] ; |130|
.dwpsn "RTC.c",131,3
LDR V9, [SP, #12] ; |131|
MOV A1, V9, LSL #3 ; |131|
ADD V9, A1, V9, LSL #1 ; |131|
LDR A1, [SP, #0] ; |131|
SUB V9, A1, V9 ; |131|
STR V9, [SP, #16] ; |131|
.dwpsn "RTC.c",132,3
LDR A1, [SP, #16] ; |132|
LDR V9, [SP, #12] ; |132|
ORR V9, A1, V9, LSL #4 ; |132|
MOV A1, #10 ; |132|
AND A2, V9, #255
BL _MSI2C_MasterPollingSendAbb ; |132|
; |132|
.dwpsn "RTC.c",134,3
MOV A2, #10 ; |134|
LDR A1, [SP, #4] ; |134|
BL I_DIV ; |134|
; |134|
;* --------------------------------------------------------------------------*
NOP
STR A2, [SP, #12] ; |134|
.dwpsn "RTC.c",135,3
LDR V9, [SP, #12] ; |135|
MOV A1, V9, LSL #3 ; |135|
ADD V9, A1, V9, LSL #1 ; |135|
LDR A1, [SP, #4] ; |135|
SUB V9, A1, V9 ; |135|
STR V9, [SP, #16] ; |135|
.dwpsn "RTC.c",136,3
LDR A1, [SP, #16] ; |136|
LDR V9, [SP, #12] ; |136|
ORR V9, A1, V9, LSL #4 ; |136|
AND A2, V9, #255
MOV A1, #9 ; |136|
BL _MSI2C_MasterPollingSendAbb ; |136|
; |136|
.dwpsn "RTC.c",138,3
LDR A1, [SP, #8] ; |138|
MOV A2, #10 ; |138|
BL I_DIV ; |138|
; |138|
STR A2, [SP, #12] ; |138|
.dwpsn "RTC.c",139,3
LDR V9, [SP, #12] ; |139|
MOV A1, V9, LSL #3 ; |139|
ADD V9, A1, V9, LSL #1 ; |139|
LDR A1, [SP, #8] ; |139|
SUB V9, A1, V9 ; |139|
STR V9, [SP, #16] ; |139|
.dwpsn "RTC.c",140,3
LDR A1, [SP, #16] ; |140|
LDR V9, [SP, #12] ; |140|
ORR V9, A1, V9, LSL #4 ; |140|
MOV A1, #8 ; |140|
AND A2, V9, #255
BL _MSI2C_MasterPollingSendAbb ; |140|
; |140|
.dwpsn "RTC.c",144,3
MOV A1, #18 ; |144|
BL _MSI2C_MasterPollingReceiveAbb ; |144|
; |144|
STR A1, [SP, #20] ; |144|
.dwpsn "RTC.c",145,3
LDR V9, [SP, #20] ; |145|
ORR V9, V9, #13 ; |145|
MOV A1, #18 ; |145|
AND A2, V9, #255
BL _MSI2C_MasterPollingSendAbb ; |145|
; |145|
.dwpsn "RTC.c",147,3
MOV A1, #18 ; |147|
BL _MSI2C_MasterPollingReceiveAbb ; |147|
; |147|
STR A1, [SP, #20] ; |147|
.dwpsn "RTC.c",151,3
LDR V9, [SP, #20] ; |151|
MOV V9, V9, ASR #3 ; |151|
MOVS V9, V9, LSL #31 ; |151|
BEQ L1 ; |151|
; |151|
;* --------------------------------------------------------------------------*
.dwpsn "RTC.c",153,5
ADR A2, SL6 ; |153|
MOV A1, #1 ; |153|
BL _UART_Printf ; |153|
; |153|
.dwpsn "RTC.c",154,5
;* --------------------------------------------------------------------------*
L1:
.dwpsn "RTC.c",157,2
ADD SP, SP, #24
.dwcfa 0x0e, 4
LDMFD SP!, {PC}
.dwattr DW$26, DW_AT_end_file("RTC.c")
.dwattr DW$26, DW_AT_end_line(0x9d)
.dwattr DW$26, DW_AT_end_column(0x02)
.dwendentry
.dwendtag DW$26
;******************************************************************************
;* STRINGS *
;******************************************************************************
.sect ".text"
.align 4
SL1: .string "Input the hour value:",13,10,0
.align 4
SL2: .string "Input the minute value:",13,10,0
.align 4
SL3: .string "Input the second value:",13,10,0
.sect ".text"
.align 4
.clink
.armfunc _Read_Register
.state32
.global _Read_Register
DW$33 .dwtag DW_TAG_subprogram, DW_AT_name("Read_Register"), DW_AT_symbol_name("_Read_Register")
.dwattr DW$33, DW_AT_low_pc(_Read_Register)
.dwattr DW$33, DW_AT_high_pc(0x00)
.dwattr DW$33, DW_AT_begin_file("RTC.c")
.dwattr DW$33, DW_AT_begin_line(0xa6)
.dwattr DW$33, DW_AT_begin_column(0x07)
.dwpsn "RTC.c",167,2
.dwfde DW$CIE
;*****************************************************************************
;* FUNCTION NAME: Read_Register *
;* *
;* Regs Modified : A1,A2,A3,A4,V9,SP,LR,SR *
;* Regs Used : A1,A2,A3,A4,V9,SP,LR,SR *
;* Local Frame Size : 0 Args + 48 Auto + 4 Save = 52 byte *
;*****************************************************************************
_Read_Register:
;* --------------------------------------------------------------------------*
.dwcfa 0x0e, 0
.dwcfa 0x09, 26, 14
STMFD SP!, {LR}
.dwcfa 0x0e, 4
.dwcfa 0x80, 14, 1
SUB SP, SP, #48
.dwcfa 0x0e, 52
DW$34 .dwtag DW_TAG_variable, DW_AT_name("page"), DW_AT_symbol_name("_page")
.dwattr DW$34, DW_AT_type(*DW$T$10)
.dwattr DW$34, DW_AT_location[DW_OP_breg13 0]
DW$35 .dwtag DW_TAG_variable, DW_AT_name("address"), DW_AT_symbol_name("_address")
.dwattr DW$35, DW_AT_type(*DW$T$10)
.dwattr DW$35, DW_AT_location[DW_OP_breg13 4]
DW$36 .dwtag DW_TAG_variable, DW_AT_name("content"), DW_AT_symbol_name("_content")
.dwattr DW$36, DW_AT_type(*DW$T$10)
.dwattr DW$36, DW_AT_location[DW_OP_breg13 8]
DW$37 .dwtag DW_TAG_variable, DW_AT_name("i"), DW_AT_symbol_name("_i")
.dwattr DW$37, DW_AT_type(*DW$T$10)
.dwattr DW$37, DW_AT_location[DW_OP_breg13 12]
DW$38 .dwtag DW_TAG_variable, DW_AT_name("temp"), DW_AT_symbol_name("_temp")
.dwattr DW$38, DW_AT_type(*DW$T$35)
.dwattr DW$38, DW_AT_location[DW_OP_breg13 16]
.dwpsn "RTC.c",172,3
ADR A2, SL7 ; |172|
MOV A1, #1 ; |172|
BL _UART_Printf ; |172|
; |172|
.dwpsn "RTC.c",173,3
MOV A1, #1 ; |173|
BL _UART_GetNum ; |173|
; |173|
STR A1, [SP, #0] ; |173|
.dwpsn "RTC.c",176,3
MOV A1, #1 ; |176|
ADR A2, SL8 ; |176|
BL _UART_Printf ; |176|
; |176|
.dwpsn "RTC.c",177,3
ADR A2, SL9 ; |177|
MOV A1, #1 ; |177|
BL _UART_Printf ; |177|
; |177|
.dwpsn "RTC.c",178,3
MOV A1, #1 ; |178|
BL _UART_GetNum ; |178|
; |178|
STR A1, [SP, #4] ; |178|
.dwpsn "RTC.c",181,3
LDRB A1, [SP, #0] ; |181|
BL _MSI2C_AccessPage ; |181|
; |181|
.dwpsn "RTC.c",182,3
LDRB A1, [SP, #4] ; |182|
BL _MSI2C_MasterPollingReceiveAbb ; |182|
; |182|
STR A1, [SP, #8] ; |182|
.dwpsn "RTC.c",184,3
MOV A1, #1 ; |184|
ADR A2, SL10 ; |184|
BL _UART_Printf ; |184|
; |184|
.dwpsn "RTC.c",185,3
ADR A2, SL11 ; |185|
MOV A1, #1 ; |185|
LDR A3, [SP, #0] ; |185|
LDR A4, [SP, #4] ; |185|
BL _UART_Printf ; |185|
; |185|
.dwpsn "RTC.c",187,3
ADR A2, SL12 ; |187|
MOV A1, #1 ; |187|
BL _UART_Printf ; |187|
; |187|
.dwpsn "RTC.c",191,7
MOV V9, #7 ; |191|
STR V9, [SP, #12] ; |191|
.dwpsn "RTC.c",191,11
LDR V9, [SP, #12] ; |191|
CMP V9, #0 ; |191|
BMI L3 ; |191|
; |191|
;* --------------------------------------------------------------------------*
;* BEGIN LOOP L2
;*
;* Loop source line : 191
;* Loop closing brace source line : 196
;* Known Minimum Trip Count : 1
;* Known Maximum Trip Count : 4294967295
;* Known Max Trip Count Factor : 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -