📄 main.lis
字号:
03D3 95 tsx
03D4 ; if(istimer==0x01)lcdshow1('*',0x4C); //闹钟开关标志
03D4 B601 lda *_istimer
03D6 A101 cmp #1
03D8 260C bne L94
03DA A64C lda #76
03DC 87 psha
03DD A62A lda #42
03DF 87 psha
03E0 CD0000 jsr _lcdshow1
03E3 A702 ais #2
03E5 95 tsx
03E6 L94:
03E6 ; }
03E6 L72:
03E6 L71:
03E6 A708 ais #8
03E8 .dbline 0 ; func end
03E8 81 rts
03E9 ; data -> 0,X
03E9 _shilfL::
03E9 A7FF ais #-1
03EB 95 tsx
03EC ; }
03EC ; void shilfL(void){ //在设置状态下光标左移
03EC ; if(showtime==0x00){
03EC B602 lda *_showtime
03EE 263E bne L97
03F0 ; unsigned char data;
03F0 ; LcdCtrl&=~(1<<LcdRS); //RS、R/W=01,读指令
03F0 1102 bclr #0,0x2
03F2 ; LcdCtrl|=(1<<LcdRW);
03F2 1202 bset #1,0x2
03F4 ; LcdCtrl|=(1<<LcdE); //E=1
03F4 1402 bset #2,0x2
03F6 ; data=LcdData;
03F6 B601 lda 0x1
03F8 F7 sta ,X
03F9 ; data&=0b01111111;
03F9 A47F and #127
03FB F7 sta ,X
03FC ; data--;
03FC 7A dec ,X
03FD F6 lda ,X
03FE A104 cmp #4
0400 270C beq L103
0402 A107 cmp #7
0404 2708 beq L103
0406 A142 cmp #66
0408 2704 beq L103
040A A145 cmp #69
040C 2601 bne L99
040E L103:
040E ; if(data==0x04||data==0x07||data==0x42||data==0x45)data--;
040E 7A dec ,X
040F L99:
040F ; if(data==0x3f)data=0x09;
040F F6 lda ,X
0410 A13F cmp #63
0412 2603 bne L104
0414 A609 lda #9
0416 F7 sta ,X
0417 L104:
0417 ; if(data==0xff)data=0x47;
0417 F6 lda ,X
0418 A1FF cmp #-1
041A 2603 bne L106
041C A647 lda #71
041E F7 sta ,X
041F L106:
041F ; data|=0b10000000; //写AC地址指令
041F F6 lda ,X
0420 AA80 ora #-128
0422 F7 sta ,X
0423 ; LcdCtrl&=~(1<<LcdRS); //RS、R/W=00,写指令
0423 1102 bclr #0,0x2
0425 ; LcdCtrl&=~(1<<LcdRW);
0425 1302 bclr #1,0x2
0427 ; Lcd_Command(data); //AC地址减1后写AC地址
0427 87 psha
0428 CD0000 jsr _Lcd_Command
042B A701 ais #1
042D 95 tsx
042E ; }
042E L97:
042E L96:
042E A701 ais #1
0430 .dbline 0 ; func end
0430 81 rts
0431 ; data -> 0,X
0431 _shilfR::
0431 A7FF ais #-1
0433 95 tsx
0434 ; }
0434 ;
0434 ; void shilfR(void){ //在设置状态下光标右移
0434 ; if(showtime==0x00){
0434 B602 lda *_showtime
0436 263C bne L109
0438 ; unsigned char data;
0438 ; LcdCtrl&=~(1<<LcdRS); //RS、R/W=01,读指令
0438 1102 bclr #0,0x2
043A ; LcdCtrl|=(1<<LcdRW);
043A 1202 bset #1,0x2
043C ; LcdCtrl|=(1<<LcdE); //E=1
043C 1402 bset #2,0x2
043E ; data=LcdData;
043E B601 lda 0x1
0440 F7 sta ,X
0441 ; data&=0b01111111;
0441 A47F and #127
0443 F7 sta ,X
0444 ; data++;
0444 7C inc ,X
0445 F6 lda ,X
0446 A104 cmp #4
0448 270C beq L115
044A A107 cmp #7
044C 2708 beq L115
044E A142 cmp #66
0450 2704 beq L115
0452 A145 cmp #69
0454 2601 bne L111
0456 L115:
0456 ; if(data==0x04||data==0x07||data==0x42||data==0x45)data++;
0456 7C inc ,X
0457 L111:
0457 ; if(data==0x0A)data=0x40;
0457 F6 lda ,X
0458 A10A cmp #10
045A 2603 bne L116
045C A640 lda #64
045E F7 sta ,X
045F L116:
045F ; if(data==0x48)data=0x00;
045F F6 lda ,X
0460 A148 cmp #72
0462 2601 bne L118
0464 7F clr ,X
0465 L118:
0465 ; data|=0b10000000; //写AC地址指令
0465 F6 lda ,X
0466 AA80 ora #-128
0468 F7 sta ,X
0469 ; LcdCtrl&=~(1<<LcdRS); //RS、R/W=00,写指令
0469 1102 bclr #0,0x2
046B ; LcdCtrl&=~(1<<LcdRW);
046B 1302 bclr #1,0x2
046D ; Lcd_Command(data); //AC地址减1后写AC地址
046D 87 psha
046E CD0000 jsr _Lcd_Command
0471 A701 ais #1
0473 95 tsx
0474 ; }
0474 L109:
0474 L108:
0474 A701 ais #1
0476 .dbline 0 ; func end
0476 81 rts
0477 ; i -> 0,X
0477 _settime::
0477 A7FF ais #-1
0479 95 tsx
047A ; }
047A ;
047A ; void settime(void){ //进入时间设置
047A 7F clr ,X
047B 2013 bra L124
047D L121:
047D 3F00 clr *__r0
047F F6 lda ,X
0480 AB03 add #<_datetem
0482 B700 sta *__r1
0484 B600 lda *__r0
0486 A903 adc #>_datetem
0488 B700 sta *__r0
048A 4F clra
048B 5500 ldhx *__r0
048D F7 sta ,x
048E 95 tsx
048F L122:
048F 7C inc ,X
0490 L124:
0490 ; unsigned char i;
0490 ; for(i=0;i<8;i++)datetem[i]=0;
0490 F6 lda ,X
0491 A108 cmp #8
0493 25E8 blo L121
0495 7F clr ,X
0496 2013 bra L128
0498 L125:
0498 3F00 clr *__r0
049A F6 lda ,X
049B AB0B add #<_timetem
049D B700 sta *__r1
049F B600 lda *__r0
04A1 A90B adc #>_timetem
04A3 B700 sta *__r0
04A5 4F clra
04A6 5500 ldhx *__r0
04A8 F7 sta ,x
04A9 95 tsx
04AA L126:
04AA 7C inc ,X
04AB L128:
04AB ; for(i=0;i<4;i++)timetem[i]=0;
04AB F6 lda ,X
04AC A104 cmp #4
04AE 25E8 blo L125
04B0 ; issettime=0x01; //时间设置位置1
04B0 A601 lda #1
04B2 B700 sta *_issettime
04B4 ; showtime=0x00; //时间显示位置0,不显示时间
04B4 3F02 clr *_showtime
04B6 ; lcdshow((unsigned char *)init);
04B6 A62F lda #<_init
04B8 87 psha
04B9 A62F lda #>_init
04BB 87 psha
04BC CD0000 jsr _lcdshow
04BF A702 ais #2
04C1 ; LcdCtrl&=~(1<<LcdRS); //RS、R/W=00,写指令
04C1 1102 bclr #0,0x2
04C3 ; LcdCtrl&=~(1<<LcdRW);
04C3 1302 bclr #1,0x2
04C5 ; Lcd_Command(0b00001111); //开显示,开光标,闪烁
04C5 A60F lda #15
04C7 87 psha
04C8 CD0000 jsr _Lcd_Command
04CB A701 ais #1
04CD ; Lcd_Command(0b10000000); //后7位为DDRAM地址0x00
04CD A680 lda #-128
04CF 87 psha
04D0 CD0000 jsr _Lcd_Command
04D3 A701 ais #1
04D5 95 tsx
04D6 L120:
04D6 A701 ais #1
04D8 .dbline 0 ; func end
04D8 81 rts
04D9 ; i -> 0,X
04D9 _sastimer::
04D9 A7FF ais #-1
04DB 95 tsx
04DC ; }
04DC ;
04DC ;
04DC ; void sastimer(void){ //开始或关闭闹钟标志
04DC 7F clr ,X
04DD 2013 bra L133
04DF L130:
04DF 3F00 clr *__r0
04E1 F6 lda ,X
04E2 AB0F add #<_timertem
04E4 B700 sta *__r1
04E6 B600 lda *__r0
04E8 A90F adc #>_timertem
04EA B700 sta *__r0
04EC 4F clra
04ED 5500 ldhx *__r0
04EF F7 sta ,x
04F0 95 tsx
04F1 L131:
04F1 7C inc ,X
04F2 L133:
04F2 ; unsigned char i;
04F2 ; for(i=0;i<4;i++)timertem[i]=0;
04F2 F6 lda ,X
04F3 A104 cmp #4
04F5 25E8 blo L130
04F7 ; if(istimer==0x00){ //若关则开
04F7 B601 lda *_istimer
04F9 2612 bne L134
04FB ; istimer=0x01; //标志开
04FB A601 lda #1
04FD B701 sta *_istimer
04FF ; lcdshow1('*',0x4C); //显示'*'
04FF A64C lda #76
0501 87 psha
0502 A62A lda #42
0504 87 psha
0505 CD0000 jsr _lcdshow1
0508 A702 ais #2
050A 95 tsx
050B ; }
050B 2014 bra L135
050D L134:
050D ; else if(istimer==0x01){ //若开则关
050D B601 lda *_istimer
050F A101 cmp #1
0511 260E bne L136
0513 ; istimer=0x00; //标志关
0513 3F01 clr *_istimer
0515 ; lcdshow1(' ',0x4C); //无显示
0515 A64C lda #76
0517 87 psha
0518 A620 lda #32
051A 87 psha
051B CD0000 jsr _lcdshow1
051E A702 ais #2
0520 95 tsx
0521 ; }
0521 L136:
0521 L135:
0521 L129:
0521 A701 ais #1
0523 .dbline 0 ; func end
0523 81 rts
0524 ; j -> 0,X
0524 ; i -> 1,X
0524 _settimer::
0524 A7FE ais #-2
0526 95 tsx
0527 ; }
0527 ;
0527 ; void settimer(void){ //进入闹钟设置
0527 ; if(issettime==0){
0527 B600 lda *_issettime
0529 2703 beq X4
052B CC0615 jmp L139
052E X4:
052E ; unsigned char i=0,j;
052E 6F01 clr 1,X
0530 ; showtime=0x00; //时间显示位置0,不显示时间
0530 3F02 clr *_showtime
0532 ; istimer=0x01; //开闹钟设置标志
0532 A601 lda #1
0534 B701 sta *_istimer
0536 ; lcdshow1('*',0x4C); //显示'*'
0536 A64C lda #76
0538 87 psha
0539 A62A lda #42
053B 87 psha
053C CD0000 jsr _lcdshow1
053F A702 ais #2
0541 95 tsx
0542 ; show[i]='E';i++; //第一行不显示
0542 3F00 clr *__r0
0544 E601 lda 1,X
0546 AB44 add #<_show
0548 B700 sta *__r1
054A B600 lda *__r0
054C A944 adc #>_show
054E B700 sta *__r0
0550 A645 lda #69
0552 5500 ldhx *__r0
0554 F7 sta ,x
0555 95 tsx
0556 6C01 inc 1,X
0558 7F clr ,X
0559 CC05DA jmp L144
055C L141:
055C ; for(j=0;j<3;j++){
055C ; show[i]=0x30+(timer[j]/10);i++;
055C 3F00 clr *__r0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -