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

📄 start.s

📁 利用时间片思想设计的一个AVR单片机的时钟程序
💻 S
📖 第 1 页 / 共 2 页
字号:
L47:
	.dbline 213
; }
	cpi R16,116
	ldi R30,4
	cpc R17,R30
	brlo L44
	.dbline -2
L43:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 i
	.dbend
	.dbfunc e delay_nms _delay_nms fV
;              i -> R20,R21
;              n -> R22,R23
	.even
_delay_nms::
	xcall push_gset2
	movw R22,R16
	.dbline -1
	.dbline 217
; }
; }
; }
; }
	.dbline 217
	clr R20
	clr R21
	.dbline 218
; }
	xjmp L52
L49:
	.dbline 219
	xcall _delay_1ms
L50:
	.dbline 218
	subi R20,255  ; offset = 1
	sbci R21,255
L52:
	.dbline 218
	cp R20,R22
	cpc R21,R23
	brlo L49
	.dbline -2
L48:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r n 22 i
	.dbend
	.area data(ram, con, rel)
	.dbfile G:\Demo/LCD_1602.h
_KeyTask::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile G:\Demo/LCD_1602.h
	.dbfile G:\Demo/Deal.h
	.dbsym e KeyTask _KeyTask c
_Keybuf::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile G:\Demo/Deal.h
	.dbsym e Keybuf _Keybuf c
_Keydata::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile G:\Demo/Deal.h
	.dbsym e Keydata _Keydata c
	.area text(rom, con, rel)
	.dbfile G:\Demo/Deal.h
	.dbfunc e InitalKey _InitalKey fV
	.even
_InitalKey::
	.dbline -1
	.dbline 10
	.dbline 10
	ldi R24,15
	out 0x14,R24
	.dbline 11
	ldi R24,240
	out 0x15,R24
	.dbline -2
L53:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e ScanKey _ScanKey fc
;              i -> R16
;           temp -> R18
	.even
_ScanKey::
	.dbline -1
	.dbline 21
	.dbline 22
	lds R16,_KeyTask
	clr R17
	cpi R16,0
	cpc R16,R17
	breq L58
X3:
	cpi R16,1
	ldi R30,0
	cpc R17,R30
	breq L61
	cpi R16,2
	ldi R30,0
	cpc R17,R30
	breq L62
	cpi R16,3
	ldi R30,0
	cpc R17,R30
	brne X5
	xjmp L71
X5:
	cpi R16,4
	ldi R30,0
	cpc R17,R30
	brne X6
	xjmp L74
X6:
	cpi R16,5
	ldi R30,0
	cpc R17,R30
	brne X7
	xjmp L75
X7:
	xjmp L55
X4:
	.dbline 23
L58:
	.dbline 24
	ldi R24,240
	out 0x15,R24
	.dbline 25
	in R24,0x13
	andi R24,240
	cpi R24,240
	brne X8
	xjmp L56
X8:
	.dbline 26
	.dbline 26
	ldi R24,1
	sts _KeyTask,R24
	.dbline 26
	.dbline 27
	xjmp L56
L61:
	.dbline 29
	ldi R24,2
	sts _KeyTask,R24
	.dbline 30
	xjmp L56
L62:
	.dbline 32
	in R24,0x13
	andi R24,240
	cpi R24,240
	breq L63
	.dbline 33
	.dbline 33
	ldi R18,1
	.dbline 34
	clr R16
	xjmp L68
L65:
	.dbline 35
	.dbline 35
	in R24,0x15
	ori R24,15
	out 0x15,R24
	.dbline 36
	mov R2,R18
	com R2
	in R3,0x15
	and R3,R2
	out 0x15,R3
	.dbline 37
	nop
	.dbline 37
	nop
	.dbline 37
	nop
	.dbline 37
	nop
	.dbline 38
	in R24,0x13
	andi R24,240
	cpi R24,240
	breq L69
	.dbline 39
	.dbline 39
	in R24,0x13
	andi R24,240
	add R24,R18
	sts _Keybuf,R24
	.dbline 40
	ldi R24,3
	sts _KeyTask,R24
	.dbline 40
	ldi R24,240
	out 0x15,R24
	.dbline 40
	ldi R16,1
	xjmp L54
