📄 main.lis
字号:
0154 ; Ttime[0]==Ttime2[0]&&Ttime[1]==Ttime2[1]&&Ttime[2]==Ttime2[2])
0154 ; { for(t=0;t<15;t++) //闹钟
0154 6F3A clr 58,X
0156 200D bra L47
0158 L44:
0158 1200 bset #1,0
015A CD0000 jsr _Delay
015D 1300 bclr #1,0
015F CD0000 jsr _Delay
0162 95 tsx
0163 L45:
0163 6C3A inc 58,X
0165 L47:
0165 E63A lda 58,X
0167 A10F cmp #15
0169 25ED blo L44
016B ; { Light_P|=1<<Light_Pin; //蜂鸣器“鸣”
016B ; Delay(); //延时
016B ; Light_P&=~(1<<Light_Pin); //蜂鸣器“停”
016B ; Delay(); //延时
016B ; }
016B ; }
016B L34:
016B ; if(Key=='A') //弹出菜单
016B B603 lda *_Key
016D A141 cmp #65
016F 2703 beq X4
0171 CC043B jmp L48
0174 X4:
0174 ; {
0174 L50:
0174 ; MENU: LcdShowString((unsigned char *)str1,11,1); //显示菜单:1. Set Time;
0174 A601 lda #1
0176 87 psha
0177 A60B lda #11
0179 87 psha
017A AF0D aix #13
017C 89 pshx
017D 8B pshh
017E CD0000 jsr _LcdShowString
0181 A704 ais #4
0183 95 tsx
0184 ; LcdShowString((unsigned char *)str2,12,2); // 2. Set Alarm
0184 A602 lda #2
0186 87 psha
0187 A60C lda #12
0189 87 psha
018A 89 pshx
018B 8B pshh
018C CD0000 jsr _LcdShowString
018F A704 ais #4
0191 95 tsx
0192 ; Key=0;
0192 3F03 clr *_Key
0194 CC0438 jmp L52
0197 L51:
0197 ; while(1)
0197 ; { if(Key=='B') //返回
0197 B603 lda *_Key
0199 A142 cmp #66
019B 2605 bne L54
019D ; { Key=0;
019D 3F03 clr *_Key
019F ; goto BEGING;
019F CC043B jmp L18
01A2 L54:
01A2 ; }
01A2 ; if(Key=='1') //选择子菜单1
01A2 B603 lda *_Key
01A4 A131 cmp #49
01A6 2703 beq X5
01A8 CC02D0 jmp L56
01AB X5:
01AB ; { Lcdshow((unsigned char *)time);
01AB A624 lda #<_time
01AD 87 psha
01AE A624 lda #>_time
01B0 87 psha
01B1 CD0000 jsr _Lcdshow
01B4 A702 ais #2
01B6 ; LcdShowCursor(1,4); //光标初始位置(1,4),第一行第四列
01B6 A604 lda #4
01B8 87 psha
01B9 A601 lda #1
01BB 87 psha
01BC CD0000 jsr _LcdShowCursor
01BF A702 ais #2
01C1 95 tsx
01C2 ; k=1;l=1;
01C2 A601 lda #1
01C4 B702 sta *_k
01C6 A601 lda #1
01C8 B701 sta *_l
01CA ; Key=0;
01CA 3F03 clr *_Key
01CC CC02CD jmp L59
01CF L58:
01CF ; while(1)
01CF ; { if(Key=='#') //光标右移
01CF B603 lda *_Key
01D1 A123 cmp #35
01D3 2660 bne L61
01D5 ; { ++k;
01D5 3C02 inc *_k
01D7 ; if(l%2==0) //现在光标在第一行
01D7 B601 lda *_l
01D9 AE02 ldx #2
01DB 8C clrh
01DC 52 div
01DD 8B pshh
01DE 86 pula
01DF 95 tsx
01E0 4D tsta
01E1 2628 bne L63
01E3 B602 lda *_k
01E5 A104 cmp #4
01E7 2706 beq L67
01E9 B602 lda *_k
01EB A107 cmp #7
01ED 2602 bne L65
01EF L67:
01EF ; { if(k==4||k==7) ++k;
01EF 3C02 inc *_k
01F1 L65:
01F1 ; if(k>9) k=0; //现在光标在末端
01F1 B602 lda *_k
01F3 A109 cmp #9
01F5 2302 bls L68
01F7 3F02 clr *_k
01F9 L68:
01F9 ; LcdShowCursor((1+l),(4+k));
01F9 B602 lda *_k
01FB AB04 add #4
01FD 87 psha
01FE B601 lda *_l
0200 AB01 add #1
0202 87 psha
0203 CD0000 jsr _LcdShowCursor
0206 A702 ais #2
0208 95 tsx
0209 ; }
0209 2028 bra L64
020B L63:
020B B602 lda *_k
020D A103 cmp #3
020F 2706 beq L72
0211 B602 lda *_k
0213 A106 cmp #6
0215 2602 bne L70
0217 L72:
0217 ; else //现在光标在第二行
0217 ; { if(k==3||k==6) ++k;
0217 3C02 inc *_k
0219 L70:
0219 ; if(k>8) k=1; //现在光标在末端
0219 B602 lda *_k
021B A108 cmp #8
021D 2304 bls L73
021F A601 lda #1
0221 B702 sta *_k
0223 L73:
0223 ; LcdShowCursor((1+l),(4+k));
0223 B602 lda *_k
0225 AB04 add #4
0227 87 psha
0228 B601 lda *_l
022A AB01 add #1
022C 87 psha
022D CD0000 jsr _LcdShowCursor
0230 A702 ais #2
0232 95 tsx
0233 ; }
0233 L64:
0233 ; Key=0;
0233 3F03 clr *_Key
0235 ;
0235 ; }
0235 L61:
0235 ; if(Key=='*') //光标下移
0235 B603 lda *_Key
0237 A12A cmp #42
0239 262A bne L75
023B ; { ++l;
023B 3C01 inc *_l
023D ; if(k==0) ++k; //现在光标在第一行始端
023D B602 lda *_k
023F 2602 bne L77
0241 3C02 inc *_k
0243 L77:
0243 ; if(k==9) --k; //现在光标在第一行末端
0243 B602 lda *_k
0245 A109 cmp #9
0247 2602 bne L79
0249 3A02 dec *_k
024B L79:
024B ; if(l>1) l=0; //现在光标在第二行
024B B601 lda *_l
024D A101 cmp #1
024F 2302 bls L81
0251 3F01 clr *_l
0253 L81:
0253 ; LcdShowCursor((1+l),(4+k));
0253 B602 lda *_k
0255 AB04 add #4
0257 87 psha
0258 B601 lda *_l
025A AB01 add #1
025C 87 psha
025D CD0000 jsr _LcdShowCursor
0260 A702 ais #2
0262 95 tsx
0263 ; Key=0;
0263 3F03 clr *_Key
0265 ; }
0265 L75:
0265 ; if(Key=='B')
0265 B603 lda *_Key
0267 A142 cmp #66
0269 2605 bne L83
026B ; { Key=0;
026B 3F03 clr *_Key
026D ; goto MENU; //返回
026D CC0174 jmp L50
0270 L83:
0270 ; }
0270 ; if(Key=='D') //按下确定键
0270 B603 lda *_Key
0272 A144 cmp #68
0274 2605 bne L85
0276 ; { Key=0;
0276 3F03 clr *_Key
0278 ; goto BEGING;
0278 CC043B jmp L18
027B L85:
027B ; }
027B ; if(Key!=0&&Discriminant(Key))
027B B603 lda *_Key
027D 274E beq L87
027F B603 lda *_Key
0281 87 psha
0282 CD0000 jsr _Discriminant
0285 A701 ais #1
0287 95 tsx
0288 B700 sta *__r1
028A 2741 beq L87
028C ; { Keyvalue=Key-0x30;
028C B603 lda *_Key
028E A030 sub #48
0290 E73B sta 59,X
0292 ; Transmission(Keyvalue,(unsigned char *) time,(1+l),(4+k));
0292 B602 lda *_k
0294 AB04 add #4
0296 87 psha
0297 B601 lda *_l
0299 AB01 add #1
029B 87 psha
029C A624 lda #<_time
029E 87 psha
029F A624 lda #>_time
02A1 87 psha
02A2 E63B lda 59,X
02A4 87 psha
02A5 CD0000 jsr _Transmission
02A8 A705 ais #5
02AA ; Change(); //将数组time组合存储到数组Tdate
02AA CD0000 jsr _Change
02AD ; Controle(); //控制时钟的日期时间合法
02AD CD0000 jsr _Controle
02B0 ; Lcdshow((unsigned char *)time);
02B0 A624 lda #<_time
02B2 87 psha
02B3 A624 lda #>_time
02B5 87 psha
02B6 CD0000 jsr _Lcdshow
02B9 A702 ais #2
02BB ; LcdShowCursor((1+l),(4+k));
02BB B602 lda *_k
02BD AB04 add #4
02BF 87 psha
02C0 B601 lda *_l
02C2 AB01 add #1
02C4 87 psha
02C5 CD0000 jsr _LcdShowCursor
02C8 A702 ais #2
02CA 95 tsx
02CB ; Key=0;
02CB 3F03 clr *_Key
02CD ; }
02CD L87:
02CD L59:
02CD CC01CF jmp L58
02D0 X0:
02D0 ;
02D0 ; }
02D0 ;
02D0 ; }
02D0 L56:
02D0 ;
02D0 ; if(Key=='2') //选择子菜单2
02D0 B603 lda *_Key
02D2 A132 cmp #50
02D4 2703 beq X6
02D6 CC0438 jmp L89
02D9 X6:
02D9 ; { LcdShowString((unsigned char *)str3,13,1); //显示闹钟功能选择:1. Open Alarm
02D9 A601 lda #1
02DB 87 psha
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -