externalinterrupt0.asm

来自「The circuit is drawn for measurement of 」· 汇编 代码 · 共 53 行

ASM
53
字号
;------------------------------------------------------------------------------------------------------
;Name		:ExternalInterrupt0
;------------------------------------------------------------------------------------------------------
.cseg
.org		SegmentExternalInterrupt0
;------------------------------------------------------------------------------------------------------
ExternalInterrupt0:
	ldi		TempRegister,0b01000000							
	out 	GIMSK,TempRegister
	rcall	ClearAllTimeRegisters							;Clear All Time Registers
	ldi		TempRegister,0b00000011
	out		MCUCR,TempRegister
	ret
;------------------------------------------------------------------------------------------------------
ClearAllTimeRegisters:										;Clear All Time Registers
	clr		TimeFlagRegister
	clr		SecondRegister
	clr		MinuteRegister
	clr		HourRegister
	ret
;------------------------------------------------------------------------------------------------------
SecPassed:													;Do when 1 second passed
	ori		TimeFlagRegister,SetSecondFlag					;SecFlag = 1
	inc		SecondRegister									;increase SecRegister by 1
	cpi		SecondRegister,_SEC_IN_1MIN						;If SecRegister = 60
	breq	MinPassed										;then 1 minute passed
	reti
;------------------------------------------------------------------------------------------------------
MinPassed:													;Do when 1 minute passed
	ori		TimeFlagRegister,SetMinuteFlag					;MinFlag = 1
	clr		SecondRegister									;SecRegister = 0x00
	inc		MinuteRegister									;increase MinRegister by 1
	cpi		MinuteRegister,_MIN_IN_1HOUR					;If MinRegister = 60
	breq	HourPassed										;then 1 hour passed
	reti
;------------------------------------------------------------------------------------------------------
HourPassed:													;Do when 1 hour passed
	ori		TimeFlagRegister,SetHourFlag					;HourFlag = 1
	clr		MinuteRegister									;MinRegister = 0x00
	inc		HourRegister									;increase HourRegister by 1
	cpi		HourRegister,_HOURS_IN_1DAY						;If HourRegister = 24
	breq	DayPassed										;then 1 day passed
	reti
;------------------------------------------------------------------------------------------------------
DayPassed:													;Do when 1 day passed
	ori		TimeFlagRegister,SetDayFlag
	clr		HourRegister
	reti
;------------------------------------------------------------------------------------------------------



⌨️ 快捷键说明

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