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

📄 lcd.s

📁 AVR单片机C语言程序设计实例精粹
💻 S
📖 第 1 页 / 共 5 页
字号:
	.word 95
	.word _eChar_5F
	.word 96
	.word _eChar_60
	.word 97
	.word _eChar_61
	.word 98
	.word _eChar_62
	.word 99
	.word _eChar_63
	.word 100
	.word _eChar_64
	.word 101
	.word _eChar_65
	.word 102
	.word _eChar_66
	.word 103
	.word _eChar_67
	.word 104
	.word _eChar_68
	.word 105
	.word _eChar_69
	.word 106
	.word _eChar_6A
	.word 107
	.word _eChar_6B
	.word 108
	.word _eChar_6C
	.word 109
	.word _eChar_6D
	.word 110
	.word _eChar_6E
	.word 111
	.word _eChar_6F
	.word 112
	.word _eChar_70
	.word 113
	.word _eChar_71
	.word 114
	.word _eChar_72
	.word 115
	.word _eChar_73
	.word 116
	.word _eChar_74
	.word 117
	.word _eChar_75
	.word 118
	.word _eChar_76
	.word 119
	.word _eChar_77
	.word 120
	.word _eChar_78
	.word 121
	.word _eChar_79
	.word 122
	.word _eChar_7A
	.word 221
	.word _eChar_DD
	.word 45236
	.word _cChar_B0B4
	.word 45794
	.word _cChar_B2E2
	.word 46069
	.word _cChar_B3F5
	.word 46333
	.word _cChar_B4FD
	.word 46536
	.word _cChar_B5C8
	.word 47076
	.word _cChar_B7E4
	.word 48047
	.word _cChar_BBAF
	.word 48332
	.word _cChar_BCCC
	.word 48380
	.word _cChar_BCFC
	.word 50169
	.word _cChar_C3F9
	.word 50935
	.word _cChar_C6F7
	.word 51179
	.word _cChar_C7EB
	.word 51406
	.word _cChar_C8CE
	.word 51900
	.word _cChar_CABC
	.word 51924
	.word _cChar_CAD4
	.word 52958
	.word _cChar_CEDE
	.word 53415
	.word _cChar_D0A7
	.word 53496
	.word _cChar_D0F8
	.word 53986
	.word _cChar_D2E2
	.word 54992
	.word _cChar_D6D0
	.word 65535
	.word 0
	.dbsym e DataBaseIndexList _DataBaseIndexList A[456:114]kX
_Frame0::
	.byte 0
	.byte 0
	.word L73
	.byte 0
	.byte 1
	.word L74
	.byte 0
	.byte 2
	.word L75
	.byte 0
	.byte 3
	.word L75
	.dbsym e Frame0 _Frame0 A[16:4]kX
_Frame1::
	.byte 0
	.byte 0
	.word L73
	.byte 0
	.byte 1
	.word L76
	.byte 0
	.byte 2
	.word L77
	.byte 0
	.byte 3
	.word L75
	.dbsym e Frame1 _Frame1 A[16:4]kX
_Frame2::
	.byte 0
	.byte 0
	.word L73
	.byte 0
	.byte 1
	.word L78
	.byte 0
	.byte 2
	.word L79
	.byte 0
	.byte 3
	.word L75
	.dbsym e Frame2 _Frame2 A[16:4]kX
_Frame3::
	.byte 0
	.byte 0
	.word L73
	.byte 0
	.byte 1
	.word L76
	.byte 0
	.byte 2
	.word L80
	.byte 0
	.byte 3
	.word L81
	.dbsym e Frame3 _Frame3 A[16:4]kX
