📄 lcdshow.lis
字号:
0235 CD02F7 jsr _ChangeASCII
0238 A701 ais #1
023A B700 sta *__r1
023C A606 lda #6
023E 87 psha
023F A602 lda #2
0241 87 psha
0242 B600 lda *__r1
0244 87 psha
0245 CD02CA jsr _LcdshowCharacter
0248 A703 ais #3
024A ; LcdshowCharacter(':',2,7);
024A A607 lda #7
024C 87 psha
024D A602 lda #2
024F 87 psha
0250 A63A lda #58
0252 87 psha
0253 CD02CA jsr _LcdshowCharacter
0256 A703 ais #3
0258 ; LcdshowCharacter(ChangeASCII(alarm[10]),2,8);
0258 B60A lda *_alarm+10
025A 87 psha
025B CD02F7 jsr _ChangeASCII
025E A701 ais #1
0260 B700 sta *__r1
0262 A608 lda #8
0264 87 psha
0265 A602 lda #2
0267 87 psha
0268 B600 lda *__r1
026A 87 psha
026B CD02CA jsr _LcdshowCharacter
026E A703 ais #3
0270 ; LcdshowCharacter(ChangeASCII(alarm[11]),2,9);
0270 B60B lda *_alarm+11
0272 87 psha
0273 CD02F7 jsr _ChangeASCII
0276 A701 ais #1
0278 B700 sta *__r1
027A A609 lda #9
027C 87 psha
027D A602 lda #2
027F 87 psha
0280 B600 lda *__r1
0282 87 psha
0283 CD02CA jsr _LcdshowCharacter
0286 A703 ais #3
0288 ; LcdshowCharacter(':',2,10);
0288 A60A lda #10
028A 87 psha
028B A602 lda #2
028D 87 psha
028E A63A lda #58
0290 87 psha
0291 CD02CA jsr _LcdshowCharacter
0294 A703 ais #3
0296 ; LcdshowCharacter(ChangeASCII(alarm[12]),2,11);
0296 B60C lda *_alarm+12
0298 87 psha
0299 CD02F7 jsr _ChangeASCII
029C A701 ais #1
029E B700 sta *__r1
02A0 A60B lda #11
02A2 87 psha
02A3 A602 lda #2
02A5 87 psha
02A6 B600 lda *__r1
02A8 87 psha
02A9 CD02CA jsr _LcdshowCharacter
02AC A703 ais #3
02AE ; LcdshowCharacter(ChangeASCII(alarm[13]),2,12);
02AE B60D lda *_alarm+13
02B0 87 psha
02B1 CD02F7 jsr _ChangeASCII
02B4 A701 ais #1
02B6 B700 sta *__r1
02B8 A60C lda #12
02BA 87 psha
02BB A602 lda #2
02BD 87 psha
02BE B600 lda *__r1
02C0 87 psha
02C1 CD02CA jsr _LcdshowCharacter
02C4 A703 ais #3
02C6 95 tsx
02C7 L16:
02C7 A701 ais #1
02C9 .dbline 0 ; func end
02C9 81 rts
02CA ; n -> 4,X
02CA ; m -> 3,X
02CA ; str -> 2,X
02CA _LcdshowCharacter::
02CA 95 tsx
02CB ;
02CB ; }
02CB ;
02CB ; /*LcdShow:在HD44780显示屏上显示一个字符--------------------*
02CB ; *功能描述:在HD44780显示屏上第m行,第n列显示字符str *
02CB ; *参 数:str:待显示字符 *
02CB ; *返 回:无 *
02CB ; *------------------以上为子程序说明-------------------*/
02CB ; void LcdshowCharacter(unsigned char str,unsigned char m,unsigned char n)
02CB ; {
02CB ;
02CB ; //LcdInit();
02CB ;
02CB ; LcdCtrl&=~(1<<LcdRS); //RS、R/W=00,写指令
02CB 1102 bclr #0,0x2
02CD ; LcdCtrl&=~(1<<LcdRW);
02CD 1302 bclr #1,0x2
02CF ; Lcd_Command(0b10000000|((m-1)*0x40+(n-1)));
02CF E604 lda 4,X
02D1 A001 sub #1
02D3 B700 sta *__r0
02D5 E603 lda 3,X
02D7 A001 sub #1
02D9 62 nsa
02DA A4F0 and #-16
02DC 48 lsla
02DD 48 lsla
02DE BB00 add *__r0
02E0 AA80 ora #-128
02E2 87 psha
02E3 CD0353 jsr _Lcd_Command
02E6 A701 ais #1
02E8 95 tsx
02E9 ; LcdCtrl|=1<<LcdRS; //RS、R/W=10,写数据到DDRAM中
02E9 1002 bset #0,0x2
02EB ; LcdCtrl&=~(1<<LcdRW);
02EB 1302 bclr #1,0x2
02ED ; Lcd_Command(str);
02ED E602 lda 2,X
02EF 87 psha
02F0 CD0353 jsr _Lcd_Command
02F3 A701 ais #1
02F5 95 tsx
02F6 L31:
02F6 .dbline 0 ; func end
02F6 81 rts
02F7 ; y -> 0,X
02F7 ; x -> 3,X
02F7 _ChangeASCII::
02F7 A7FF ais #-1
02F9 95 tsx
02FA ;
02FA ; }
02FA ;
02FA ; unsigned char ChangeASCII(unsigned char x) //转换数值x为对应的ASCII码
02FA ; {
02FA ; unsigned char y;
02FA ; return y=x+0x30;
02FA E603 lda 3,X
02FC AB30 add #48
02FE B700 sta *__r1
0300 F7 sta ,X
0301 4E0000 mov *__r1,*__r0
0304 B600 lda *__r1
0306 L32:
0306 A701 ais #1
0308 .dbline 0 ; func end
0308 81 rts
0309 ; i -> 0,X
0309 _LcdInit::
0309 A7FF ais #-1
030B 95 tsx
030C ; }
030C ;
030C ;
030C ; /*LcdInit:初始化Lcd------------------------------------*
030C ; *功 能:初始化Lcd(HD44780),设置显示方式,清屏,AC自动+1 *
030C ; *参 数:无 *
030C ; *返 回:无 *
030C ; *-----------------------------------------------------*/
030C ; void LcdInit(void)
030C ; {
030C ; unsigned char i;
030C ; LcdData_D=0b11111111; //数据口为输出
030C A6FF lda #-1
030E B705 sta 0x5
0310 ; LcdCtrl_D|=(1<<LcdE); //控制口低三位为输出
0310 1406 bset #2,0x6
0312 ; LcdCtrl_D|=(1<<LcdRS);
0312 1006 bset #0,0x6
0314 ; LcdCtrl_D|=(1<<LcdRW);
0314 1206 bset #1,0x6
0316 ; LcdCtrl|=(1<<LcdE); //E=1
0316 1402 bset #2,0x2
0318 ; LcdCtrl&=~(1<<LcdRS); //RS、R/W=00,写指令
0318 1102 bclr #0,0x2
031A ; LcdCtrl&=~(1<<LcdRW);
031A 1302 bclr #1,0x2
031C ; Lcd_Command(0b00111000); //8位数据接口,2行,5*7点阵
031C A638 lda #56
031E 87 psha
031F CD0353 jsr _Lcd_Command
0322 A701 ais #1
0324 ; Lcd_Command(0b00001000); //关显示,关光标显示,不闪烁
0324 A608 lda #8
0326 87 psha
0327 CD0353 jsr _Lcd_Command
032A A701 ais #1
032C ; Lcd_Command(0b00000001); //清屏
032C A601 lda #1
032E 87 psha
032F CD0353 jsr _Lcd_Command
0332 A701 ais #1
0334 95 tsx
0335 7F clr ,X
0336 2001 bra L37
0338 L34:
0338 L35:
0338 7C inc ,X
0339 L37:
0339 ; for(i=0;i<250;i++); //延时>1.6ms
0339 F6 lda ,X
033A A1FA cmp #-6
033C 25FA blo L34
033E 7F clr ,X
033F 2001 bra L41
0341 L38:
0341 L39:
0341 7C inc ,X
0342 L41:
0342 ; for(i=0;i<250;i++);
0342 F6 lda ,X
0343 A1FA cmp #-6
0345 25FA blo L38
0347 ; //Lcd_Command(0b00010100); //光标右移一个字符位,AC自
0347 ; // 动加1
0347 ; Lcd_Command(0b00001100); //开显示,关光标显示,不闪烁
0347 A60C lda #12
0349 87 psha
034A CD0353 jsr _Lcd_Command
034D A701 ais #1
034F 95 tsx
0350 L33:
0350 A701 ais #1
0352 .dbline 0 ; func end
0352 81 rts
0353 ; i -> 0,X
0353 ; cmd -> 3,X
0353 _Lcd_Command::
0353 A7FF ais #-1
0355 95 tsx
0356 ; }
0356 ; /*Lcd_Command:执行给定的cmd命令------------------------*
0356 ; *功 能:执行给定的cmd命令,且延时 *
0356 ; *参 数:cmd:待执行的命令 *
0356 ; *返 回:无 *
0356 ; *-----------------------------------------------------*/
0356 ; void Lcd_Command(unsigned char cmd)
0356 ; {
0356 7F clr ,X
0357 2001 bra L46
0359 L43:
0359 L44:
0359 7C inc ,X
035A L46:
035A ; unsigned char i;
035A ; for (i=0;i<20;i++); //等待>40us
035A F6 lda ,X
035B A114 cmp #20
035D 25FA blo L43
035F ; LcdData=cmd; //把指令码送到Lcd数据传送口
035F E603 lda 3,X
0361 B701 sta 0x1
0363 ; LcdCtrl|=(1<<LcdE); //Lcd开始接收数据
0363 1402 bset #2,0x2
0365 ; asm("NOP");
0365 9D NOP
0366 ; asm("NOP");
0366 9D NOP
0367 ; asm("NOP");
0367 9D NOP
0368 ; LcdCtrl&=~(1<<LcdE); //Lcd结束接收数据
0368 1502 bclr #2,0x2
036A 7F clr ,X
036B 2001 bra L50
036D L47:
036D L48:
036D 7C inc ,X
036E L50:
036E ; for (i=0;i<20;i++); //等待>40us
036E F6 lda ,X
036F A114 cmp #20
0371 25FA blo L47
0373 L42:
0373 A701 ais #1
0375 .dbline 0 ; func end
0375 81 rts
0376 ; n -> 3,X
0376 ; m -> 2,X
0376 _MoveCursor::
0376 95 tsx
0377 ; }
0377 ;
0377 ; void MoveCursor(unsigned char m,unsigned char n) //移到光标到第m行,第n列
0377 ; {
0377 ; LcdCtrl&=~(1<<LcdRS); //RS、R/W=00,写指令
0377 1102 bclr #0,0x2
0379 ; LcdCtrl&=~(1<<LcdRW);
0379 1302 bclr #1,0x2
037B ; Lcd_Command(0b00001111);
037B A60F lda #15
037D 87 psha
037E CD0353 jsr _Lcd_Command
0381 A701 ais #1
0383 95 tsx
0384 ; Lcd_Command(0b10000000|((m-1)*0x40+(n-1)));
0384 E603 lda 3,X
0386 A001 sub #1
0388 B700 sta *__r0
038A E602 lda 2,X
038C A001 sub #1
038E 62 nsa
038F A4F0 and #-16
0391 48 lsla
0392 48 lsla
0393 BB00 add *__r0
0395 AA80 ora #-128
0397 87 psha
0398 CD0353 jsr _Lcd_Command
039B A701 ais #1
039D 95 tsx
039E L51:
039E .dbline 0 ; func end
039E 81 rts
039F _LcdShowCursor::
039F ; //Lcd_Command(0b00001111);
039F ; }
039F ;
039F ;
039F ; void LcdShowCursor(void) //开光标显示,闪烁
039F ; {
039F ; LcdCtrl&=~(1<<LcdRS); //RS、R/W=00,写指令
039F 1102 bclr #0,0x2
03A1 ; LcdCtrl&=~(1<<LcdRW);
03A1 1302 bclr #1,0x2
03A3 ; Lcd_Command(0b00001111);
03A3 A60F lda #15
03A5 87 psha
03A6 CD0353 jsr _Lcd_Command
03A9 A701 ais #1
03AB 95 tsx
03AC L52:
03AC .dbline 0 ; func end
03AC 81 rts
.area lit
0000 L54:
0000 312E205365742054696D6500 .byte 49,46,32,'S,'e,'t,32,'T,'i,'m,'e,0
000C L55:
000C 322E2053657420416C61726D00 .byte 50,46,32,'S,'e,'t,32,'A,'l,'a,'r,'m,0
.area text
; temp2 -> 0,X
; temp -> 13,X
; i -> 25,X
03AD _LcdShowMenu::
03AD A7E6 ais #-26
03AF 95 tsx
03B0 ; }
03B0 ;
03B0 ; void LcdShowMenu(void) //显示菜单
03B0 ; {
03B0 ;
03B0 ; unsigned char temp[12]="1. Set Time";
03B0 AF0D aix #13
03B2 3500 sthx *__r0
03B4 95 tsx
03B5 A60C lda #12
03B7 87 psha
03B8 4F clra
03B9 87 psha
03BA A600 lda #<L54
03BC 87 psha
03BD A600 lda #>L54
03BF 87 psha
03C0 B600 lda *__r1
03C2 87 psha
03C3 B600 lda *__r0
03C5 87 psha
03C6 CD0000 jsr __asgnblk
03C9 A706 ais #6
03CB ; unsigned char temp2[13]="2. Set Alarm";
03CB 3500 sthx *__r0
03CD A60D lda #13
03CF 87 psha
03D0 4F clra
03D1 87 psha
03D2 A60C lda #<L55
03D4 87 psha
03D5 A60C lda #>L55
03D7 87 psha
03D8 B600 lda *__r1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -