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

📄 clock.lst

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

⌨️ 快捷键说明

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