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

📄 clock.lst

📁 单片机开发资料光盘-双龙-686M.zip
💻 LST
📖 第 1 页 / 共 3 页
字号:
    0101 E01A      LDI	R17,0xA
    0102 91000066  LDS	R16,_time+2
    0104 D1CB      RCALL	div8s
    0105 2F10      MOV	R17,R16
    0106 E00A      LDI	R16,0xA
    0107 D1BA      RCALL	mpy8s
    0108 2E20      MOV	R2,R16
    0109 0E24      ADD	R2,R20
    010A 92200066  STS	R2,_time+2
(0111) 					}	
(0112) 				}			  
(0113) 			  break;
    010C C05D      RJMP	0x016A
(0114) 	         }
(0115)       case 4:{
(0116) 	          if(key<6)
    010D 3046      CPI	R20,6
    010E F008      BCS	0x0110
    010F C05A      RJMP	0x016A
(0117) 			    {
(0118) 				 write279(0xc8+i,key);
    0110 2F24      MOV	R18,R20
    0111 2D0A      MOV	R16,R10
    0112 5308      SUBI	R16,0x38
    0113 DF61      RCALL	_write279
(0119) 				 i--;
    0114 94AA      DEC	R10
(0120) 			     write279(0x88,0xf7);
    0115 EF27      LDI	R18,0xF7
    0116 E808      LDI	R16,0x88
    0117 DF5D      RCALL	_write279
(0121) 				 time.minute=time.minute%10+key*10;
    0118 E00A      LDI	R16,0xA
    0119 2F14      MOV	R17,R20
    011A D1A7      RCALL	mpy8s
    011B 2E20      MOV	R2,R16
    011C E01A      LDI	R17,0xA
    011D 91000065  LDS	R16,_time+1
    011F D1AE      RCALL	mod8s
    0120 2E30      MOV	R3,R16
    0121 0C32      ADD	R3,R2
    0122 92300065  STS	R3,_time+1
(0122) 				 }			  
(0123) 			  break;	        	          
    0124 C045      RJMP	0x016A
(0124) 	          }
(0125) 	  case 3:{
(0126) 	          if(key<10)
    0125 304A      CPI	R20,0xA
    0126 F008      BCS	0x0128
    0127 C042      RJMP	0x016A
(0127) 			     {
(0128) 				  write279(0xc8+i,key);
    0128 2F24      MOV	R18,R20
    0129 2D0A      MOV	R16,R10
    012A 5308      SUBI	R16,0x38
    012B DF49      RCALL	_write279
(0129) 				  i--;
    012C 94AA      DEC	R10
(0130) 			      i--;
    012D 94AA      DEC	R10
(0131) 				  write279(0x88,0xfd);
    012E EF2D      LDI	R18,0xFD
    012F E808      LDI	R16,0x88
    0130 DF44      RCALL	_write279
(0132) 				  time.minute=(time.minute/10)*10+key;
    0131 E01A      LDI	R17,0xA
    0132 91000065  LDS	R16,_time+1
    0134 D19B      RCALL	div8s
    0135 2F10      MOV	R17,R16
    0136 E00A      LDI	R16,0xA
    0137 D18A      RCALL	mpy8s
    0138 2E20      MOV	R2,R16
    0139 0E24      ADD	R2,R20
    013A 92200065  STS	R2,_time+1
(0133) 				  }			  
(0134) 			  break;	        	          
    013C C02D      RJMP	0x016A
(0135) 	         }		
(0136)       case 1:{
(0137) 	          if(key<6)
    013D 3046      CPI	R20,6
    013E F558      BCC	0x016A
(0138) 			      {
(0139) 				  write279(0xc8+i,key);
    013F 2F24      MOV	R18,R20
    0140 2D0A      MOV	R16,R10
    0141 5308      SUBI	R16,0x38
    0142 DF32      RCALL	_write279
(0140) 				  i--;
    0143 94AA      DEC	R10
(0141) 			      write279(0x88,0xfe);
    0144 EF2E      LDI	R18,0xFE
    0145 E808      LDI	R16,0x88
    0146 DF2E      RCALL	_write279
(0142) 				  time.second=time.second%10+key*10;
    0147 E00A      LDI	R16,0xA
    0148 2F14      MOV	R17,R20
    0149 D178      RCALL	mpy8s
    014A 2E20      MOV	R2,R16
    014B E01A      LDI	R17,0xA
    014C 91000064  LDS	R16,_time
    014E D17F      RCALL	mod8s
    014F 2E30      MOV	R3,R16
    0150 0C32      ADD	R3,R2
    0151 92300064  STS	R3,_time
(0143) 				  }			  
(0144) 			  break;	        	          
    0153 C016      RJMP	0x016A
(0145) 	          }
(0146) 	  case 0:{
(0147) 	          if(key<10)
    0154 304A      CPI	R20,0xA
    0155 F4A0      BCC	0x016A
(0148) 			      {
(0149) 				   write279(0xc8+i,key);
    0156 2F24      MOV	R18,R20
    0157 2D0A      MOV	R16,R10
    0158 5308      SUBI	R16,0x38
    0159 DF1B      RCALL	_write279
(0150) 				   i=7;
    015A E087      LDI	R24,7
    015B 2EA8      MOV	R10,R24
(0151) 				   write279(0x88,0x7f);
    015C E72F      LDI	R18,0x7F
    015D E808      LDI	R16,0x88
    015E DF16      RCALL	_write279
(0152) 				   time.second=(time.second/10)*10+key;
    015F E01A      LDI	R17,0xA
    0160 91000064  LDS	R16,_time
    0162 D16D      RCALL	div8s
    0163 2F10      MOV	R17,R16
    0164 E00A      LDI	R16,0xA
    0165 D15C      RCALL	mpy8s
    0166 2E20      MOV	R2,R16
    0167 0E24      ADD	R2,R20
    0168 92200064  STS	R2,_time
(0153) 				  }			  
(0154) 			  break;	        	          
(0155) 	         }		
(0156) 	   }
(0157)    while((PINC&0x02)==0)//按键释放检查
(0158)            ;	   	 		 
    016A 9B99      SBIS	P13,1
    016B CFFE      RJMP	0x016A