_Frame4::
	.byte 0
	.byte 0
	.word L73
	.byte 0
	.byte 1
	.word L77
	.byte 0
	.byte 2
	.word L80
	.byte 0
	.byte 3
	.word L81
	.dbsym e Frame4 _Frame4 A[16:4]kX
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\LCD菜单系统设计\LCD.c
L83:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\LCD菜单系统设计\LCD.c
	.area text(rom, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\LCD菜单系统设计\LCD.c
	.dbfunc e LCD_Window0_Process _LCD_Window0_Process fV
	.dbsym s bCount L83 c
	.even
_LCD_Window0_Process::
	sbiw R28,2
	.dbline -1
	.dbline 588
; 
; //data type definition
; struct DataBaseIndex
; {
; 	INT16U Code;
;     const INT8U  *Ptr;
; };
; 
; //mask list
; const struct DataBaseIndex DataBaseIndexList[] = 
; {
; 	0x10,eChar_10,
; 	' ',eChar_20,
; 	'!',eChar_21,
; 	'"',eChar_22,
; 	'#',eChar_23,
; 	'$',eChar_24,
; 	'%',eChar_25,
; 	'&',eChar_26,
; 	0x27,eChar_27,
; 	'(',eChar_28,
; 	')',eChar_29,
; 	'*',eChar_2A,
; 	'+',eChar_2B,
; 	',',eChar_2C,
; 	'-',eChar_2D,
; 	'.',eChar_2E,
; 	'/',eChar_2F,
; 	
; 	'0',eChar_30,
; 	'1',eChar_31,
; 	'2',eChar_32,
; 	'3',eChar_33,
; 	'4',eChar_34,
; 	'5',eChar_35,
; 	'6',eChar_36,
; 	'7',eChar_37,
; 	'8',eChar_38,
; 	'9',eChar_39,
; 	
; 	':',eChar_3A,
; 	';',eChar_3B,
; 	'<',eChar_3C,
; 	'=',eChar_3D,
; 	'>',eChar_3E,
; 	'?',eChar_3F,
; 	'@',eChar_40,
; 	
; 	'A',eChar_41,
; 	'B',eChar_42,
; 	'C',eChar_43,
; 	'D',eChar_44,
; 	'E',eChar_45,
; 	'F',eChar_46,
; 	'G',eChar_47,
; 	'H',eChar_48,
; 	'I',eChar_49,
; 	'J',eChar_4A,
; 	'K',eChar_4B,
; 	'L',eChar_4C,
; 	'M',eChar_4D,
; 	'N',eChar_4E,
; 	'O',eChar_4F,
; 	'P',eChar_50,
; 	'Q',eChar_51,
; 	'R',eChar_52,
; 	'S',eChar_53,
; 	'T',eChar_54,
; 	'U',eChar_55,
; 	'V',eChar_56,
; 	'W',eChar_57,
; 	'X',eChar_58,
; 	'Y',eChar_59,
; 	'Z',eChar_5A,
; 	
; 	'[',eChar_5B,
; 	0x5C,eChar_5C,
; 	']',eChar_5D,
; 	'^',eChar_5E,
; 	'_',eChar_5F,
; 	0x60,eChar_60,
; 	
; 	'a',eChar_61,
; 	'b',eChar_62,
; 	'c',eChar_63,
; 	'd',eChar_64,
; 	'e',eChar_65,
; 	'f',eChar_66,
; 	'g',eChar_67,
; 	'h',eChar_68,
; 	'i',eChar_69,
; 	'j',eChar_6A,
; 	'k',eChar_6B,
; 	'l',eChar_6C,
; 	'm',eChar_6D,
; 	'n',eChar_6E,
; 	'o',eChar_6F,
; 	'p',eChar_70,
; 	'q',eChar_71,
; 	'r',eChar_72,
; 	's',eChar_73,
; 	't',eChar_74,
; 	'u',eChar_75,
; 	'v',eChar_76,
; 	'w',eChar_77,
; 	'x',eChar_78,
; 	'y',eChar_79,
; 	'z',eChar_7A,
; 	0xDD,eChar_DD,
; 	0xB0B4,cChar_B0B4,
; 	0xB2E2,cChar_B2E2,
; 	0xB3F5,cChar_B3F5,
; 	0xB4FD,cChar_B4FD,
; 	0xB5C8,cChar_B5C8,
; 	0xB7E4,cChar_B7E4,
; 	0xBBAF,cChar_BBAF,
; 	0xBCCC,cChar_BCCC,
; 	0xBCFC,cChar_BCFC,
; 	0xC3F9,cChar_C3F9,
; 	0xC6F7,cChar_C6F7,
; 	0xC7EB,cChar_C7EB,
; 	0xC8CE,cChar_C8CE,
; 	0xCABC,cChar_CABC,
; 	0xCAD4,cChar_CAD4,
; 	0xCEDE,cChar_CEDE,
; 	0xD0A7,cChar_D0A7,
; 	0xD0F8,cChar_D0F8,
; 	0xD2E2,cChar_D2E2,
; 	0xD6D0,cChar_D6D0,
; 	0xFFFF,0
; };
; 
; //display structure for Frame0
; const struct LCDString Frame0[4] = 
; {
; 	0,0,"  ATmega16 GUI  ",
; 	0,1," 初始化中,请等待",
; 	0,2,"                ",
; 	0,3,"                "
; };
; 
; //display structure for Frame1
; const struct LCDString Frame1[4] = 
; {
; 	0,0,"  ATmega16 GUI  ",
; 	0,1,"  LED测试       ",
; 	0,2,"  蜂鸣器测试    ",
; 	0,3,"                "
; };
; 
; //display structure for Frame2
; const struct LCDString Frame2[4] = 
; {
; 	0,0,"  ATmega16 GUI  ",
; 	0,1,"  无效按键,按任 ",
; 	0,2,"意键继续...     ",
; 	0,3,"                ",
; };
; 
; //display structure for Frame3
; const struct LCDString Frame3[4] = 
; {
; 	0,0,"  ATmega16 GUI  ",
; 	0,1,"  LED测试       ",
; 	0,2,"  ENTER = START ",
; 	0,3,"  ESC = CANCEL  "
; };
; 
; //display structure for Frame4
; const struct LCDString Frame4[4] = 
; {
; 	0,0,"  ATmega16 GUI  ",
; 	0,1,"  蜂鸣器测试    ",
; 	0,2,"  ENTER = START ",
; 	0,3,"  ESC = CANCEL  "
; };
; 
; //******************************************************************************
; // Function    : LCD_Window0_Process
; // Input       : none
; // Output      : none
; // Description : Self Test and Progress Bar Process
; //******************************************************************************
; void LCD_Window0_Process(void)
; {
	.dbline 590
; 	static INT8U bCount = 0;
; 	if(bWindowIndexPre != bWindowIndex)
	lds R2,_bWindowIndex
	lds R3,_bWindowIndexPre
	cp R3,R2
	brne X6
	xjmp L87
X6:
	.dbline 591
; 	{
	.dbline 592
; 		Win_Show_Screen(Frame0);
	ldi R16,<_Frame0
	ldi R17,>_Frame0
	xcall _Win_Show_Screen
	.dbline 593
; 		LCD_Show_Time();
	xcall _LCD_Show_Time
	.dbline 594
; 	}
	xjmp L87
L86:
	.dbline 596
; 	while(1)
; 	{
	.dbline 597
; 		if(OS_Task_Switch(cPrioLCD) == true)
	clr R16
	xcall _OS_Task_Switch
	cpi R16,1
	ldi R30,0
	cpc R17,R30
	brne L89
	.dbline 598
; 		{
	.dbline 599
; 			return;
	xjmp L82
L89:
	.dbline 601
; 		}
; 		wLCD_Event = OS_Event_Pend(cPrioLCD);
	clr R16
	xcall _OS_Event_Pend
	sts _wLCD_Event+1,R17
	sts _wLCD_Event,R16
	.dbline 602
; 		if(wLCD_Event == 0)
	cpi R16,0
	cpc R16,R17
	brne L91
X4:
	.dbline 603
; 		{
	.dbline 604
; 			return;
	xjmp L82
L91:
	.dbline 606
; 		}
; 		if(wLCD_Event & (1 << eLCDTimer))
	lds R2,_wLCD_Event
	lds R3,_wLCD_Event+1
	sbrs R2,0
	rjmp L93
	.dbline 607
; 		{
	.dbline 608
; 			bWindowIndexPre = 0;
	clr R2
	sts _bWindowIndexPre,R2
	.dbline 609
; 			LCD_Show_Time();
	xcall _LCD_Show_Time
	.dbline 610
; 			LCD_Write_Char(2,bCount,eChar_DD);
	ldi R24,<_eChar_DD
	ldi R25,>_eChar_DD
	std y+1,R25
	std y+0,R24
	lds R18,L83
	ldi R16,2
	xcall _LCD_Write_Char
	.dbline 611
; 			if(bCount++ >= 16)
	lds R2,L83
	clr R3
	mov R24,R2
	subi R24,255    ; addi 1
	sts L83,R24
	mov R24,R2
	cpi R24,16
	brlo L95
	.dbline 612
; 			{
	.dbline 613
; 				bCount = 0;
	clr R2
	sts L83,R2
	.dbline 614
; 				bWindowIndex = 1; //Select Test Window
	ldi R24,1
	sts _bWindowIndex,R24
	.dbline 615
; 				return;
	xjmp L82
L95:
	.dbline 617
; 			}
; 		}
L93:
	.dbline 618
L87:
	.dbline 595
	xjmp L86
X5:
	.dbline -2
	.dbline 619
; 	}
; }
L82:
	adiw R28,2
	.dbline 0 ; func end
	ret
	.dbend
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\LCD菜单系统设计\LCD.c
L98:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\LCD菜单系统设计\LCD.c
	.area text(rom, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\LCD菜单系统设计\LCD.c
	.dbfunc e LCD_Window1_Process _LCD_Window1_Process fV
	.dbsym s bIndex L98 c
	.even
_LCD_Window1_Process::
	sbiw R28,2
	.dbline -1
	.dbline 628
; 
; //******************************************************************************
; // Function    : LCD_Window1_Process
; // Input       : none
; // Output      : none
; // Description : Window Process for Invalid Key
; //******************************************************************************
; void LCD_Window1_Process(void)
; {  
	.dbline 630
; 	static INT8U bIndex = 0;
; 	if(bWindowIndexPre != bWindowIndex)
	lds R2,_bWindowIndex
	lds R3,_bWindowIndexPre
	cp R3,R2
	brne X9
	xjmp L102
X9:
	.dbline 631
; 	{
	.dbline 632
; 		Win_Show_Screen(Frame1);
	ldi R16,<_Frame1
	ldi R17,>_Frame1
	xcall _Win_Show_Screen
	.dbline 633
; 		LCD_Write_Char(1,1,eChar_10); //Display Cursor
	ldi R24,<_eChar_10
	ldi R25,>_eChar_10
	std y+1,R25
	std y+0,R24
	ldi R18,1
	ldi R16,1
	xcall _LCD_Write_Char
	.dbline 634
; 		LCD_Show_Time();
	xcall _LCD_Show_Time
	.dbline 635
; 	}
	xjmp L102
L101:
	.dbline 637
; 	while(1)
; 	{
	.dbline 638
; 		if(OS_Task_Switch(cPrioLCD) == true)
	clr R16
	xcall _OS_Task_Switch
	cpi R16,1
	ldi R30,0
	cpc R17,R30
	brne L104
	.dbline 639
; 		{
	.dbline 640
; 			return;
	xjmp L97
L104:
	.dbline 642
; 		}
; 		wLCD_Event = OS_Event_Pend(cPrioLCD);
	clr R16
	xcall _OS_Event_Pend
	sts _wLCD_Event+1,R17
	sts _wLCD_Event,R16
	.dbline 643
; 		if(wLCD_Event == 0)
	cpi R16,0
	cpc R16,R17
	brne L106
X7:
	.dbline 644
; 		{
	.dbline 645
; 			return;
	xjmp L97
L106:
	.dbline 647
; 		}
; 		if(wLCD_Event & (1 << eLCDTimer))
	lds R2,_wLCD_Event
	lds R3,_wLCD_Event+1
	sbrs R2,0
	rjmp L108
	.dbline 648
; 		{
	.dbline 649
; 			bWindowIndexPre = bWindowIndex;
	lds R2,_bWindowIndex
	sts _bWindowIndexPre,R2
	.dbline 650
; 			LCD_Show_Time();
	xcall _LCD_Show_Time
	.dbline 651
; 		}
L108:
	.dbline 652
; 		if(wLCD_Event & (1 << eLCDKeyEnter))
	lds R2,_wLCD_Event
	lds R3,_wLCD_Event+1
	sbrs R2,4
	rjmp L110
	.dbline 653
; 		{
	.dbline 654
; 			if(bIndex == 0)
	lds R2,L98
	tst R2
	brne L112
	.dbline 655
; 			{
	.dbline 656
; 				bWindowIndex = 3; //LED Test Window
	ldi R24,3
	sts _bWindowIndex,R24
	.dbline 657
; 			}
	xjmp L113
L112:
	.dbline 658
; 			else if(bIndex == 1)
	lds R24,L98
	cpi R24,1
	brne L114
	.dbline 659
; 			{
	.dbline 660
; 				bWindowIndex = 4; //BUZZER Test Window
	ldi R24,4
	sts _bWindowIndex,R24
	.dbline 661
; 			} 
L114:
L113:
	.dbline 662
; 			bIndex = 0;
	clr R2
	sts L98,R2
	.dbline 663
; 			return;
	xjmp L97
L110:
	.dbline 665
; 		}
; 		if(wLCD_Event & (1 << eLCDKeyEsc))
	lds R2,_wLCD_Event
	lds R3,_wLCD_Event+1
	sbrs R2,1
	rjmp L116
	.dbline 666
; 		{
	.dbline 667
; 			bWindowIndex = 2; //无效按键页面
	ldi R24,2
	sts _bWindowIndex,R24
	.dbline 668
; 			bIndex = 0;
	clr R2
	sts L98,R2
	.dbline 669
; 			return;
	xjmp L97
L116:
	.dbline 671
; 		}
; 		if(wLCD_Event & (1 << eLCDKeyUp))
	lds R2,_wLCD_Event
	lds R3,_wLCD_Event+1
	sbrs R2,2
	rjmp L118
	.dbline 672
; 		{
	.dbline 673
; 			if(bIndex == 1)
	lds R24,L98
	cpi R24,1
	brne L120
	.dbline 674
; 			{
	.dbline 675
; 				bIndex = 0;
	clr R2
	sts L98,R2
	.dbline 676
; 				LCD_Write_Char(1,1,eChar_10);//显示光标
	ldi R24,<_eChar_10
	ldi R25,>_eChar_10
	std y+1,R25
	std y+0,R24
	ldi R18,1
	ldi R16,1
	xcall _LCD_Write_Char
	.dbline 677

⌨️ 快捷键说明

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