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

📄 ds1302.lst

📁 时钟芯片将给显示时间
💻 LST
📖 第 1 页 / 共 3 页
字号:
    01AF 24AA      CLR	R10
    01B0 94A3      INC	R10
    01B1 C016      RJMP	0x01C8
(0271)       { dm[4-i]=m%10;
    01B2 E014      LDI	R17,4
    01B3 191A      SUB	R17,R10
    01B4 E002      LDI	R16,2
    01B5 0201      MULS	R16,R17
    01B6 01F0      MOVW	R30,R0
    01B7 01CE      MOVW	R24,R28
    01B8 0FE8      ADD	R30,R24
    01B9 1FF9      ADC	R31,R25
    01BA E02A      LDI	R18,0xA
    01BB E030      LDI	R19,0
    01BC 2F06      MOV	R16,R22
    01BD 2711      CLR	R17
    01BE 940E0222  CALL	mod16s
    01C0 8311      STD	Z+1,R17
    01C1 8300      STD	Z+0,R16
(0272)          m=m/10;
    01C2 E01A      LDI	R17,0xA
    01C3 2F06      MOV	R16,R22
    01C4 940E025E  CALL	div8u
    01C6 2F60      MOV	R22,R16
    01C7 94A3      INC	R10
    01C8 2D8A      MOV	R24,R10
    01C9 3083      CPI	R24,3
    01CA F338      BCS	0x01B2
(0273)        }
(0274)      for(i=3;i<5;i++)
    01CB E083      LDI	R24,3
    01CC 2EA8      MOV	R10,R24
    01CD C016      RJMP	0x01E4
(0275)       { dm[4-i]=n%10;
    01CE E014      LDI	R17,4
    01CF 191A      SUB	R17,R10
    01D0 E002      LDI	R16,2
    01D1 0201      MULS	R16,R17
    01D2 01F0      MOVW	R30,R0
    01D3 01CE      MOVW	R24,R28
    01D4 0FE8      ADD	R30,R24
    01D5 1FF9      ADC	R31,R25
    01D6 E02A      LDI	R18,0xA
    01D7 E030      LDI	R19,0
    01D8 2F04      MOV	R16,R20
    01D9 2711      CLR	R17
    01DA 940E0222  CALL	mod16s
    01DC 8311      STD	Z+1,R17
    01DD 8300      STD	Z+0,R16
(0276)         n=n/10;
    01DE E01A      LDI	R17,0xA
    01DF 2F04      MOV	R16,R20
    01E0 940E025E  CALL	div8u
    01E2 2F40      MOV	R20,R16
    01E3 94A3      INC	R10
    01E4 2D8A      MOV	R24,R10
    01E5 3085      CPI	R24,5
    01E6 F338      BCS	0x01CE
(0277)        }
(0278)     for(i=0;i<4;i++)
    01E7 24AA      CLR	R10
    01E8 C00C      RJMP	0x01F5
