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

📄 start.s

📁 利用时间片思想设计的一个AVR单片机的时钟程序
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module Start.c
	.area data(ram, con, rel)
_SysCount::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile G:\Demo/Define.h
	.dbsym e SysCount _SysCount c
_TimeCount::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile G:\Demo/Define.h
	.dbsym e TimeCount _TimeCount c
_ScanKeyFlag::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile G:\Demo/Define.h
	.dbsym e ScanKeyFlag _ScanKeyFlag c
_DispTimeFlag::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile G:\Demo/Define.h
	.dbsym e DispTimeFlag _DispTimeFlag c
_TimeAddFlag::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile G:\Demo/Define.h
	.dbsym e TimeAddFlag _TimeAddFlag c
	.area text(rom, con, rel)
	.dbfile G:\Demo/Define.h
	.dbfile G:\Demo/LCD_1602.h
	.dbfunc e LCD_init _LCD_init fV
	.even
_LCD_init::
	.dbline -1
	.dbline 48
; #include	<iom16v.h>                                                                          
; #include	<macros.h>
; 
; #include	"Define.h"
; #include	"LCD_1602.h"
; #include	"Deal.h"
; 
; 
; #pragma interrupt_handler Timer1:9
; void	Timer1(void)
; {	SysTCNT = SysTime;
; 	ScanKeyFlag = 1;
; 	
; 	SysCount++;
; 	if( SysCount == 50 )
; 	{	DispTimeFlag = 1;	SysCount = 0;	}
; 
; 	TimeCount++;
; 	if( TimeCount == 100 )
; 	{	TimeAddFlag = 1;	TimeCount = 0;	}
; }
; 
; void	main(void)
; {	SysIntial();
; 	//LCD_write_string(0,0,"Welcome");
; 	while(1)
; 	{	
; 		if( ScanKeyFlag == 1 )
; 		{	if( ScanKey() == 1 )
; 			{	DealKey();	}
; 			ScanKeyFlag = 0;	
; 		}
; 		
; 		if( DispTimeFlag == 1 )
; 		{	DispTime();	
; 			DispTimeFlag = 0;	
; 		}
; 		
; 		if( TimeAddFlag == 1 )
; 		{	TimeAdd();	TimeAddFlag = 0;	}
; 	}	
; }
; 
; void	SysIntial(void)
; {	InitalKey();
; 	LCD_init();
; 	
; 	SysTCNT = SysTime;							//计算溢出个数
	.dbline 49
; 	SysTIMSK |= 1 << TOIE1;						//开启系统时钟溢出中断
	sbi 0x1a,1
	.dbline 49
	cbi 0x1b,1
	.dbline 50
; 	SREG |= 0x80;					//enable grobal interrupt
	sbi 0x1a,2
	.dbline 50
	cbi 0x1b,2
	.dbline 51
; 	SysTCCR = SysIspEn;
	sbi 0x1a,3
	.dbline 51
	cbi 0x1b,3
	.dbline 53
; }
; }
	in R24,0x1a
	ori R24,240
	out 0x1a,R24
	.dbline 55
; }
; }
	ldi R16,25
	ldi R17,0
	xcall _delay_nms
	.dbline 57
; }
; }
	clr R18
	clr R19
	ldi R16,40
	ldi R17,0
	xcall _LCD_write_char
	.dbline 58
; }
	clr R18
	clr R19
	ldi R16,12
	ldi R17,0
	xcall _LCD_write_char
	.dbline 59
; }
	clr R18
	clr R19
	ldi R16,1
	ldi R17,0
	xcall _LCD_write_char
	.dbline 60
; }
	clr R18
	clr R19
	ldi R16,6
	ldi R17,0
	xcall _LCD_write_char
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e LCD_en_write _LCD_en_write fV
	.even
_LCD_en_write::
	.dbline -1
	.dbline 64
; }
; }
; }
; }
	.dbline 64
	sbi 0x1b,1
	.dbline 65
; }
	ldi R16,2
	ldi R17,0
	xcall _delay_nus
	.dbline 66
; }
	cbi 0x1b,1
	.dbline -2
L3:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e LCD_write_char _LCD_write_char fc
;      data_temp -> R22,R23
;   command_temp -> R20,R21
;           data -> R12,R13
;        command -> R10,R11
	.even
_LCD_write_char::
	xcall push_gset4
	movw R12,R18
	movw R10,R16
	.dbline -1
	.dbline 80
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 82
; }
; }
	movw R20,R10
	.dbline 83
; }
	movw R22,R12
	.dbline 85
; }
; }
	xcall _LCD_wait_Ready
	cpi R16,1
	brne L5
	.dbline 86
; }
	.dbline 86
	ldi R16,1
	xjmp L4
L5:
	.dbline 88
; }
; }
	cbi 0x1b,2
	.dbline 89
; }
	tst R10
	brne L7
	tst R11
	brne L7
X0:
	.dbline 90
; }
	.dbline 90
	sbi 0x1b,3
	.dbline 91