L69:
	.dbline 42
	lsl R18
	.dbline 43
L66:
	.dbline 34
	inc R16
L68:
	.dbline 34
	cpi R16,4
	brlo L65
	.dbline 44
L63:
	.dbline 45
	ldi R24,240
	out 0x15,R24
	.dbline 46
	clr R2
	sts _KeyTask,R2
	.dbline 47
	xjmp L56
L71:
	.dbline 49
	in R24,0x13
	andi R24,240
	cpi R24,240
	brne L56
	.dbline 50
	.dbline 50
	ldi R24,4
	sts _KeyTask,R24
	.dbline 50
	.dbline 51
	xjmp L56
L74:
	.dbline 53
	ldi R24,5
	sts _KeyTask,R24
	.dbline 54
	xjmp L56
L75:
	.dbline 56
	in R24,0x13
	andi R24,240
	cpi R24,240
	brne L76
	.dbline 57
	.dbline 57
	clr R2
	sts _KeyTask,R2
	.dbline 57
	xjmp L56
L76:
	.dbline 59
	.dbline 59
	ldi R24,3
	sts _KeyTask,R24
	.dbline 59
	.dbline 60
L55:
L56:
	.dbline 62
	clr R16
	.dbline -2
L54:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 c
	.dbsym r temp 18 c
	.dbend
	.dbfunc e DealKey _DealKey fV
	.even
_DealKey::
	.dbline -1
	.dbline 66
	.dbline 67
	lds R16,_Keybuf
	clr R17
	cpi R16,113
	ldi R30,0
	cpc R17,R30
	breq L80
	xjmp L79
X9:
	.dbline 68
	.dbline 69
L79:
L80:
	.dbline -2
L78:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e DispTime _DispTime fV
	.even
_DispTime::
	sbiw R28,3
	.dbline -1
	.dbline 74
	.dbline 75
	ldi R24,2
	std y+2,R24
	lds R2,_Time
	clr R3
	std y+1,R3
	std y+0,R2
	clr R18
	clr R16
	xcall _LCD_write_uint8
	.dbline 76
	ldi R24,<L84
	ldi R25,>L84
	std y+1,R25
	std y+0,R24
	clr R18
	ldi R16,2
	xcall _LCD_write_string
	.dbline 77
	ldi R24,2
	std y+2,R24
	lds R2,_Time+1
	clr R3
	std y+1,R3
	std y+0,R2
	clr R18
	ldi R16,3
	xcall _LCD_write_uint8
	.dbline 78
	ldi R24,<L84
	ldi R25,>L84
	std y+1,R25
	std y+0,R24
	clr R18
	ldi R16,5
	xcall _LCD_write_string
	.dbline 79
	ldi R24,2
	std y+2,R24
	lds R2,_Time+2
	clr R3
	std y+1,R3
	std y+0,R2
	clr R18
	ldi R16,6
	xcall _LCD_write_uint8
	.dbline 81
	ldi R24,<L87
	ldi R25,>L87
	std y+1,R25
	std y+0,R24
	clr R18
	ldi R16,8
	xcall _LCD_write_string
	.dbline 82
	ldi R24,2
	std y+2,R24
	lds R2,_Time+3
	clr R3
	std y+1,R3
	std y+0,R2
	clr R18
	ldi R16,9
	xcall _LCD_write_uint8
	.dbline 83
	ldi R24,<L89
	ldi R25,>L89
	std y+1,R25
	std y+0,R24
	clr R18
	ldi R16,11
	xcall _LCD_write_string
	.dbline 84
	ldi R24,2
	std y+2,R24
	lds R2,_Time+4
	clr R3
	std y+1,R3
	std y+0,R2
	clr R18
	ldi R16,12
	xcall _LCD_write_uint8
	.dbline 85
	ldi R24,<L89
	ldi R25,>L89
	std y+1,R25
	std y+0,R24
	clr R18
	ldi R16,14
	xcall _LCD_write_string
	.dbline 86
	ldi R24,2
	std y+2,R24
	lds R2,_Time+5
	clr R3
	std y+1,R3
	std y+0,R2
	clr R18
	ldi R16,15
	xcall _LCD_write_uint8
	.dbline -2
L83:
	adiw R28,3
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e TimeAdd _TimeAdd fV
	.even
_TimeAdd::
	.dbline -1
	.dbline 90
	.dbline 91
	lds R24,_Time+5
	subi R24,255    ; addi 1
	sts _Time+5,R24
	.dbline 92
	cpi R24,60
	breq X10
	xjmp L94
X10:
	.dbline 93
	.dbline 93
	clr R2
	sts _Time+5,R2
	.dbline 93
	lds R24,_Time+4
	subi R24,255    ; addi 1
	sts _Time+4,R24
	.dbline 94
	cpi R24,60
	breq X11
	xjmp L99
X11:
	.dbline 95
	.dbline 95
	sts _Time+4,R2
	.dbline 95
	lds R24,_Time+3
	subi R24,255    ; addi 1
	sts _Time+3,R24
	.dbline 96
	cpi R24,24
	breq X12
	xjmp L104
X12:
	.dbline 97
	.dbline 97
	sts _Time+3,R2
	.dbline 97
	lds R24,_Time+2
	subi R24,255    ; addi 1
	sts _Time+2,R24
	.dbline 99
	lds R24,_Time+1
	cpi R24,2
	breq X13
	xjmp L109
X13:
	.dbline 100
	.dbline 100
	ldi R17,4
	lds R16,_Time
	xcall mod8u
	tst R16
	brne L112
	.dbline 101
	.dbline 101
	lds R24,_Time+2
	cpi R24,29
	breq X14
	xjmp L110
X14:
	.dbline 101
	.dbline 101
	clr R2
	sts _Time+2,R2
	.dbline 101
	lds R24,_Time+1
	subi R24,255    ; addi 1
	sts _Time+1,R24
	.dbline 101
	cpi R24,12
	breq X15
	xjmp L110
X15:
	.dbline 101
	.dbline 101
	sts _Time+1,R2
	.dbline 101
	lds R24,_Time
	subi R24,255    ; addi 1
	sts _Time,R24
	.dbline 101
	.dbline 101
	.dbline 101
	xjmp L110
L112:
	.dbline 103
	.dbline 103
	lds R24,_Time+2
	cpi R24,30
	breq X16
	xjmp L110
X16:
	.dbline 103
	.dbline 103
	clr R2
	sts _Time+2,R2
	.dbline 103
	lds R24,_Time+1
	subi R24,255    ; addi 1
	sts _Time+1,R24
	.dbline 103
	cpi R24,12
	breq X17
	xjmp L110
X17:
	.dbline 103
	.dbline 103
	sts _Time+1,R2
	.dbline 103
	lds R24,_Time
	subi R24,255    ; addi 1
	sts _Time,R24
	.dbline 103
	.dbline 103
	.dbline 103
	.dbline 104
	xjmp L110
L109:
	.dbline 105
	lds R24,_Time+1
	cpi R24,4
	breq L140
	cpi R24,6
	breq L140
	cpi R24,9
	breq L140
	cpi R24,11
	brne L132
L140:
	.dbline 106
	.dbline 106
	lds R24,_Time+2
	cpi R24,31
	brne L133
	.dbline 106
	.dbline 106
	clr R2
	sts _Time+2,R2
	.dbline 106
	lds R24,_Time+1
	subi R24,255    ; addi 1
	sts _Time+1,R24
	.dbline 106
	cpi R24,12
	brne L133
	.dbline 106
	.dbline 106
	sts _Time+1,R2
	.dbline 106
	lds R24,_Time
	subi R24,255    ; addi 1
	sts _Time,R24
	.dbline 106
	.dbline 106
	.dbline 106
	xjmp L133
L132:
	.dbline 108
	.dbline 108
	lds R24,_Time+2
	cpi R24,32
	brne L150
	.dbline 108
	.dbline 108
	clr R2
	sts _Time+2,R2
	.dbline 108
	lds R24,_Time+1
	subi R24,255    ; addi 1
	sts _Time+1,R24
	.dbline 108
	cpi R24,12
	brne L155
	.dbline 108
	.dbline 108
	sts _Time+1,R2
	.dbline 108
	lds R24,_Time
	subi R24,255    ; addi 1
	sts _Time,R24
	.dbline 108
L155:
	.dbline 108
L150:
	.dbline 108
L133:
L110:
	.dbline 110
L104:
	.dbline 111
L99:
	.dbline 112
L94:
	.dbline -2
L92:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 32
	jmp _Timer1
	.area text(rom, con, rel)
	.dbfile G:\Demo/Deal.h
	.dbfile G:\Demo\Start.c
	.dbfunc e Timer1 _Timer1 fV
	.even
_Timer1::
	st -y,R2
	st -y,R24
	st -y,R25
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 11
	.dbline 11
	ldi R24,64911
	ldi R25,253
	out 0x2d,R25
	out 0x2c,R24
	.dbline 12
	ldi R24,1
	sts _ScanKeyFlag,R24
	.dbline 14
	lds R24,_SysCount
	subi R24,255    ; addi 1
	sts _SysCount,R24
	.dbline 15
	cpi R24,50
	brne L160
	.dbline 16
	.dbline 16
	ldi R24,1
	sts _DispTimeFlag,R24
	.dbline 16
	clr R2
	sts _SysCount,R2
	.dbline 16
L160:
	.dbline 18
	lds R24,_TimeCount
	subi R24,255    ; addi 1
	sts _TimeCount,R24
	.dbline 19
	cpi R24,100
	brne L162
	.dbline 20
	.dbline 20
	ldi R24,1
	sts _TimeAddFlag,R24
	.dbline 20
	clr R2
	sts _TimeCount,R2
	.dbline 20
L162:
	.dbline -2
L159:
	ld R2,y+
	out 0x3f,R2
	ld R25,y+
	ld R24,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 24
	.dbline 24
	xcall _SysIntial
	xjmp L166
L165:
	.dbline 27
	.dbline 28
	lds R24,_ScanKeyFlag
	cpi R24,1
	brne L168
	.dbline 29
	.dbline 29
	xcall _ScanKey
	cpi R16,1
	brne L170
	.dbline 30
	.dbline 30
	xcall _DealKey
	.dbline 30
L170:
	.dbline 31
	clr R2
	sts _ScanKeyFlag,R2
	.dbline 32
L168:
	.dbline 34
	lds R24,_DispTimeFlag
	cpi R24,1
	brne L172
	.dbline 35
	.dbline 35
	xcall _DispTime
	.dbline 36
	clr R2
	sts _DispTimeFlag,R2
	.dbline 37
L172:
	.dbline 39
	lds R24,_TimeAddFlag
	cpi R24,1
	brne L174
	.dbline 40
	.dbline 40
	xcall _TimeAdd
	.dbline 40
	clr R2
	sts _TimeAddFlag,R2
	.dbline 40
L174:
	.dbline 41
L166:
	.dbline 26
	xjmp L165
X18:
	.dbline -2
L164:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e SysIntial _SysIntial fV
	.even
_SysIntial::
	.dbline -1
	.dbline 45
	.dbline 45
	xcall _InitalKey
	.dbline 46
	xcall _LCD_init
	.dbline 48
	ldi R24,64911
	ldi R25,253
	out 0x2d,R25
	out 0x2c,R24
	.dbline 49
	in R24,0x39
	ori R24,4
	out 0x39,R24
	.dbline 50
	bset 7
	.dbline 51
	ldi R24,4
	out 0x2e,R24
	.dbline -2
L176:
	.dbline 0 ; func end
	ret
	.dbend
	.area bss(ram, con, rel)
	.dbfile G:\Demo\Start.c
_Time::
	.blkb 6
	.dbfile G:\Demo/Define.h
	.dbstruct 0 6 .1
	.dbfield 0 year c
	.dbfield 1 month c
	.dbfield 2 day c
	.dbfield 3 hour c
	.dbfield 4 minute c
	.dbfield 5 second c
	.dbend
	.dbsym e Time _Time S[.1]
	.area data(ram, con, rel)
	.dbfile G:\Demo/Define.h
L89:
	.blkb 2
	.area idata
	.byte 58,0
	.area data(ram, con, rel)
	.dbfile G:\Demo/Define.h
L87:
	.blkb 2
	.area idata
	.byte 32,0
	.area data(ram, con, rel)
	.dbfile G:\Demo/Define.h
L84:
	.blkb 2
	.area idata
	.byte 45,0
	.area data(ram, con, rel)
	.dbfile G:\Demo/Define.h

⌨️ 快捷键说明

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