(0159)    }    
(0160)  while(key!=0x17);
    016C 3147      CPI	R20,0x17
    016D F009      BEQ	0x016F
    016E CF2F      RJMP	0x009E
(0161)  write279(0x88,0xff);
    016F EF2F      LDI	R18,0xFF
    0170 E808      LDI	R16,0x88
    0171 DF03      RCALL	_write279
(0162) }
    0172 D1A1      RCALL	pop_gset5
    0173 9508      RET
(0163) /*       设置定时器1及中断系统     */
(0164) void opentime()
(0165) {
(0166)  
(0167)  TCNT1=0x85ee;
_opentime:
    0174 D1AF      RCALL	<created procedures>
(0168)  TCCR1A=0;
    0175 2422      CLR	R2
    0176 BC2F      OUT	P2F,R2
(0169)  TCCR1B=0x04;
    0177 E084      LDI	R24,4
    0178 BD8E      OUT	P2E,R24
(0170)  TCNT0=0x83;
    0179 E883      LDI	R24,0x83
    017A BF82      OUT	P32,R24
(0171)  TCCR0=0x03;
    017B E083      LDI	R24,3
    017C BF83      OUT	P33,R24
(0172)  TIMSK=0x04;
    017D E084      LDI	R24,4
    017E BF89      OUT	P39,R24
(0173)  SREG|=0x80;
    017F 9478      BSET	7
(0174) }
    0180 9508      RET
(0175) /*        显示刷新          */
(0176) void display(void)
(0177)    {
(0178)     write279(0xc8,time.second%10);
_display:
    0181 E01A      LDI	R17,0xA
    0182 91000064  LDS	R16,_time
    0184 D149      RCALL	mod8s
    0185 2F20      MOV	R18,R16
    0186 EC08      LDI	R16,0xC8
    0187 DEED      RCALL	_write279
(0179)     write279(0xc9,time.second/10);
    0188 E01A      LDI	R17,0xA
    0189 91000064  LDS	R16,_time
    018B D144      RCALL	div8s
    018C 2F20      MOV	R18,R16
    018D EC09      LDI	R16,0xC9
    018E DEE6      RCALL	_write279
(0180)     write279(0x92,1);
    018F E021      LDI	R18,1
    0190 E902      LDI	R16,0x92
    0191 DEE3      RCALL	_write279
(0181)     write279(0xcb,time.minute%10);
    0192 E01A      LDI	R17,0xA
    0193 91000065  LDS	R16,_time+1
    0195 D138      RCALL	mod8s
    0196 2F20      MOV	R18,R16
    0197 EC0B      LDI	R16,0xCB
    0198 DEDC      RCALL	_write279
(0182)     write279(0xcc,time.minute/10);
    0199 E01A      LDI	R17,0xA
    019A 91000065  LDS	R16,_time+1
    019C D133      RCALL	div8s
    019D 2F20      MOV	R18,R16
    019E EC0C      LDI	R16,0xCC
    019F DED5      RCALL	_write279
(0183)     write279(0x95,1);
    01A0 E021      LDI	R18,1
    01A1 E905      LDI	R16,0x95
    01A2 DED2      RCALL	_write279
(0184)     write279(0xce,time.hour%10);
    01A3 E01A      LDI	R17,0xA
    01A4 91000066  LDS	R16,_time+2
    01A6 D127      RCALL	mod8s
    01A7 2F20      MOV	R18,R16
    01A8 EC0E      LDI	R16,0xCE
    01A9 DECB      RCALL	_write279
(0185)     write279(0xcf,time.hour/10);
    01AA E01A      LDI	R17,0xA
    01AB 91000066  LDS	R16,_time+2
    01AD D122      RCALL	div8s
    01AE 2F20      MOV	R18,R16
    01AF EC0F      LDI	R16,0xCF
    01B0 DEC4      RCALL	_write279
(0186)    }
    01B1 9508      RET
