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

📄 common.s

📁 AVR系列单片机ATMEGA64开发的LED显示屏程序 内容包括ATMEGA64大部分资源的初始化程序
💻 S
字号:
	.module common.c
	.area text(rom, con, rel)
	.dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\common.c
	.dbfunc e waitms _waitms fV
;       longloop -> y+0
;       calc_adj -> R10,R11
;      shortloop -> R12,R13
;   milliseconds -> y+12
	.even
_waitms::
	xcall push_arg4
	xcall push_gset4
	sbiw R28,4
	.dbline -1
	.dbline 13
; 
; #include <include.h>
; 
; 
; 
; 
; /***********************************************************************
; Delay routine
; NB! Remember to set CPU_CLOCK in MHz before using this delay function.
; ***********************************************************************/
; 
; void waitms(long milliseconds)
; {
	.dbline 16
;   long longloop;
;   int shortloop;
;   int calc_adj = F_CPU <<6;
	ldi R20,0
	ldi R21,0
	ldi R22,64
	ldi R23,56
	movw R10,R20
	.dbline 17
;   for (longloop=0; longloop<milliseconds; longloop++)
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	std z+0,R20
	std z+1,R21
	std z+2,R22
	std z+3,R23
	xjmp L6
L3:
	.dbline 18
;   {
	.dbline 19
	clr R12
	clr R13
	xjmp L10
L7:
	.dbline 19
	nop
L8:
	.dbline 19
	movw R24,R12
	adiw R24,1
	movw R12,R24
L10:
	.dbline 19
	cp R12,R10
	cpc R13,R11
	brlt L7
	.dbline 20
L4:
	.dbline 17
	ldi R20,1
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
L6:
	.dbline 17
	movw R30,R28
	ldd R2,z+12
	ldd R3,z+13
	ldd R4,z+14
	ldd R5,z+15
	movw R30,R28
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	cp R6,R2
	cpc R7,R3
	cpc R8,R4
	cpc R9,R5
	brge X0
	xjmp L3
X0:
	.dbline -2
L2:
	adiw R28,4
	xcall pop_gset4
	adiw R28,4
	.dbline 0 ; func end
	ret
	.dbsym l longloop 0 L
	.dbsym r calc_adj 10 I
	.dbsym r shortloop 12 I
	.dbsym l milliseconds 12 L
	.dbend
	.dbfunc e waitus _waitus fV
;       longloop -> y+0
;       calc_adj -> R10,R11
;      shortloop -> R12,R13
;   microseconds -> y+12
	.even
_waitus::
	xcall push_arg4
	xcall push_gset4
	sbiw R28,4
	.dbline -1
	.dbline 24
;     for (shortloop=0; shortloop<calc_adj; shortloop++) NOP();
;   }
; }
; 
; void waitus(long microseconds)
; {
	.dbline 27
;   long longloop;
;   int shortloop;
;   int calc_adj = F_CPU >> 5;
	ldi R20,0
	ldi R21,8
	ldi R22,7
	ldi R23,0
	movw R10,R20
	.dbline 28
;   for (longloop=0; longloop<microseconds; longloop++)
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	std z+0,R20
	std z+1,R21
	std z+2,R22
	std z+3,R23
	xjmp L15
L12:
	.dbline 29
;   {
	.dbline 30
	clr R12
	clr R13
	xjmp L19
L16:
	.dbline 30
	nop
L17:
	.dbline 30
	movw R24,R12
	adiw R24,1
	movw R12,R24
L19:
	.dbline 30
	cp R12,R10
	cpc R13,R11
	brlt L16
	.dbline 31
L13:
	.dbline 28
	ldi R20,1
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
L15:
	.dbline 28
	movw R30,R28
	ldd R2,z+12
	ldd R3,z+13
	ldd R4,z+14
	ldd R5,z+15
	movw R30,R28
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	cp R6,R2
	cpc R7,R3
	cpc R8,R4
	cpc R9,R5
	brge X1
	xjmp L12
X1:
	.dbline -2
L11:
	adiw R28,4
	xcall pop_gset4
	adiw R28,4
	.dbline 0 ; func end
	ret
	.dbsym l longloop 0 L
	.dbsym r calc_adj 10 I
	.dbsym r shortloop 12 I
	.dbsym l microseconds 12 L
	.dbend

⌨️ 快捷键说明

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