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

📄 main.s

📁 已经上传的YF-320240-3.5寸彩屏(可由单片机控制)的测试程序。主CPU为MEGA128
💻 S
📖 第 1 页 / 共 4 页
字号:
	.dbend
	.dbfunc e Start_Time _Start_Time fV
	.even
_Start_Time::
	sbiw R28,7
	.dbline -1
	.dbline 345
; 		}
; 	}
; 	
; }
; void Start_Time(void)
; {
	.dbline 346
;     Clear_Display(0x97);
	ldi R16,151
	xcall _Clear_Display
	.dbline 347
; 	Display(100,55,"      年      月      日",SMALL,BLACK,0x97);
	ldi R24,151
	std y+6,R24
	clr R2
	std y+4,R2
	std y+2,R2
	ldi R24,<L26
	ldi R25,>L26
	std y+1,R25
	std y+0,R24
	ldi R18,55
	ldi R16,100
	ldi R17,0
	xcall _Display
	.dbline 348
;     Display(100,105,"      时      分      秒",SMALL,BLACK,0x97);
	ldi R24,151
	std y+6,R24
	clr R2
	std y+4,R2
	std y+2,R2
	ldi R24,<L27
	ldi R25,>L27
	std y+1,R25
	std y+0,R24
	ldi R18,105
	ldi R16,100
	ldi R17,0
	xcall _Display
	.dbline 349
; 	Dis_Menu(TimeSet,TimeSet_size);
	ldi R18,8
	ldi R16,<_TimeSet
	ldi R17,>_TimeSet
	xcall _Dis_Menu
	.dbline -2
L25:
	adiw R28,7
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e DisSetTime _DisSetTime fV
;           back -> R10
;          front -> R22
;           temp -> R12
;            ptr -> R20,R21
	.even
_DisSetTime::
	xcall push_gset4
	mov R12,R18
	movw R20,R16
	sbiw R28,6
	ldd R22,y+14
	ldd R10,y+16
	.dbline -1
	.dbline 352
; }
; void DisSetTime(unsigned char *ptr,unsigned char temp,unsigned char front,unsigned char back)
; {
	.dbline 353
;      if(temp >0)
	clr R2
	cp R2,R12
	brlo X0
	xjmp L29
X0:
	.dbline 354
; 	 {
	.dbline 355
; 	      ReadTime();
	xcall _ReadTime
	.dbline 357
; 	 //year
; 	 	  ptr[0] = (time.year_H>>4) +0x30;
	lds R24,_time+6
	swap R24
	andi R24,#0x0F
	subi R24,208    ; addi 48
	movw R30,R20
	std z+0,R24
	.dbline 358
; 	 	  ptr[1] = (time.year_H&0x0f)+0x30;
	lds R24,_time+6
	andi R24,15
	subi R24,208    ; addi 48
	std z+1,R24
	.dbline 359
; 	 	  ptr[2] = (time.year_L>>4) +0x30;
	lds R24,_time+5
	swap R24
	andi R24,#0x0F
	subi R24,208    ; addi 48
	movw R30,R20
	std z+2,R24
	.dbline 360
; 	 	  ptr[3] = (time.year_L&0x0f)+0x30;
	lds R24,_time+5
	andi R24,15
	subi R24,208    ; addi 48
	movw R30,R20
	std z+3,R24
	.dbline 361
; 	 	  ptr[4] = (time.month>>4) + 0x30;
	lds R24,_time+4
	swap R24
	andi R24,#0x0F
	subi R24,208    ; addi 48
	movw R30,R20
	std z+4,R24
	.dbline 362
; 	 	  ptr[5] = (time.month & 0x0f) + 0x30;
	lds R24,_time+4
	andi R24,15
	subi R24,208    ; addi 48
	movw R30,R20
	std z+5,R24
	.dbline 363
; 	 	  ptr[6] = (time.day>>4) + 0x30;
	lds R24,_time+3
	swap R24
	andi R24,#0x0F
	subi R24,208    ; addi 48
	movw R30,R20
	std z+6,R24
	.dbline 364
; 	 	  ptr[7] = (time.day & 0x0f) + 0x30;
	lds R24,_time+3
	andi R24,15
	subi R24,208    ; addi 48
	movw R30,R20
	std z+7,R24
	.dbline 365
; 	 	  ptr[8] = (time.hour>>4) + 0x30;
	lds R24,_time+2
	swap R24
	andi R24,#0x0F
	subi R24,208    ; addi 48
	movw R30,R20
	std z+8,R24
	.dbline 366
; 	 	  ptr[9] = (time.hour & 0x0f) + 0x30;
	lds R24,_time+2
	andi R24,15
	subi R24,208    ; addi 48
	movw R30,R20
	std z+9,R24
	.dbline 367
; 	 	  ptr[10] = (time.minute>>4) + 0x30;
	lds R24,_time+1
	swap R24
	andi R24,#0x0F
	subi R24,208    ; addi 48
	movw R30,R20
	std z+10,R24
	.dbline 368
; 	 	  ptr[11] = (time.minute & 0x0f) + 0x30;
	lds R24,_time+1
	andi R24,15
	subi R24,208    ; addi 48
	movw R30,R20
	std z+11,R24
	.dbline 369
; 	 	  ptr[12] = (time.second>>4) + 0x30;
	lds R24,_time
	swap R24
	andi R24,#0x0F
	subi R24,208    ; addi 48
	movw R30,R20
	std z+12,R24
	.dbline 370
; 	 	  ptr[13] = (time.second & 0x0f) + 0x30;
	lds R24,_time
	andi R24,15
	subi R24,208    ; addi 48
	movw R30,R20
	std z+13,R24
	.dbline 371
; 	 }
L29:
	.dbline 372
; 	 Dis_Ascii(TimeSet[0].x+5,TimeSet[0].y+5,ptr[0],front,back);
	mov R2,R10
	clr R3
	std y+5,R3
	std y+4,R2
	std y+2,R22
	movw R30,R20
	ldd R2,z+0
	std y+0,R2
	ldi R30,<_TimeSet+2
	ldi R31,>_TimeSet+2
	elpm R18,Z
	subi R18,251    ; addi 5
	ldi R30,<_TimeSet
	ldi R31,>_TimeSet
	elpm R16,Z+
	elpm R17,Z
	subi R16,251  ; offset = 5
	sbci R17,255
	xcall _Dis_Ascii
	.dbline 373
; 	 Dis_Ascii(TimeSet[0].x+13,TimeSet[0].y+5,ptr[1],front,back);
	mov R2,R10
	clr R3
	std y+5,R3
	std y+4,R2
	std y+2,R22
	movw R30,R20
	ldd R2,z+1
	std y+0,R2
	ldi R30,<_TimeSet+2
	ldi R31,>_TimeSet+2
	elpm R18,Z
	subi R18,251    ; addi 5
	ldi R30,<_TimeSet
	ldi R31,>_TimeSet
	elpm R16,Z+
	elpm R17,Z
	subi R16,243  ; offset = 13
	sbci R17,255
	xcall _Dis_Ascii
	.dbline 374
; 	 Dis_Ascii(TimeSet[0].x+21,TimeSet[0].y+5,ptr[2],front,back);
	mov R2,R10
	clr R3
	std y+5,R3
	std y+4,R2
	std y+2,R22
	movw R30,R20
	ldd R2,z+2
	std y+0,R2
	ldi R30,<_TimeSet+2
	ldi R31,>_TimeSet+2
	elpm R18,Z
	subi R18,251    ; addi 5
	ldi R30,<_TimeSet
	ldi R31,>_TimeSet
	elpm R16,Z+
	elpm R17,Z
	subi R16,235  ; offset = 21
	sbci R17,255
	xcall _Dis_Ascii
	.dbline 375
; 	 Dis_Ascii(TimeSet[0].x+29,TimeSet[0].y+5,ptr[3],front,back); 
	mov R2,R10
	clr R3
	std y+5,R3
	std y+4,R2
	std y+2,R22
	movw R30,R20
	ldd R2,z+3
	std y+0,R2
	ldi R30,<_TimeSet+2
	ldi R31,>_TimeSet+2
	elpm R18,Z
	subi R18,251    ; addi 5
	ldi R30,<_TimeSet
	ldi R31,>_TimeSet
	elpm R16,Z+
	elpm R17,Z
	subi R16,227  ; offset = 29
	sbci R17,255
	xcall _Dis_Ascii
	.dbline 377
; 	 //month
; 	 Dis_Ascii(TimeSet[1].x+17,TimeSet[1].y+5,ptr[4],front,back);
	mov R2,R10
	clr R3
	std y+5,R3
	std y+4,R2
	std y+2,R22
	movw R30,R20
	ldd R2,z+4
	std y+0,R2
	ldi R30,<_TimeSet+17+2
	ldi R31,>_TimeSet+17+2
	elpm R18,Z
	subi R18,251    ; addi 5
	ldi R30,<_TimeSet+17
	ldi R31,>_TimeSet+17
	elpm R16,Z+
	elpm R17,Z
	subi R16,239  ; offset = 17
	sbci R17,255
	xcall _Dis_Ascii
	.dbline 378
; 	 Dis_Ascii(TimeSet[1].x+25,TimeSet[1].y+5,ptr[5],front,back);
	mov R2,R10
	clr R3
	std y+5,R3
	std y+4,R2
	std y+2,R22
	movw R30,R20
	ldd R2,z+5
	std y+0,R2
	ldi R30,<_TimeSet+17+2
	ldi R31,>_TimeSet+17+2
	elpm R18,Z
	subi R18,251    ; addi 5
	ldi R30,<_TimeSet+17
	ldi R31,>_TimeSet+17
	elpm R16,Z+
	elpm R17,Z
	subi R16,231  ; offset = 25
	sbci R17,255
	xcall _Dis_Ascii
	.dbline 380
; 	 //day
; 	 Dis_Ascii(TimeSet[2].x+17,TimeSet[2].y+5,ptr[6],front,back);
	mov R2,R10
	clr R3
	std y+5,R3
	std y+4,R2
	std y+2,R22
	movw R30,R20
	ldd R2,z+6
	std y+0,R2
	ldi R30,<_TimeSet+34+2
	ldi R31,>_TimeSet+34+2
	elpm R18,Z
	subi R18,251    ; addi 5
	ldi R30,<_TimeSet+34
	ldi R31,>_TimeSet+34
	elpm R16,Z+
	elpm R17,Z
	subi R16,239  ; offset = 17
	sbci R17,255
	xcall _Dis_Ascii
	.dbline 381
; 	 Dis_Ascii(TimeSet[2].x+25,TimeSet[2].y+5,ptr[7],front,back);
	mov R2,R10
	clr R3
	std y+5,R3
	std y+4,R2
	std y+2,R22
	movw R30,R20
	ldd R2,z+7
	std y+0,R2
	ldi R30,<_TimeSet+34+2
	ldi R31,>_TimeSet+34+2
	elpm R18,Z
	subi R18,251    ; addi 5
	ldi R30,<_TimeSet+34
	ldi R31,>_TimeSet+34
	elpm R16,Z+
	elpm R17,Z
	subi R16,231  ; offset = 25
	sbci R17,255
	xcall _Dis_Ascii
	.dbline 383
; 	 //hour
; 	 Dis_Ascii(TimeSet[3].x+17,TimeSet[3].y+5,ptr[8],front,back);
	mov R2,R10
	clr R3
	std y+5,R3
	std y+4,R2
	std y+2,R22
	movw R30,R20
	ldd R2,z+8
	std y+0,R2
	ldi R30,<_TimeSet+51+2
	ldi R31,>_TimeSet+51+2
	elpm R18,Z
	subi R18,251    ; addi 5
	ldi R30,<_TimeSet+51
	ldi R31,>_TimeSet+51
	elpm R16,Z+
	elpm R17,Z
	subi R16,239  ; offset = 17
	sbci R17,255
	xcall _Dis_Ascii
	.dbline 384
; 	 Dis_Ascii(TimeSet[3].x+25,TimeSet[3].y+5,ptr[9],front,back);
	mov R2,R10
	clr R3
	std y+5,R3
	std y+4,R2
	std y+2,R22
	movw R30,R20
	ldd R2,z+9
	std y+0,R2
	ldi R30,<_TimeSet+51+2
	ldi R31,>_TimeSet+51+2
	elpm R18,Z
	subi R18,251    ; addi 5
	ldi R30,<_TimeSet+51
	ldi R31,>_TimeSet+51
	elpm R16,Z+
	elpm R17,Z
	subi R16,231  ; offset = 25
	sbci R17,255
	xcall _Dis_Ascii
	.dbline 386
; 	 //minute
; 	 Dis_Ascii(TimeSet[4].x+17,TimeSet[4].y+5,ptr[10],front,back); 
	mov R2,R10
	clr R3
	std y+5,R3
	std y+4,R2
	std y+2,R22
	movw R30,R20
	ldd R2,z+10
	std y+0,R2
	ldi R30,<_TimeSet+68+2
	ldi R31,>_TimeSet+68+2
	elpm R18,Z
	subi R18,251    ; addi 5
	ldi R30,<_TimeSet+68
	ldi R31,>_TimeSet+68
	elpm R16,Z+
	elpm R17,Z
	subi R16,239  ; offset = 17
	sbci R17,255
	xcall _Dis_Ascii
	.dbline 387
; 	 Dis_Ascii(TimeSet[4].x+25,TimeSet[4].y+5,ptr[11],front,back);
	mov R2,R10
	clr R3
	std y+5,R3
	std y+4,R2
	std y+2,R22
	movw R30,R20
	ldd R2,z+11
	std y+0,R2
	ldi R30,<_TimeSet+68+2
	ldi R31,>_TimeSet+68+2
	elpm R18,Z
	subi R18,251    ; addi 5
	ldi R30,<_TimeSet+68
	ldi R31,>_TimeSet+68
	elpm R16,Z+
	elpm R17,Z
	subi R16,231  ; offset = 25
	sbci R17,255
	xcall _Dis_Ascii
	.dbline 389
; 	 //second
; 	 Dis_Ascii(TimeSet[5].x+17,TimeSet[5].y+5,ptr[12],front,back);
	mov R2,R10
	clr R3
	std y+5,R3
	std y+4,R2
	std y+2,R22
	movw R30,R20
	ldd R2,z+12
	std y+0,R2
	ldi R30,<_TimeSet+85+2
	ldi R31,>_TimeSet+85+2
	elpm R18,Z
	subi R18,251    ; addi 5
	ldi R30,<_TimeSet+85
	ldi R31,>_TimeSet+85
	elpm R16,Z+
	elpm R17,Z
	subi R16,239  ; offset = 17
	sbci R17,255
	xcall _Dis_Ascii
	.dbline 390
; 	 Dis_Ascii(TimeSet[5].x+25,TimeSet[5].y+5,ptr[13],front,back);
	mov R2,R10
	clr R3
	std y+5,R3
	std y+4,R2
	std y+2,R22
	movw R30,R20
	ldd R2,z+13
	std y+0,R2
	ldi R30,<_TimeSet+85+2
	ldi R31,>_TimeSet+85+2
	elpm R18,Z
	subi R18,251    ; addi 5
	ldi R30,<_TimeSet+85
	ldi R31,>_TimeSet+85
	elpm R16,Z+
	elpm R17,Z
	subi R16,231  ; offset = 25
	sbci R17,255
	xcall _Dis_Ascii
	.dbline -2
L28:
	adiw R28,6
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r back 10 c
	.dbsym r front 22 c
	.dbsym r temp 12 c
	.dbsym r ptr 20 pc
	.dbend
	.dbfunc e Main_Display _Main_Display fV
	.even
_Main_Display::
	sbiw R28,7
	.dbline -1
	.dbline 394
; 	 //return (ptr);
; }
; void Main_Display(void)
; {
	.dbline 395
;     Clear_Display(WHITE);
	ldi R16,255
	xcall _Clear_Display
	.dbline 396
; 	Dis_Menu(Start,Start_size);
	ldi R18,7
	ldi R16,<_Start
	ldi R17,>_Start
	xcall _Dis_Menu
	.dbline 397
; 	Display(1,130,"X=",BIG,BLACK,WHITE);
	ldi R24,255
	std y+6,R24
	clr R2
	std y+4,R2
	ldi R24,1
	std y+2,R24
	ldi R24,<L78
	ldi R25,>L78
	std y+1,R25
	std y+0,R24
	ldi R18,130
	ldi R16,1
	ldi R17,0
	xcall _Display
	.dbline 398
; 	Display(1,160,"Y=",BIG,BLACK,WHITE);
	ldi R24,255
	std y+6,R24
	clr R2
	std y+4,R2
	ldi R24,1
	std y+2,R24
	ldi R24,<L79
	ldi R25,>L79
	std y+1,R25
	std y+0,R24
	ldi R18,160
	ldi R16,1
	ldi R17,0
	xcall _Display
	.dbline -2
L77:
	adiw R28,7
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e ChangeLight _ChangeLight fV
;            val -> R16,R17
	.even
_ChangeLight::
	.dbline -1
	.dbline 405
; 	//Dis_Batter(300,210,0,1,BLUE,WHITE);
; 	//Dis_Image(Start[0].x,Start[0].y+8,gImage_menu,1,Start[0].color);
; 	
; }
; 
; void ChangeLight(unsigned int val)
; {
	.dbline 406
;     CMD = LCD_MODE_3;
	ldi R24,6
	sts 32770,R24
	.dbline 407
; 	DAT = val;
	sts 32771,R16
	.dbline 408
; 	CMD = LCD_MODE_0;
	clr R2
	sts 32770,R2
	.dbline -2
L80:
	.dbline 0 ; func end
	ret
	.dbsym r val 16 i
	.dbend
	.dbfunc e PowerOff _PowerOff fV
	.even
_PowerOff::
	.dbline -1
	.dbline 411
; }
; void PowerOff(void)
; {
	.dbline 412
;     CMD = LCD_POWER_OFF;
	ldi R24,32
	sts 32770,R24
	.dbline -2
L81:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e PowerOn _PowerOn fV
	.even
_PowerOn::
	.dbline -1
	.dbline 415
; }
; void PowerOn(void)
; {
	.dbline 416
;     CMD = LCD_POWER_ON;
	clr R2
	sts 32770,R2
	.dbline -2
L82:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
;      list_time -> <dead>
;      BackLight -> R20
;       Back_Val -> R22,R23
;              i -> R10,R11
	.even
_main::
	sbiw R28,63
	sbiw R28,63
	sbiw R28,63
	sbiw R28,22  ; offset = 211
	.dbline -1
	.dbline 419
; }
; void main(void)
; {
	.dbline 422
; 	unsigned int i;
; 	unsigned int list_time;
; 	unsigned char BackLight=0;
	clr R20
	.dbline 423
; 	unsigned int Back_Val=0;
	clr R22
	clr R23
	.dbline 424
; 	DDRF |= 0x08;
	lds R24,97
	ori R24,8
	sts 97,R24
	.dbline 425
; 	PORTF |= 0x08;	
	lds R24,98
	ori R24,8
	sts 98,R24
	.dbline 426
; 	Init_interrupt();
	xcall _Init_interrupt
	.dbline 427
; 	Main_Display();
	xcall _Main_Display
	.dbline 428
; 	ReadTime();//time是结构体,给time赋值
	xcall _ReadTime
	.dbline 429
; 	Init_Touch();
	xcall _Init_Touch
	xjmp L85
L84:
	.dbline 431
; 	while(1)
; 	{
	.dbline 433
; 		//触摸屏处理程序
; 	    if(cursor.flag == 1)
	lds R24,_cursor+6
	cpi R24,1
	breq X4
	xjmp L87
X4:
	.dbline 434
; 		{    
	.dbline 435
; 			Dis_Int(25,135,cursor.x,0,RED,WHITE);
	ldi R24,255
	std y+6,R24
	ldi R24,224
	std y+4,R24
	clr R2
	std y+2,R2
	lds R2,_cursor
	lds R3,_cursor+1
	std y+1,R3
	std y+0,R2
	ldi R18,135
	ldi R16,25
	ldi R17,0
	xcall _Dis_Int
	.dbline 436
; 			Dis_Int(25,165,cursor.y,0,RED,WHITE);
	ldi R24,255
	std y+6,R24
	ldi R24,224
	std y+4,R24
	clr R2
	std y+2,R2
	lds R2,_cursor+2
	clr R3
	std y+1,R3
	std y+0,R2
	ldi R18,165
	ldi R16,25
	ldi R17,0
	xcall _Dis_Int
	.dbline 438
; 			
; 			 if(GetCursor(Start[1]))//显示时间
	ldi R24,<_Start+17
	ldi R25,>_Start+17
	movw R30,R28
	adiw R30,7
	ldi R16,17
	ldi R17,0
	st -y,R31
	st -y,R30
	st -y,R25
	st -y,R24
	xcall asgncblk
	movw R16,R28
	subi R16,249  ; offset = 7
	sbci R17,255
	xcall _GetCursor
	tst R16
	breq L91
	.dbline 439
; 			{
	.dbline 440
; 			    if(Time_flag == 0)
	lds R2,_Time_flag
	tst R2
	brne L94
	.dbline 441
; 				{

⌨️ 快捷键说明

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