(0279)       { show(dm[i],i);
    01E9 2D2A      MOV	R18,R10
    01EA E082      LDI	R24,2
    01EB 9D8A      MUL	R24,R10
    01EC 01F0      MOVW	R30,R0
    01ED 01CE      MOVW	R24,R28
    01EE 0FE8      ADD	R30,R24
    01EF 1FF9      ADC	R31,R25
    01F0 8100      LDD	R16,Z+0
    01F1 DE81      RCALL	_show
(0280)        
(0281) 		PORTD=0XFF;
    01F2 EF8F      LDI	R24,0xFF
    01F3 BB82      OUT	0x12,R24
    01F4 94A3      INC	R10
    01F5 2D8A      MOV	R24,R10
    01F6 3084      CPI	R24,4
    01F7 F388      BCS	0x01E9
    01F8 9628      ADIW	R28,0x8
    01F9 940E0287  CALL	pop_gset3
    01FB 9508      RET
_main:
  shift                --> Y+1
  setdat               --> Y+1
  setadd               --> Y+1
  settime              --> Y+2
  gettime              --> Y+0
    01FC 9724      SBIW	R28,4
(0282)        }
(0283)   
(0284)   
(0285)   
(0286) }
(0287) /*******************************************
(0288) 函数名称: main
(0289) 功    能: 1. 在1602液晶上显示当前时间 2.可以设置时间(M1-M9为数字0-9,M13为设置模式和显示模式选择,M14为当前设置位选择)
(0290) 参    数: 无
(0291) 返回值  : 无
(0292) /********************************************/
(0293) void main(void)
(0294) {
(0295)  	
(0296) 	
(0297) 	uchar setadd,setdat,shift;	  //setadd指定将当前数值送入DS1302的哪个寄存器
(0298)  	   						  //setdat是当前设置的数值,即被送入DS1302指定寄存器的数
(0299) 							  //shift来实现十位和各位的设置相互独立(因为十位和个位是在一个寄存器里的)
(0300)  //uchar dis_x,dis_y;			  //存储1602液晶当前光标的位置
(0301)  uchar settime[2]={0X59,0X50};//设置的秒,分,时,日,月,星期,年
    01FD E784      LDI	R24,0x74
    01FE E090      LDI	R25,0
    01FF 01FE      MOVW	R30,R28
    0200 9632      ADIW	R30,2
    0201 E002      LDI	R16,2
    0202 E010      LDI	R17,0
    0203 93FA      ST	R31,-Y
    0204 93EA      ST	R30,-Y
    0205 939A      ST	R25,-Y
    0206 938A      ST	R24,-Y
    0207 940E02AF  CALL	asgncblk
(0302)  uchar gettime[2]={0X00,0X00};//保存当前时间的数组
    0209 E786      LDI	R24,0x76
    020A E090      LDI	R25,0
    020B 01FE      MOVW	R30,R28
    020C E002      LDI	R16,2
    020D E010      LDI	R17,0
    020E 93FA      ST	R31,-Y
    020F 93EA      ST	R30,-Y
    0210 939A      ST	R25,-Y
    0211 938A      ST	R24,-Y
    0212 940E02AF  CALL	asgncblk
(0303)  //LCD1602_initial(); 		//初始化1602液晶
(0304)  DS1302_portinit();			//初始化DS1302的三根数据线
    0214 DEAF      RCALL	_DS1302_portinit
(0305)  DS1302_init();				//启动振荡器,DS1302开始工作 
    0215 DF7D      RCALL	_DS1302_init
(0306)  DS1302_setT(settime);		//设置初始时间
    0216 018E      MOVW	R16,R28
    0217 5F0E      SUBI	R16,0xFE
    0218 4F1F      SBCI	R17,0xFF
    0219 DF28      RCALL	_DS1302_setT
    021A C004      RJMP	0x021F
(0307)  				
(0308) 			//以下程序完成显示和设置时间
(0309)  while(1)
(0310)  {
(0311)    DS1302_getT(gettime);	//获得当前时间
    021B 018E      MOVW	R16,R28
    021C DF45      RCALL	_DS1302_getT
(0312)    
(0313)    Disp_time(gettime);		//显示当前时间
FILE: <library>
    021D 018E      MOVW	R16,R28
    021E DF89      RCALL	_Disp_time
    021F CFFB      RJMP	0x021B
    0220 9624      ADIW	R28,4
    0221 9508      RET
mod16s:
    0222 9468      BSET	6
    0223 92DA      ST	R13,-Y
    0224 2ED1      MOV	R13,R17
    0225 C004      RJMP	0x022A
div16s:
    0226 94E8      BCLR	6
    0227 92DA      ST	R13,-Y
    0228 2ED1      MOV	R13,R17
    0229 26D3      EOR	R13,R19
    022A FF17      SBRS	R17,7
    022B C004      RJMP	0x0230
    022C 9510      COM	R17
    022D 9500      COM	R16
    022E 5F0F      SUBI	R16,0xFF
    022F 4F1F      SBCI	R17,0xFF
    0230 FF37      SBRS	R19,7
    0231 C004      RJMP	0x0236
    0232 9530      COM	R19
    0233 9520      COM	R18
    0234 5F2F      SUBI	R18,0xFF
    0235 4F3F      SBCI	R19,0xFF
    0236 940E0243  CALL	xdiv16u
    0238 FED7      SBRS	R13,7
    0239 C004      RJMP	0x023E
    023A 9510      COM	R17
    023B 9500      COM	R16
    023C 5F0F      SUBI	R16,0xFF
    023D 4F1F      SBCI	R17,0xFF
    023E 90D9      LD	R13,Y+
    023F 9508      RET
mod16u:
    0240 9468      BSET	6
    0241 C001      RJMP	xdiv16u
div16u:
    0242 94E8      BCLR	6
xdiv16u:
    0243 92EA      ST	R14,-Y
    0244 92FA      ST	R15,-Y
    0245 938A      ST	R24,-Y
    0246 24EE      CLR	R14
    0247 24FF      CLR	R15
    0248 E180      LDI	R24,0x10
    0249 0F00      LSL	R16
    024A 1F11      ROL	R17
    024B 1CEE      ROL	R14
    024C 1CFF      ROL	R15
    024D 16E2      CP	R14,R18
    024E 06F3      CPC	R15,R19
    024F F018      BCS	0x0253
    0250 1AE2      SUB	R14,R18
    0251 0AF3      SBC	R15,R19
    0252 9503      INC	R16
    0253 958A      DEC	R24
    0254 F7A1      BNE	0x0249
    0255 F416      BRTC	0x0258
    0256 2D0E      MOV	R16,R14
    0257 2D1F      MOV	R17,R15
    0258 9189      LD	R24,Y+
    0259 90F9      LD	R15,Y+
    025A 90E9      LD	R14,Y+
    025B 9508      RET
mod8u:
    025C 9468      BSET	6
    025D C001      RJMP	xdiv8u
div8u:
    025E 94E8      BCLR	6
xdiv8u:
    025F 932A      ST	R18,-Y
    0260 92FA      ST	R15,-Y
    0261 92EA      ST	R14,-Y
    0262 24FF      CLR	R15
    0263 24EE      CLR	R14
    0264 E120      LDI	R18,0x10
    0265 0F00      LSL	R16
    0266 1CFF      ROL	R15
    0267 1CEE      ROL	R14
    0268 16E1      CP	R14,R17
    0269 F010      BCS	0x026C
    026A 1AE1      SUB	R14,R17
    026B 9503      INC	R16
    026C 952A      DEC	R18
    026D F7B9      BNE	0x0265
    026E F40E      BRTC	0x0270
    026F 2D0E      MOV	R16,R14
    0270 90E9      LD	R14,Y+
    0271 90F9      LD	R15,Y+
    0272 9129      LD	R18,Y+
    0273 9508      RET
empy16s:
    0274 920A      ST	R0,-Y
    0275 921A      ST	R1,-Y
    0276 938A      ST	R24,-Y
    0277 939A      ST	R25,-Y
    0278 9F02      MUL	R16,R18
    0279 01C0      MOVW	R24,R0
    027A 9F12      MUL	R17,R18
    027B 0D90      ADD	R25,R0
    027C 9F03      MUL	R16,R19
    027D 0D90      ADD	R25,R0
    027E 018C      MOVW	R16,R24
    027F 9199      LD	R25,Y+
    0280 9189      LD	R24,Y+
    0281 9019      LD	R1,Y+
    0282 9009      LD	R0,Y+
    0283 9508      RET
pop_gset2:
    0284 E0E2      LDI	R30,2
    0285 940C0296  JMP	pop
pop_gset3:
    0287 E0E4      LDI	R30,4
    0288 940C0296  JMP	pop
push_gset5:
    028A 92FA      ST	R15,-Y
    028B 92EA      ST	R14,-Y
push_gset4:
    028C 92DA      ST	R13,-Y
    028D 92CA      ST	R12,-Y
push_gset3:
    028E 92BA      ST	R11,-Y
    028F 92AA      ST	R10,-Y
push_gset2:
    0290 937A      ST	R23,-Y
    0291 936A      ST	R22,-Y
push_gset1:
    0292 935A      ST	R21,-Y
    0293 934A      ST	R20,-Y
    0294 9508      RET
pop_gset1:
    0295 E0E1      LDI	R30,1
pop:
    0296 9149      LD	R20,Y+
    0297 9159      LD	R21,Y+
    0298 FDE0      SBRC	R30,0
    0299 9508      RET
    029A 9169      LD	R22,Y+
    029B 9179      LD	R23,Y+
    029C FDE1      SBRC	R30,1
    029D 9508      RET
    029E 90A9      LD	R10,Y+
    029F 90B9      LD	R11,Y+
    02A0 FDE2      SBRC	R30,2
    02A1 9508      RET
    02A2 90C9      LD	R12,Y+
    02A3 90D9      LD	R13,Y+
    02A4 FDE3      SBRC	R30,3
    02A5 9508      RET
    02A6 90E9      LD	R14,Y+
    02A7 90F9      LD	R15,Y+
    02A8 9508      RET
lsl8:
    02A9 2311      TST	R17
    02AA F019      BEQ	0x02AE
    02AB 0F00      LSL	R16
    02AC 951A      DEC	R17
    02AD CFFB      RJMP	lsl8
    02AE 9508      RET
asgncblk:
    02AF 93AA      ST	R26,-Y
    02B0 93BA      ST	R27,-Y
    02B1 93EA      ST	R30,-Y
    02B2 93FA      ST	R31,-Y
    02B3 920A      ST	R0,-Y
    02B4 81AF      LDD	R26,Y+7
    02B5 85B8      LDD	R27,Y+8
    02B6 81ED      LDD	R30,Y+5
    02B7 81FE      LDD	R31,Y+6
    02B8 3000      CPI	R16,0
    02B9 0701      CPC	R16,R17
    02BA F031      BEQ	0x02C1
    02BB 95C8      LPM
    02BC 920D      ST	R0,X+
    02BD 9631      ADIW	R30,1
    02BE 5001      SUBI	R16,1
    02BF 4010      SBCI	R17,0
    02C0 CFF7      RJMP	0x02B8
    02C1 9009      LD	R0,Y+
    02C2 91F9      LD	R31,Y+
    02C3 91E9      LD	R30,Y+
    02C4 91B9      LD	R27,Y+
    02C5 91A9      LD	R26,Y+
    02C6 9624      ADIW	R28,4
    02C7 9508      RET

⌨️ 快捷键说明

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