📄 lcdshow.lis
字号:
.module LCDShow.c
.area text
; i -> 0,X
0000 _Lcdshowtime::
0000 A7FF ais #-1
0002 95 tsx
0003 ; /*文件描述:本文件包含了用HD44780显示相关的3个子程序 *
0003 ; * 1. LCDShow:在LCD上显示32个字符 *
0003 ; * 2. LcdInit:初始化Lcd *
0003 ; * 3. Lcd_Command:执行给定的cmd命令 *
0003 ; *-------------《嵌入式应用技术基础教程》--------------*/
0003 ; //[以下为子程序源代码]
0003 ; //[头文件]
0003 ; #include "GP32C.h" //包含头文件
0003 ; #define LcdData PTB //Lcd显示数据传送口
0003 ; #define LcdData_D DDRB //数据口方向寄存器
0003 ; #define LcdCtrl PTC //Lcd控制信号传送口
0003 ; #define LcdCtrl_D DDRC //控制口方向寄存器
0003 ; #define LcdRS 0 //Lcd寄存器选择信号PTC0
0003 ; #define LcdRW 1 //读写信号接PTC1
0003 ; #define LcdE 2 //Lcd使能信号接PTC2
0003 ; //内部调用子程序
0003 ; void Lcd_Command(unsigned char cmd); //命令执行子程序
0003 ; void LcdInit(void); //Lcd初始化子程序
0003 ; void LcdshowCharacter(unsigned char str,unsigned char m,unsigned char n);
0003 ; unsigned char ChangeASCII(unsigned char x);
0003 ; //外部变量
0003 ; extern unsigned char time[14];
0003 ; extern unsigned char alarm[14];
0003 ;
0003 ; void Lcdshowtime(void) //显示日期时间子程序
0003 ; { unsigned char i;
0003 ; LcdInit();
0003 CD0309 jsr _LcdInit
0006 95 tsx
0007 ; for(i=0;i<4;i++)
0007 7F clr ,X
0008 202A bra L5
000A L2:
000A 3F00 clr *__r0
000C F6 lda ,X
000D AB00 add #<_time
000F B700 sta *__r1
0011 B600 lda *__r0
0013 A900 adc #>_time
0015 B700 sta *__r0
0017 5500 ldhx *__r0
0019 F6 lda ,x
001A 87 psha
001B CD02F7 jsr _ChangeASCII
001E A701 ais #1
0020 95 tsx
0021 B700 sta *__r1
0023 F6 lda ,X
0024 AB04 add #4
0026 87 psha
0027 A601 lda #1
0029 87 psha
002A B600 lda *__r1
002C 87 psha
002D CD02CA jsr _LcdshowCharacter
0030 A703 ais #3
0032 95 tsx
0033 L3:
0033 7C inc ,X
0034 L5:
0034 F6 lda ,X
0035 A104 cmp #4
0037 25D1 blo L2
0039 ; {
0039 ; LcdshowCharacter(ChangeASCII(time[i]),1,(i+4));
0039 ; }
0039 ;
0039 ; LcdshowCharacter('-',1,8);
0039 A608 lda #8
003B 87 psha
003C A601 lda #1
003E 87 psha
003F A62D lda #45
0041 87 psha
0042 CD02CA jsr _LcdshowCharacter
0045 A703 ais #3
0047 ; LcdshowCharacter(ChangeASCII(time[4]),1,9);
0047 B604 lda *_time+4
0049 87 psha
004A CD02F7 jsr _ChangeASCII
004D A701 ais #1
004F B700 sta *__r1
0051 A609 lda #9
0053 87 psha
0054 A601 lda #1
0056 87 psha
0057 B600 lda *__r1
0059 87 psha
005A CD02CA jsr _LcdshowCharacter
005D A703 ais #3
005F ; LcdshowCharacter(ChangeASCII(time[5]),1,10);
005F B605 lda *_time+5
0061 87 psha
0062 CD02F7 jsr _ChangeASCII
0065 A701 ais #1
0067 B700 sta *__r1
0069 A60A lda #10
006B 87 psha
006C A601 lda #1
006E 87 psha
006F B600 lda *__r1
0071 87 psha
0072 CD02CA jsr _LcdshowCharacter
0075 A703 ais #3
0077 ; LcdshowCharacter('-',1,11);
0077 A60B lda #11
0079 87 psha
007A A601 lda #1
007C 87 psha
007D A62D lda #45
007F 87 psha
0080 CD02CA jsr _LcdshowCharacter
0083 A703 ais #3
0085 ; LcdshowCharacter(ChangeASCII(time[6]),1,12);
0085 B606 lda *_time+6
0087 87 psha
0088 CD02F7 jsr _ChangeASCII
008B A701 ais #1
008D B700 sta *__r1
008F A60C lda #12
0091 87 psha
0092 A601 lda #1
0094 87 psha
0095 B600 lda *__r1
0097 87 psha
0098 CD02CA jsr _LcdshowCharacter
009B A703 ais #3
009D ; LcdshowCharacter(ChangeASCII(time[7]),1,13);
009D B607 lda *_time+7
009F 87 psha
00A0 CD02F7 jsr _ChangeASCII
00A3 A701 ais #1
00A5 B700 sta *__r1
00A7 A60D lda #13
00A9 87 psha
00AA A601 lda #1
00AC 87 psha
00AD B600 lda *__r1
00AF 87 psha
00B0 CD02CA jsr _LcdshowCharacter
00B3 A703 ais #3
00B5 ; LcdshowCharacter(ChangeASCII(time[8]),2,5);
00B5 B608 lda *_time+8
00B7 87 psha
00B8 CD02F7 jsr _ChangeASCII
00BB A701 ais #1
00BD B700 sta *__r1
00BF A605 lda #5
00C1 87 psha
00C2 A602 lda #2
00C4 87 psha
00C5 B600 lda *__r1
00C7 87 psha
00C8 CD02CA jsr _LcdshowCharacter
00CB A703 ais #3
00CD ; LcdshowCharacter(ChangeASCII(time[9]),2,6);
00CD B609 lda *_time+9
00CF 87 psha
00D0 CD02F7 jsr _ChangeASCII
00D3 A701 ais #1
00D5 B700 sta *__r1
00D7 A606 lda #6
00D9 87 psha
00DA A602 lda #2
00DC 87 psha
00DD B600 lda *__r1
00DF 87 psha
00E0 CD02CA jsr _LcdshowCharacter
00E3 A703 ais #3
00E5 ; LcdshowCharacter(':',2,7);
00E5 A607 lda #7
00E7 87 psha
00E8 A602 lda #2
00EA 87 psha
00EB A63A lda #58
00ED 87 psha
00EE CD02CA jsr _LcdshowCharacter
00F1 A703 ais #3
00F3 ; LcdshowCharacter(ChangeASCII(time[10]),2,8);
00F3 B60A lda *_time+10
00F5 87 psha
00F6 CD02F7 jsr _ChangeASCII
00F9 A701 ais #1
00FB B700 sta *__r1
00FD A608 lda #8
00FF 87 psha
0100 A602 lda #2
0102 87 psha
0103 B600 lda *__r1
0105 87 psha
0106 CD02CA jsr _LcdshowCharacter
0109 A703 ais #3
010B ; LcdshowCharacter(ChangeASCII(time[11]),2,9);
010B B60B lda *_time+11
010D 87 psha
010E CD02F7 jsr _ChangeASCII
0111 A701 ais #1
0113 B700 sta *__r1
0115 A609 lda #9
0117 87 psha
0118 A602 lda #2
011A 87 psha
011B B600 lda *__r1
011D 87 psha
011E CD02CA jsr _LcdshowCharacter
0121 A703 ais #3
0123 ; LcdshowCharacter(':',2,10);
0123 A60A lda #10
0125 87 psha
0126 A602 lda #2
0128 87 psha
0129 A63A lda #58
012B 87 psha
012C CD02CA jsr _LcdshowCharacter
012F A703 ais #3
0131 ; LcdshowCharacter(ChangeASCII(time[12]),2,11);
0131 B60C lda *_time+12
0133 87 psha
0134 CD02F7 jsr _ChangeASCII
0137 A701 ais #1
0139 B700 sta *__r1
013B A60B lda #11
013D 87 psha
013E A602 lda #2
0140 87 psha
0141 B600 lda *__r1
0143 87 psha
0144 CD02CA jsr _LcdshowCharacter
0147 A703 ais #3
0149 ; LcdshowCharacter(ChangeASCII(time[13]),2,12);
0149 B60D lda *_time+13
014B 87 psha
014C CD02F7 jsr _ChangeASCII
014F A701 ais #1
0151 B700 sta *__r1
0153 A60C lda #12
0155 87 psha
0156 A602 lda #2
0158 87 psha
0159 B600 lda *__r1
015B 87 psha
015C CD02CA jsr _LcdshowCharacter
015F A703 ais #3
0161 95 tsx
0162 L1:
0162 A701 ais #1
0164 .dbline 0 ; func end
0164 81 rts
0165 ; i -> 0,X
0165 _Lcdshowalarm::
0165 A7FF ais #-1
0167 95 tsx
0168 ;
0168 ; }
0168 ;
0168 ; void Lcdshowalarm(void) //显示日期时间子程序
0168 ; { unsigned char i;
0168 ; LcdInit();
0168 CD0309 jsr _LcdInit
016B 95 tsx
016C ; for(i=0;i<4;i++)
016C 7F clr ,X
016D 202A bra L20
016F L17:
016F 3F00 clr *__r0
0171 F6 lda ,X
0172 AB00 add #<_alarm
0174 B700 sta *__r1
0176 B600 lda *__r0
0178 A900 adc #>_alarm
017A B700 sta *__r0
017C 5500 ldhx *__r0
017E F6 lda ,x
017F 87 psha
0180 CD02F7 jsr _ChangeASCII
0183 A701 ais #1
0185 95 tsx
0186 B700 sta *__r1
0188 F6 lda ,X
0189 AB04 add #4
018B 87 psha
018C A601 lda #1
018E 87 psha
018F B600 lda *__r1
0191 87 psha
0192 CD02CA jsr _LcdshowCharacter
0195 A703 ais #3
0197 95 tsx
0198 L18:
0198 7C inc ,X
0199 L20:
0199 F6 lda ,X
019A A104 cmp #4
019C 25D1 blo L17
019E ; {
019E ; LcdshowCharacter(ChangeASCII(alarm[i]),1,(i+4));
019E ; }
019E ;
019E ; LcdshowCharacter('-',1,8);
019E A608 lda #8
01A0 87 psha
01A1 A601 lda #1
01A3 87 psha
01A4 A62D lda #45
01A6 87 psha
01A7 CD02CA jsr _LcdshowCharacter
01AA A703 ais #3
01AC ; LcdshowCharacter(ChangeASCII(alarm[4]),1,9);
01AC B604 lda *_alarm+4
01AE 87 psha
01AF CD02F7 jsr _ChangeASCII
01B2 A701 ais #1
01B4 B700 sta *__r1
01B6 A609 lda #9
01B8 87 psha
01B9 A601 lda #1
01BB 87 psha
01BC B600 lda *__r1
01BE 87 psha
01BF CD02CA jsr _LcdshowCharacter
01C2 A703 ais #3
01C4 ; LcdshowCharacter(ChangeASCII(alarm[5]),1,10);
01C4 B605 lda *_alarm+5
01C6 87 psha
01C7 CD02F7 jsr _ChangeASCII
01CA A701 ais #1
01CC B700 sta *__r1
01CE A60A lda #10
01D0 87 psha
01D1 A601 lda #1
01D3 87 psha
01D4 B600 lda *__r1
01D6 87 psha
01D7 CD02CA jsr _LcdshowCharacter
01DA A703 ais #3
01DC ; LcdshowCharacter('-',1,11);
01DC A60B lda #11
01DE 87 psha
01DF A601 lda #1
01E1 87 psha
01E2 A62D lda #45
01E4 87 psha
01E5 CD02CA jsr _LcdshowCharacter
01E8 A703 ais #3
01EA ; LcdshowCharacter(ChangeASCII(alarm[6]),1,12);
01EA B606 lda *_alarm+6
01EC 87 psha
01ED CD02F7 jsr _ChangeASCII
01F0 A701 ais #1
01F2 B700 sta *__r1
01F4 A60C lda #12
01F6 87 psha
01F7 A601 lda #1
01F9 87 psha
01FA B600 lda *__r1
01FC 87 psha
01FD CD02CA jsr _LcdshowCharacter
0200 A703 ais #3
0202 ; LcdshowCharacter(ChangeASCII(alarm[7]),1,13);
0202 B607 lda *_alarm+7
0204 87 psha
0205 CD02F7 jsr _ChangeASCII
0208 A701 ais #1
020A B700 sta *__r1
020C A60D lda #13
020E 87 psha
020F A601 lda #1
0211 87 psha
0212 B600 lda *__r1
0214 87 psha
0215 CD02CA jsr _LcdshowCharacter
0218 A703 ais #3
021A ; LcdshowCharacter(ChangeASCII(alarm[8]),2,5);
021A B608 lda *_alarm+8
021C 87 psha
021D CD02F7 jsr _ChangeASCII
0220 A701 ais #1
0222 B700 sta *__r1
0224 A605 lda #5
0226 87 psha
0227 A602 lda #2
0229 87 psha
022A B600 lda *__r1
022C 87 psha
022D CD02CA jsr _LcdshowCharacter
0230 A703 ais #3
0232 ; LcdshowCharacter(ChangeASCII(alarm[9]),2,6);
0232 B609 lda *_alarm+9
0234 87 psha
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -