📄 main.lis
字号:
02DC A60D lda #13
02DE 87 psha
02DF AF2C aix #44
02E1 89 pshx
02E2 8B pshh
02E3 CD0000 jsr _LcdShowString
02E6 A704 ais #4
02E8 95 tsx
02E9 ; LcdShowString((unsigned char *)str4,14,2); // 2. Close Alarm
02E9 A602 lda #2
02EB 87 psha
02EC A60E lda #14
02EE 87 psha
02EF AF1D aix #29
02F1 89 pshx
02F2 8B pshh
02F3 CD0000 jsr _LcdShowString
02F6 A704 ais #4
02F8 95 tsx
02F9 ; Key=0;
02F9 3F03 clr *_Key
02FB ; if(Key=='1') //选择1. Open Alarm
02FB B603 lda *_Key
02FD A131 cmp #49
02FF 2703 beq X7
0301 CC0438 jmp L91
0304 X7:
0304 ; { o=1; //开闹钟
0304 A601 lda #1
0306 B700 sta *_o
0308 ; Lcdshow((unsigned char *)alarm);
0308 A60D lda #<_alarm
030A 87 psha
030B A60D lda #>_alarm
030D 87 psha
030E CD0000 jsr _Lcdshow
0311 A702 ais #2
0313 ; LcdShowCursor(2,5); //光标初始位置(2,5),第二行第五列
0313 A605 lda #5
0315 87 psha
0316 A602 lda #2
0318 87 psha
0319 CD0000 jsr _LcdShowCursor
031C A702 ais #2
031E 95 tsx
031F ; k=1;l=1;
031F A601 lda #1
0321 B702 sta *_k
0323 A601 lda #1
0325 B701 sta *_l
0327 ; Key=0;
0327 3F03 clr *_Key
0329 CC0429 jmp L94
032C L93:
032C ; while(1)
032C ; { if(Key=='#') //光标右移
032C B603 lda *_Key
032E A123 cmp #35
0330 2660 bne L96
0332 ; { ++k;
0332 3C02 inc *_k
0334 ; if(l%2==0) //现在光标在第一行
0334 B601 lda *_l
0336 AE02 ldx #2
0338 8C clrh
0339 52 div
033A 8B pshh
033B 86 pula
033C 95 tsx
033D 4D tsta
033E 2628 bne L98
0340 B602 lda *_k
0342 A104 cmp #4
0344 2706 beq L102
0346 B602 lda *_k
0348 A107 cmp #7
034A 2602 bne L100
034C L102:
034C ; { if(k==4||k==7) ++k;
034C 3C02 inc *_k
034E L100:
034E ; if(k>9) k=0; //现在光标在末端
034E B602 lda *_k
0350 A109 cmp #9
0352 2302 bls L103
0354 3F02 clr *_k
0356 L103:
0356 ; LcdShowCursor((1+l),(4+k));
0356 B602 lda *_k
0358 AB04 add #4
035A 87 psha
035B B601 lda *_l
035D AB01 add #1
035F 87 psha
0360 CD0000 jsr _LcdShowCursor
0363 A702 ais #2
0365 95 tsx
0366 ; }
0366 2028 bra L99
0368 L98:
0368 B602 lda *_k
036A A103 cmp #3
036C 2706 beq L107
036E B602 lda *_k
0370 A106 cmp #6
0372 2602 bne L105
0374 L107:
0374 ; else //现在光标在第二行
0374 ; { if(k==3||k==6) ++k;
0374 3C02 inc *_k
0376 L105:
0376 ; if(k>8) k=1; //现在光标在末端
0376 B602 lda *_k
0378 A108 cmp #8
037A 2304 bls L108
037C A601 lda #1
037E B702 sta *_k
0380 L108:
0380 ; LcdShowCursor((1+l),(4+k));
0380 B602 lda *_k
0382 AB04 add #4
0384 87 psha
0385 B601 lda *_l
0387 AB01 add #1
0389 87 psha
038A CD0000 jsr _LcdShowCursor
038D A702 ais #2
038F 95 tsx
0390 ; }
0390 L99:
0390 ; Key=0;
0390 3F03 clr *_Key
0392 ;
0392 ; }
0392 L96:
0392 ; if(Key=='*') //光标下移
0392 B603 lda *_Key
0394 A12A cmp #42
0396 262A bne L110
0398 ; { ++l;
0398 3C01 inc *_l
039A ; if(k==0) ++k; //现在光标在第一行始端
039A B602 lda *_k
039C 2602 bne L112
039E 3C02 inc *_k
03A0 L112:
03A0 ; if(k==9) --k; //现在光标在第一行末端
03A0 B602 lda *_k
03A2 A109 cmp #9
03A4 2602 bne L114
03A6 3A02 dec *_k
03A8 L114:
03A8 ; if(l>1) l=0; //现在光标在第二行
03A8 B601 lda *_l
03AA A101 cmp #1
03AC 2302 bls L116
03AE 3F01 clr *_l
03B0 L116:
03B0 ; LcdShowCursor((1+l),(4+k));
03B0 B602 lda *_k
03B2 AB04 add #4
03B4 87 psha
03B5 B601 lda *_l
03B7 AB01 add #1
03B9 87 psha
03BA CD0000 jsr _LcdShowCursor
03BD A702 ais #2
03BF 95 tsx
03C0 ; Key=0;
03C0 3F03 clr *_Key
03C2 ; }
03C2 L110:
03C2 ; if(Key=='B') //返回
03C2 B603 lda *_Key
03C4 A142 cmp #66
03C6 2605 bne L118
03C8 ; { Key=0;
03C8 3F03 clr *_Key
03CA ; goto MENU;
03CA CC0174 jmp L50
03CD L118:
03CD ; }
03CD ; if(Key=='D') //确定
03CD B603 lda *_Key
03CF A144 cmp #68
03D1 2604 bne L120
03D3 ; { Key=0;
03D3 3F03 clr *_Key
03D5 ; goto BEGING;
03D5 2064 bra L18
03D7 L120:
03D7 ; }
03D7 ; if(Key!=0&&Discriminant(Key))
03D7 B603 lda *_Key
03D9 274E beq L122
03DB B603 lda *_Key
03DD 87 psha
03DE CD0000 jsr _Discriminant
03E1 A701 ais #1
03E3 95 tsx
03E4 B700 sta *__r1
03E6 2741 beq L122
03E8 ; { Keyvalue=Key-0x30;
03E8 B603 lda *_Key
03EA A030 sub #48
03EC E73B sta 59,X
03EE ; Transmission(Keyvalue,(unsigned char *) alarm,(1+l),(4+k));
03EE B602 lda *_k
03F0 AB04 add #4
03F2 87 psha
03F3 B601 lda *_l
03F5 AB01 add #1
03F7 87 psha
03F8 A60D lda #<_alarm
03FA 87 psha
03FB A60D lda #>_alarm
03FD 87 psha
03FE E63B lda 59,X
0400 87 psha
0401 CD0000 jsr _Transmission
0404 A705 ais #5
0406 ; Change2(); //将数组alarm组合存储到数组Tdate2
0406 CD0000 jsr _Change2
0409 ; Controle2(); //控制闹钟的日期时间合法
0409 CD0000 jsr _Controle2
040C ; Lcdshow((unsigned char *)alarm);
040C A60D lda #<_alarm
040E 87 psha
040F A60D lda #>_alarm
0411 87 psha
0412 CD0000 jsr _Lcdshow
0415 A702 ais #2
0417 ; LcdShowCursor((1+l),(4+k));
0417 B602 lda *_k
0419 AB04 add #4
041B 87 psha
041C B601 lda *_l
041E AB01 add #1
0420 87 psha
0421 CD0000 jsr _LcdShowCursor
0424 A702 ais #2
0426 95 tsx
0427 ; Key=0;
0427 3F03 clr *_Key
0429 ; }
0429 L122:
0429 L94:
0429 CC032C jmp L93
042C X1:
042C ;
042C ; }
042C ; if(Key=='2') //选择2. Close Alarm
042C B603 lda *_Key
042E A132 cmp #50
0430 2606 bne L124
0432 ; { o=0; //关闹钟
0432 3F00 clr *_o
0434 ; Key=0;
0434 3F03 clr *_Key
0436 ; goto BEGING;
0436 2003 bra L18
0438 L124:
0438 ; }
0438 ; }
0438 L91:
0438 ; }
0438 L89:
0438 L52:
0438 CC0197 jmp L51
043B X2:
043B ;
043B ;
043B ;
043B ; }
043B ;
043B ; }
043B L48:
043B L18:
043B CC00CA jmp L17
043E X3:
043E L1:
043E A73C ais #60
0440 .dbline 0 ; func end
0440 81 rts
.area bss
0000 _o::
0000 .blkb 1
0001 _l::
0001 .blkb 1
0002 _k::
0002 .blkb 1
0003 _Key::
0003 .blkb 1
0004 _Ttime2::
0004 .blkb 3
0007 _Tdate2::
0007 .blkb 6
000D _alarm::
000D .blkb 14
001B _Ttime::
001B .blkb 3
001E _Tdate::
001E .blkb 6
0024 _time::
0024 .blkb 14
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -