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

📄 main.lis

📁 用Freescale半导体公司HC08系列单片机制作了电子时钟,具有整点报时、闹钟、时间日期设置等功能(c语言编写)
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 00E2           ; 	     {
 00E2           ; 	      unsigned char h;
 00E2           ; 	      for(h=0;h<=2;h++)
 00E2           ; 	      {
 00E2           ; 	         PTC|=1<<PTC1;
 00E2           ; 	         delay();
 00E2           ; 	         PTC|=~(1<<PTC1);
 00E2           ; 	         delay();
 00E2           ; 	       }
 00E2           ; 	      
 00E2           ; 	     }*/
 00E2           ; 	 
 00E2           ; 	 
 00E2           ; 	 //闹钟程序    
 00E2           ; 	  if((time[13]==alarm[13])&&(time[12]==alarm[12])&&(time[11]==alarm[11])&&(time[10]==alarm[10])&&(time[9]==alarm[9])&&(time[8]==alarm[8])&&(Alarm_Flag==1))
 00E2 B61D              lda *_time+13
 00E4 B10F              cmp *_alarm+13
 00E6 263F              bne L60
 00E8 B61C              lda *_time+12
 00EA B10E              cmp *_alarm+12
 00EC 2639              bne L60
 00EE B61B              lda *_time+11
 00F0 B10D              cmp *_alarm+11
 00F2 2633              bne L60
 00F4 B61A              lda *_time+10
 00F6 B10C              cmp *_alarm+10
 00F8 262D              bne L60
 00FA B619              lda *_time+9
 00FC B10B              cmp *_alarm+9
 00FE 2627              bne L60
 0100 B618              lda *_time+8
 0102 B10A              cmp *_alarm+8
 0104 2621              bne L60
 0106 B602              lda *_Alarm_Flag
 0108 A101              cmp #1
 010A 261B              bne L60
 010C           ;            {
 010C           ;             //unsigned char h;
 010C           ;             for(h=0;h<=2;h++)
 010C 6F03              clr 3,X
 010E 2011              bra L77
 0110           L74:
 0110 1202              bset #1,0x2
 0112 CD0000            jsr _delay
 0115 B602              lda 0x2
 0117 AAFD              ora #-3
 0119 B702              sta 0x2
 011B CD0000            jsr _delay
 011E 95                tsx
 011F           L75:
 011F 6C03              inc 3,X
 0121           L77:
 0121 E603              lda 3,X
 0123 A102              cmp #2
 0125 23E9              bls L74
 0127           ;             {
 0127           ;                PTC|=1<<PTC1;
 0127           ;                delay();
 0127           ;                PTC|=~(1<<PTC1);
 0127           ;                delay();
 0127           ;                 
 0127           ;              }
 0127           ;            } 
 0127           L60:
 0127           ; 	 
 0127           ; 	       
 0127           ; 	  if(Key=='A')   //弹出菜单
 0127 B601              lda *_Key
 0129 A141              cmp #65
 012B 2703              beq X4
 012D CC032C            jmp L78
 0130           X4:
 0130           ; 	     { 
 0130           L80:
 0130           ; MENU:	   LcdShowMenu();   //显示菜单:1. Set Time;2. Set Alarm
 0130 CD0000            jsr _LcdShowMenu
 0133 95                tsx
 0134           ;              Key=0;
 0134 3F01              clr *_Key
 0136 CC0329            jmp L82
 0139           L81:
 0139           ; 	       while(1)
 0139           ; 	       { 
 0139           ; 	         if(Key=='B')     //返回
 0139 B601              lda *_Key
 013B A142              cmp #66
 013D 2605              bne L84
 013F           ;                { 
 013F           ;                  Key=0;
 013F 3F01              clr *_Key
 0141           ;                  goto BEGING;
 0141 CC032C            jmp L40
 0144           L84:
 0144           ;                }
 0144           ; 	         if(Key=='1')    //选择子菜单1
 0144 B601              lda *_Key
 0146 A131              cmp #49
 0148 2703              beq X5
 014A CC0230            jmp L86
 014D           X5:
 014D           ; 	           { 
 014D           ;                  Lcdshowtime();
 014D CD0000            jsr _Lcdshowtime
 0150           ;                    LcdShowCursor();    //开光标显示,闪烁
 0150 CD0000            jsr _LcdShowCursor
 0153           ;                    MoveCursor(1,4);    //光标初始位置(1,4),第一行第四列
 0153 A604              lda #4
 0155 87                psha
 0156 A601              lda #1
 0158 87                psha
 0159 CD0000            jsr _MoveCursor
 015C A702              ais #2
 015E 95                tsx
 015F           ;                    Key=0;
 015F 3F01              clr *_Key
 0161 CC022D            jmp L89
 0164           L88:
 0164           ; 	             while(1)
 0164           ; 	              { 
 0164           ; 	               
 0164           ;                     if(Key=='#')      //光标右移
 0164 B601              lda *_Key
 0166 A123              cmp #35
 0168 2644              bne L91
 016A           ;                        { 
 016A           ;                          ++k;          //K为关标右移次数
 016A 3C00              inc *_k
 016C           ;                          if(l%2==0)     //现在光标在第一行 l为光标所在行数
 016C B601              lda *_l
 016E AE02              ldx #2
 0170 8C                clrh
 0171 52                div
 0172 8B                pshh
 0173 86                pula
 0174 95                tsx
 0175 4D                tsta
 0176 261A              bne L93
 0178           ;                           {
 0178           ;                             if(k>9) k=0;  //光标在末端时返回到起始位置
 0178 B600              lda *_k
 017A A109              cmp #9
 017C 2302              bls L95
 017E 3F00              clr *_k
 0180           L95:
 0180           ; 	                      MoveCursor((1+l),(4+k));
 0180 B600              lda *_k
 0182 AB04              add #4
 0184 87                psha
 0185 B601              lda *_l
 0187 AB01              add #1
 0189 87                psha
 018A CD0000            jsr _MoveCursor
 018D A702              ais #2
 018F 95                tsx
 0190           ;                            }
 0190 201A              bra L94
 0192           L93:
 0192           ; 	                   else     //现在光标在第二行
 0192           ; 	                    {
 0192           ; 	                      if(k>8) k=1;  //现在光标在末端
 0192 B600              lda *_k
 0194 A108              cmp #8
 0196 2304              bls L97
 0198 A601              lda #1
 019A B700              sta *_k
 019C           L97:
 019C           ; 	                      MoveCursor((1+l),(4+k));
 019C B600              lda *_k
 019E AB04              add #4
 01A0 87                psha
 01A1 B601              lda *_l
 01A3 AB01              add #1
 01A5 87                psha
 01A6 CD0000            jsr _MoveCursor
 01A9 A702              ais #2
 01AB 95                tsx
 01AC           ;                            }
 01AC           L94:
 01AC           ; 	                   Key=0;
 01AC 3F01              clr *_Key
 01AE           ;                          
 01AE           ;                         }
 01AE           L91:
 01AE           ; 	                if(Key=='*')     //光标下移
 01AE B601              lda *_Key
 01B0 A12A              cmp #42
 01B2 261C              bne L99
 01B4           ;                         {
 01B4           ;                           ++l;
 01B4 3C01              inc *_l
 01B6           ;                         //  if(k==0) k++;   //现在光标在第一行始端
 01B6           ;                         //  if(k==9) k--;   //现在光标在第一行末端
 01B6           ;                           if(l>1) l=0;    //现在光标在第二行
 01B6 B601              lda *_l
 01B8 A101              cmp #1
 01BA 2302              bls L101
 01BC 3F01              clr *_l
 01BE           L101:
 01BE           ; 	                    MoveCursor((1+l),(4+k));                 
 01BE B600              lda *_k
 01C0 AB04              add #4
 01C2 87                psha
 01C3 B601              lda *_l
 01C5 AB01              add #1
 01C7 87                psha
 01C8 CD0000            jsr _MoveCursor
 01CB A702              ais #2
 01CD 95                tsx
 01CE           ;                           Key=0;
 01CE 3F01              clr *_Key
 01D0           ;                         }
 01D0           L99:
 01D0           ; 	                if(Key=='B')
 01D0 B601              lda *_Key
 01D2 A142              cmp #66
 01D4 2605              bne L103
 01D6           ;                         {
 01D6           ;                           Key=0;
 01D6 3F01              clr *_Key
 01D8           ;                           goto MENU;     //返回
 01D8 CC0130            jmp L80
 01DB           L103:
 01DB           ; 	                  } 
 01DB           ; 	                if(Key=='D')       //按下确定键
 01DB B601              lda *_Key
 01DD A144              cmp #68
 01DF 2605              bne L105
 01E1           ;                         {
 01E1           ;                           Key=0;
 01E1 3F01              clr *_Key
 01E3           ;                           goto BEGING;
 01E3 CC032C            jmp L40
 01E6           L105:
 01E6           ; 	                  }
 01E6           ; 	                if(Key!=0&&Discriminant(Key))     //Discriminant为判断是否按下数字键
 01E6 B601              lda *_Key
 01E8 2743              beq L107
 01EA B601              lda *_Key
 01EC 87                psha
 01ED CD0000            jsr _Discriminant
 01F0 A701              ais #1
 01F2 95                tsx
 01F3 B700              sta *__r1
 01F5 2736              beq L107
 01F7           ;                         { 
 01F7           ;                           Keyvalue=Key-0x30;      
 01F7 B601              lda *_Key
 01F9 A030              sub #48
 01FB E704              sta 4,X
 01FD           ;                           Transmission(Keyvalue, (unsigned char *)time,(1+l),(4+k));
 01FD B600              lda *_k
 01FF AB04              add #4
 0201 87                psha
 0202 B601              lda *_l
 0204 AB01              add #1
 0206 87                psha
 0207 A610              lda #<_time
 0209 87                psha
 020A A610              lda #>_time
 020C 87                psha
 020D E604              lda 4,X

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -