⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lis

📁 摩托罗拉的时钟的原代码
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 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 + -