; }
	nop
	.dbline 92
; }
	in R24,0x1b
	andi R24,15
	out 0x1b,R24
	.dbline 93
; }
	nop
	.dbline 95
; }
; }
	movw R24,R22
	andi R24,240
	andi R25,0
	in R2,0x1b
	clr R3
	or R2,R24
	or R3,R25
	out 0x1b,R2
	.dbline 96
; }
	nop
	.dbline 97
; }
	xjmp L8
L7:
	.dbline 99
; }
; }
	.dbline 99
	cbi 0x1b,3
	.dbline 100
; }
	nop
	.dbline 101
; }
	in R24,0x1b
	andi R24,15
	out 0x1b,R24
	.dbline 102
; }
	nop
	.dbline 104
; }
; }
	movw R24,R20
	andi R24,240
	andi R25,0
	in R2,0x1b
	clr R3
	or R2,R24
	or R3,R25
	out 0x1b,R2
	.dbline 105
; }
	nop
	.dbline 106
; }
L8:
	.dbline 107
; }
	xcall _LCD_en_write
	.dbline 109
; }
; }
	lsl R20
	rol R21
	lsl R20
	rol R21
	lsl R20
	rol R21
	lsl R20
	rol R21
	.dbline 110
; }
	lsl R22
	rol R23
	lsl R22
	rol R23
	lsl R22
	rol R23
	lsl R22
	rol R23
	.dbline 112
; }
; }
	in R24,0x1b
	andi R24,15
	out 0x1b,R24
	.dbline 113
; }
	tst R10
	brne L9
	tst R11
	brne L9
X1:
	.dbline 114
; }
	.dbline 115
; }
	movw R24,R22
	andi R24,240
	andi R25,0
	in R2,0x1b
	clr R3
	or R2,R24
	or R3,R25
	out 0x1b,R2
	.dbline 116
; }
	xjmp L10
L9:
	.dbline 118
; }
; }
	.dbline 119
; }
	movw R24,R20
	andi R24,240
	andi R25,0
	in R2,0x1b
	clr R3
	or R2,R24
	or R3,R25
	out 0x1b,R2
	.dbline 120
; }
L10:
	.dbline 121
; }
	xcall _LCD_en_write
	.dbline 123
; }
; }
	sbi 0x1b,2
	.dbline 124
; }
	nop
	.dbline 125
; }
	ldi R24,8
	in R2,0x1b
	eor R2,R24
	out 0x1b,R2
	.dbline 127
; }
; }
	clr R16
	.dbline -2
L4:
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r data_temp 22 i
	.dbsym r command_temp 20 i
	.dbsym r data 12 i
	.dbsym r command 10 i
	.dbend
	.dbfunc e LCD_wait_Ready _LCD_wait_Ready fc
;           temp -> R16,R17
	.even
_LCD_wait_Ready::
	.dbline -1
	.dbline 131
; }
; }
; }
; }
	.dbline 132
; }
	cbi 0x1a,7
	.dbline 133
; }
	nop
	.dbline 134
; }
	sbi 0x1b,2
	.dbline 135
; }
	nop
	.dbline 136
; }
	cbi 0x1b,3
	.dbline 137
; }
	nop
	.dbline 138
; }
	sbi 0x1b,1
	.dbline 139
; }
	nop
	xjmp L13
L12:
	.dbline 141
; }
; }
	.dbline 141
	subi R16,255  ; offset = 1
	sbci R17,255
	.dbline 142
; }
	ldi R24,1000
	ldi R25,3
	cp R24,R16
	cpc R25,R17
	brsh L15
	.dbline 143
; }
	.dbline 143
	ldi R16,1
	xjmp L11
L15:
	.dbline 144
L13:
	.dbline 140
	sbic 0x19,7
	rjmp L17
	ldi R18,1
	ldi R19,0
	xjmp L18
L17:
	clr R18
	clr R19
L18:
	cpi R18,0
	cpc R18,R19
	breq L12
X2:
	.dbline 145
; }
; }
	nop
	.dbline 146
; }
	cbi 0x1b,1
	.dbline 147
; }
	nop
	.dbline 148
; }
	sbi 0x1a,7
	.dbline 149
; }
	clr R16
	.dbline -2
L11:
	.dbline 0 ; func end
	ret
	.dbsym r temp 16 i
	.dbend
	.dbfunc e LCD_set_xy _LCD_set_xy fV
;        address -> R20
;              y -> R20
;              x -> R22
	.even
_LCD_set_xy::
	xcall push_gset2
	mov R20,R18
	mov R22,R16
	.dbline -1
	.dbline 163
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 164
; }
	tst R20
	brne L20
	.dbline 164
	mov R20,R22
	subi R20,128    ; addi 128
	xjmp L21
L20:
	.dbline 166
; }
; }
	mov R20,R22
	subi R20,64    ; addi 192
L21:
	.dbline 167