(0187) /*        正计时            */   
(0188) void inctime(void)
(0189)    {
(0190)     if(time.second<59)
_inctime:
    01B2 91800064  LDS	R24,_time
    01B4 338B      CPI	R24,0x3B
    01B5 F434      BGE	0x01BC
(0191) 	   time.second++;
    01B6 91800064  LDS	R24,_time
    01B8 5F8F      SUBI	R24,0xFF
    01B9 93800064  STS	R24,_time
    01BB C01D      RJMP	0x01D9
(0192) 	else
(0193) 	  {
(0194) 	   time.second=0;
    01BC 2422      CLR	R2
    01BD 92200064  STS	R2,_time
(0195) 	   if(time.minute<59)
    01BF 91800065  LDS	R24,_time+1
    01C1 338B      CPI	R24,0x3B
    01C2 F434      BGE	0x01C9
(0196) 	     time.minute++;
    01C3 91800065  LDS	R24,_time+1
    01C5 5F8F      SUBI	R24,0xFF
    01C6 93800065  STS	R24,_time+1
    01C8 C010      RJMP	0x01D9
(0197) 	   else
(0198) 	     {
(0199) 		  time.minute=0;
    01C9 2422      CLR	R2
    01CA 92200065  STS	R2,_time+1
(0200) 		  if(time.hour<23)
    01CC 91800066  LDS	R24,_time+2
    01CE 3187      CPI	R24,0x17
    01CF F434      BGE	0x01D6
(0201) 		    time.hour++;
    01D0 91800066  LDS	R24,_time+2
    01D2 5F8F      SUBI	R24,0xFF
    01D3 93800066  STS	R24,_time+2
    01D5 C003      RJMP	0x01D9
(0202) 		  else
(0203) 		    time.hour=0;	
    01D6 2422      CLR	R2
    01D7 92200066  STS	R2,_time+2
(0204) 		 }	 
(0205) 	  }   
(0206)    }
    01D9 9508      RET
(0207) /*          倒计时           */   
(0208) void dectime(void)
(0209)    {
(0210)     if(time.second>0)
_dectime:
    01DA 2422      CLR	R2
    01DB 90300064  LDS	R3,_time
    01DD 1423      CP	R2,R3
    01DE F434      BGE	0x01E5
(0211) 	   time.second--;
    01DF 91800064  LDS	R24,_time
    01E1 5081      SUBI	R24,1
    01E2 93800064  STS	R24,_time
    01E4 C01F      RJMP	0x0204
(0212) 	else
(0213) 	  {
(0214) 	   time.second=59;
    01E5 E38B      LDI	R24,0x3B
    01E6 93800064  STS	R24,_time
(0215) 	   if(time.minute>0)
    01E8 2422      CLR	R2
    01E9 90300065  LDS	R3,_time+1
    01EB 1423      CP	R2,R3
    01EC F434      BGE	0x01F3
(0216)   	      time.minute--;
    01ED 91800065  LDS	R24,_time+1
    01EF 5081      SUBI	R24,1
    01F0 93800065  STS	R24,_time+1
    01F2 C011      RJMP	0x0204
(0217) 	   else
(0218) 	     {
(0219) 		  time.minute=59;
    01F3 E38B      LDI	R24,0x3B
    01F4 93800065  STS	R24,_time+1
(0220) 		  if(time.hour>0)
    01F6 2422      CLR	R2
    01F7 90300066  LDS	R3,_time+2
    01F9 1423      CP	R2,R3
    01FA F434      BGE	0x0201
(0221) 		    time.hour--;
    01FB 91800066  LDS	R24,_time+2
    01FD 5081      SUBI	R24,1
    01FE 93800066  STS	R24,_time+2
    0200 C003      RJMP	0x0204
(0222) 		  else
(0223) 		    time.hour=23;	
    0201 E187      LDI	R24,0x17
    0202 93800066  STS	R24,_time+2
(0224) 		 }	 
(0225) 	  }
(0226)    }                        
    0204 9508      RET
(0227) /*启动时为正计时,按shift键进行正计时和倒计时切换    */
(0228) /*启动时允许整点报时,按0~F中任意键一次关闭,二次打开*/
(0229) void main(void)
(0230) {
(0231)  unsigned char temp,bpflag=0;
_main:
  temp                 --> R22
  bpflag               --> R20
    0205 2744      CLR	R20
(0232)  MCUCR=0x00;
    0206 2422      CLR	R2
    0207 BE25      OUT	P35,R2
(0233)  DDRC=0b00011101;
    0208 E18D      LDI	R24,0x1D
    0209 BB84      OUT	P14,R24

⌨️ 快捷键说明

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