📄 lcd.s
字号:
.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 + -