; }
	clr R18
	clr R19
	mov R16,R20
	clr R17
	xcall _LCD_write_char
	.dbline -2
L19:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r address 20 c
	.dbsym r y 20 c
	.dbsym r x 22 c
	.dbend
	.dbfunc e LCD_write_string _LCD_write_string fc
;              s -> R20,R21
;              Y -> R10
;              X -> R22
	.even
_LCD_write_string::
	xcall push_gset3
	mov R10,R18
	mov R22,R16
	ldd R20,y+6
	ldd R21,y+7
	.dbline -1
	.dbline 179
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 179
	mov R18,R10
	mov R16,R22
	xcall _LCD_set_xy
	xjmp L24
L23:
	.dbline 181
; }
; }
	.dbline 181
	movw R30,R20
	ldd R18,z+0
	clr R19
	clr R16
	clr R17
	xcall _LCD_write_char
	cpi R16,1
	brne L26
	.dbline 182
; }
	.dbline 182
	ldi R16,1
	xjmp L22
L26:
	.dbline 183
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 184
L24:
	.dbline 180
	movw R30,R20
	ldd R2,z+0
	tst R2
	brne L23
	.dbline 185
; }
; }
; }
	clr R16
	.dbline -2
L22:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r s 20 pc
	.dbsym r Y 10 c
	.dbsym r X 22 c
	.dbend
	.dbfunc e LCD_write_uint8 _LCD_write_uint8 fc
;        tempbuf -> y+0
;              i -> R20
;            num -> R22
;           data -> y+9
;              Y -> R10
;              X -> R20
	.even
_LCD_write_uint8::
	xcall push_gset3
	mov R10,R18
	mov R20,R16
	sbiw R28,3
	ldd R22,y+11
	.dbline -1
	.dbline 189
; }
; }
; }
; }
	.dbline 190
; }
	ldi R18,100
	ldi R19,0
	ldd R16,y+9
	ldd R17,y+10
	xcall div16u
	movw R24,R16
	adiw R24,48
	std y+0,R24
	.dbline 191
; }
	ldi R18,100
	ldi R19,0
	ldd R16,y+9
	ldd R17,y+10
	xcall mod16u
	ldi R18,10
	ldi R19,0
	xcall div16u
	movw R24,R16
	adiw R24,48
	std y+1,R24
	.dbline 192
; }
	ldi R18,10
	ldi R19,0
	ldd R16,y+9
	ldd R17,y+10
	xcall mod16u
	movw R24,R16
	adiw R24,48
	std y+2,R24
	.dbline 193
; }
	mov R18,R10
	mov R16,R20
	xcall _LCD_set_xy
	.dbline 194
; }
	clr R20
	xjmp L34
L31:
	.dbline 195
	.dbline 195
	mov R2,R22
	clr R3
	ldi R30,3
	ldi R31,0
	sub R30,R2
	sbc R31,R3
	mov R2,R20
	clr R3
	add R30,R2
	adc R31,R3
	movw R24,R28
	add R30,R24
	adc R31,R25
	ldd R18,z+0
	clr R19
	clr R16
	clr R17
	xcall _LCD_write_char
	cpi R16,1
	brne L35
	.dbline 195
	.dbline 195
	ldi R16,1
	xjmp L28
L35:
	.dbline 195
L32:
	.dbline 194
	inc R20
L34:
	.dbline 194
	cp R20,R22
	brlo L31
	.dbline 196
; }
; }
	clr R16
	.dbline -2
L28:
	adiw R28,3
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym l tempbuf 0 A[3:3]c
	.dbsym r i 20 c
	.dbsym r num 22 c
	.dbsym l data 9 i
	.dbsym r Y 10 c
	.dbsym r X 20 c
	.dbend
	.dbfunc e delay_1us _delay_1us fV
	.even
_delay_1us::
	.dbline -1
	.dbline 203
; }
; }
; }
; }
; }
; }
; }
	.dbline 203
	nop
	.dbline -2
L37:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e delay_nus _delay_nus fV
;              i -> R20,R21
;              n -> R22,R23
	.even
_delay_nus::
	xcall push_gset2
	movw R22,R16
	.dbline -1
	.dbline 206
; }
; }
; }
	.dbline 206
	clr R20
	clr R21
	.dbline 207
; }
	xjmp L42
L39:
	.dbline 208
	xcall _delay_1us
L40:
	.dbline 207
	subi R20,255  ; offset = 1
	sbci R21,255
L42:
	.dbline 207
	cp R20,R22
	cpc R21,R23
	brlo L39
	.dbline -2
L38:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r n 22 i
	.dbend
	.dbfunc e delay_1ms _delay_1ms fV
;              i -> R16,R17
	.even
_delay_1ms::
	.dbline -1
	.dbline 212
; }
; }
; }
; }
; }
	.dbline 213
	clr R16
	clr R17
	xjmp L47
L44:
	.dbline 213
L45:
	.dbline 213
	subi R16,255  ; offset = 1
	sbci R17,255

⌨️ 快捷键说明

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