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

📄 ds12887.lst

📁 12C887 的驱动程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
    032E E528      LDI	R18,0x58
    032F E031      LDI	R19,1
    0330 E500      LDI	R16,0x50
    0331 E011      LDI	R17,1
    0332 940E01DB  CALL	_display_char
    0334 C023      RJMP	0x0358
(0093) 		  case 0x06:display_char(n61,n62,y,x);break;
    0335 836A      STD	Y+2,R22
    0336 8348      STD	Y+0,R20
    0337 E628      LDI	R18,0x68
    0338 E031      LDI	R19,1
    0339 E600      LDI	R16,0x60
    033A E011      LDI	R17,1
    033B 940E01DB  CALL	_display_char
    033D C01A      RJMP	0x0358
(0094) 		  case 0x07:display_char(n71,n72,y,x);break;
    033E 836A      STD	Y+2,R22
    033F 8348      STD	Y+0,R20
    0340 E728      LDI	R18,0x78
    0341 E031      LDI	R19,1
    0342 E700      LDI	R16,0x70
    0343 E011      LDI	R17,1
    0344 940E01DB  CALL	_display_char
    0346 C011      RJMP	0x0358
(0095) 		  case 0x08:display_char(n81,n82,y,x);break;
    0347 836A      STD	Y+2,R22
    0348 8348      STD	Y+0,R20
    0349 E828      LDI	R18,0x88
    034A E031      LDI	R19,1
    034B E800      LDI	R16,0x80
    034C E011      LDI	R17,1
    034D 940E01DB  CALL	_display_char
    034F C008      RJMP	0x0358
(0096) 		  case 0x09:display_char(n91,n92,y,x);break;
    0350 836A      STD	Y+2,R22
    0351 8348      STD	Y+0,R20
    0352 E928      LDI	R18,0x98
    0353 E031      LDI	R19,1
    0354 E900      LDI	R16,0x90
    0355 E011      LDI	R17,1
    0356 940E01DB  CALL	_display_char
    0358 9623      ADIW	R28,3
    0359 940E0481  CALL	pop_gset3
    035B 9508      RET
(0097) 		}
(0098) }
(0099) 
(0100) /*********************************读取时间值************************************/
(0101) 
(0102) void readtime(void)
(0103) { 
(0104)   second=Read_RegSec();
_readtime:
    035C DF4B      RCALL	_Read_RegSec
    035D 93000284  STS	second,R16
(0105)   second10=(second&0xf0)>>4;                         //取得秒的十位数字
    035F 2F80      MOV	R24,R16
    0360 7F80      ANDI	R24,0xF0
    0361 9582      SWAP	R24
    0362 708F      ANDI	R24,0xF
    0363 93800283  STS	second10,R24
(0106)   second01=second&0x0f;		                         //取得秒的个位数字
    0365 2F80      MOV	R24,R16
    0366 708F      ANDI	R24,0xF
    0367 93800282  STS	second01,R24
(0107) 	 
(0108)   minute=Read_RegMin();
    0369 DF42      RCALL	_Read_RegMin
    036A 93000281  STS	minute,R16
(0109)   minute10=(minute&0xf0)>>4;                         //取得分的十位数字
    036C 2F80      MOV	R24,R16
    036D 7F80      ANDI	R24,0xF0
    036E 9582      SWAP	R24
    036F 708F      ANDI	R24,0xF
    0370 93800280  STS	minute10,R24
(0110)   minute01=minute&0x0f;		                         //取得分的个位数字
    0372 2F80      MOV	R24,R16
    0373 708F      ANDI	R24,0xF
    0374 9380027F  STS	minute01,R24
(0111) 	 
(0112)   hour=Read_RegHour();
    0376 DF39      RCALL	_Read_RegHour
    0377 9300027E  STS	hour,R16
(0113)   hour10=(hour&0xf0)>>4;                             //取得时的十位数字
    0379 2F80      MOV	R24,R16
    037A 7F80      ANDI	R24,0xF0
    037B 9582      SWAP	R24
    037C 708F      ANDI	R24,0xF
    037D 9380027D  STS	hour10,R24
(0114)   hour01=hour&0x0f;		                             //取得时的个位数字
    037F 2F80      MOV	R24,R16
    0380 708F      ANDI	R24,0xF
    0381 9380027C  STS	hour01,R24
(0115) 	 
(0116)   weekday=Read_RegWeekday();
    0383 DF30      RCALL	_Read_RegWeekday
    0384 9300027B  STS	weekday,R16
(0117)   weekday10=(weekday&0xf0)>>4;                       //取得星期的十位数字
    0386 2F80      MOV	R24,R16
    0387 7F80      ANDI	R24,0xF0
    0388 9582      SWAP	R24
    0389 708F      ANDI	R24,0xF
    038A 9380027A  STS	weekday10,R24
(0118)   weekday01=weekday&0x0f;	
    038C 2F80      MOV	R24,R16
    038D 708F      ANDI	R24,0xF
    038E 93800279  STS	weekday01,R24
(0119) 	 
(0120)   monthday=Read_RegMonthday();
    0390 DF27      RCALL	_Read_RegMonthday
    0391 93000278  STS	monthday,R16
(0121)   monthday10=(monthday&0xf0)>>4;
    0393 2F80      MOV	R24,R16
    0394 7F80      ANDI	R24,0xF0
    0395 9582      SWAP	R24
    0396 708F      ANDI	R24,0xF
    0397 93800277  STS	monthday10,R24
(0122)   monthday01=monthday&0x0f;
    0399 2F80      MOV	R24,R16
    039A 708F      ANDI	R24,0xF
    039B 93800276  STS	monthday01,R24
(0123) 	 
(0124)   month=Read_RegMonth();
    039D DF1E      RCALL	_Read_RegMonth
    039E 93000275  STS	month,R16
(0125)   month10=(month&0xf0)>>4;
    03A0 2F80      MOV	R24,R16
    03A1 7F80      ANDI	R24,0xF0
    03A2 9582      SWAP	R24
    03A3 708F      ANDI	R24,0xF
    03A4 93800274  STS	month10,R24
(0126)   month01=month&0x0f;
    03A6 2F80      MOV	R24,R16
    03A7 708F      ANDI	R24,0xF
    03A8 93800273  STS	month01,R24
(0127) 	 
(0128)   year=Read_RegYear();
    03AA DF15      RCALL	_Read_RegYear
    03AB 93000272  STS	year,R16
(0129)   year10=(year&0xf0)>>4;
    03AD 2F80      MOV	R24,R16
    03AE 7F80      ANDI	R24,0xF0
    03AF 9582      SWAP	R24
    03B0 708F      ANDI	R24,0xF
    03B1 93800271  STS	year10,R24
(0130)   year01=year&0x0f;
    03B3 2F80      MOV	R24,R16
    03B4 708F      ANDI	R24,0xF
    03B5 93800270  STS	year01,R24
    03B7 9508      RET
_displaytime:
    03B8 9721      SBIW	R28,1
(0131) }
(0132) 
(0133) /*********************************时间显示函数************************************/
(0134) 
(0135) void displaytime(void)
(0136) {
(0137)  juddisplay(year10,0,0);
    03B9 2422      CLR	R2
    03BA 8228      STD	Y+0,R2
    03BB 2722      CLR	R18
    03BC 91000271  LDS	R16,year10
    03BE DF05      RCALL	_juddisplay
(0138)  juddisplay(year01,0,1);
    03BF E081      LDI	R24,1
    03C0 8388      STD	Y+0,R24
    03C1 2722      CLR	R18
    03C2 91000270  LDS	R16,year01
    03C4 DEFF      RCALL	_juddisplay
(0139) 	 
(0140)  juddisplay(month10,0,4);
    03C5 E084      LDI	R24,4
    03C6 8388      STD	Y+0,R24
    03C7 2722      CLR	R18
    03C8 91000274  LDS	R16,month10
    03CA DEF9      RCALL	_juddisplay
(0141)  juddisplay(month01,0,5);
    03CB E085      LDI	R24,5
    03CC 8388      STD	Y+0,R24
    03CD 2722      CLR	R18
    03CE 91000273  LDS	R16,month01
    03D0 DEF3      RCALL	_juddisplay
(0142) 	 
(0143)  juddisplay(monthday10,0,8);
    03D1 E088      LDI	R24,0x8
    03D2 8388      STD	Y+0,R24
    03D3 2722      CLR	R18
    03D4 91000277  LDS	R16,monthday10
    03D6 DEED      RCALL	_juddisplay
(0144)  juddisplay(monthday01,0,9);
    03D7 E089      LDI	R24,0x9
    03D8 8388      STD	Y+0,R24
    03D9 2722      CLR	R18
    03DA 91000276  LDS	R16,monthday01
    03DC DEE7      RCALL	_juddisplay
(0145) 	 
(0146)  juddisplay(weekday10,2,5);
    03DD E085      LDI	R24,5
    03DE 8388      STD	Y+0,R24
    03DF E022      LDI	R18,2
    03E0 9100027A  LDS	R16,weekday10
    03E2 DEE1      RCALL	_juddisplay
(0147)  juddisplay(weekday01,2,6);
    03E3 E086      LDI	R24,6
    03E4 8388      STD	Y+0,R24
    03E5 E022      LDI	R18,2
    03E6 91000279  LDS	R16,weekday01
    03E8 DEDB      RCALL	_juddisplay
(0148) 	 
(0149)  juddisplay(hour10,4,3);
    03E9 E083      LDI	R24,3
    03EA 8388      STD	Y+0,R24
    03EB E024      LDI	R18,4
    03EC 9100027D  LDS	R16,hour10
    03EE DED5      RCALL	_juddisplay
(0150)  juddisplay(hour01,4,4);
    03EF E084      LDI	R24,4
    03F0 8388      STD	Y+0,R24
    03F1 E024      LDI	R18,4
    03F2 9100027C  LDS	R16,hour01
    03F4 DECF      RCALL	_juddisplay
(0151) 	 
(0152)  juddisplay(minute10,4,6);
    03F5 E086      LDI	R24,6
    03F6 8388      STD	Y+0,R24
    03F7 E024      LDI	R18,4
    03F8 91000280  LDS	R16,minute10
    03FA DEC9      RCALL	_juddisplay
(0153)  juddisplay(minute01,4,7);
    03FB E087      LDI	R24,7
    03FC 8388      STD	Y+0,R24
    03FD E024      LDI	R18,4
    03FE 9100027F  LDS	R16,minute01
    0400 DEC3      RCALL	_juddisplay
(0154) 	 
(0155)  juddisplay(second10,4,9);
    0401 E089      LDI	R24,0x9
    0402 8388      STD	Y+0,R24
    0403 E024      LDI	R18,4
    0404 91000283  LDS	R16,second10
    0406 DEBD      RCALL	_juddisplay
(0156)  juddisplay(second01,4,10); 
    0407 E08A      LDI	R24,0xA
    0408 8388      STD	Y+0,R24
    0409 E024      LDI	R18,4
    040A 91000282  LDS	R16,second01
    040C DEB7      RCALL	_juddisplay
    040D 9621      ADIW	R28,1
    040E 9508      RET
_main:
    040F 9729      SBIW	R28,0x9
(0157) }
(0158) 
(0159) 	 
(0160) void main(void)
(0161) {	
(0162)   
(0163)   init_devices();
    0410 940E019C  CALL	_init_devices
(0164)   LCD_Clean();
    0412 940E015B  CALL	_LCD_Clean
(0165)   LCD_Init();
    0414 940E017D  CALL	_LCD_Init
(0166)   delayds12887(20000);
    0416 E200      LDI	R16,0x20
    0417 DE6B      RCALL	_delayds12887
(0167)   Write_Regtime(0x00,0x41,0x21,0x06,0x07,0x07,0x07);
    0418 E087      LDI	R24,7
    0419 8788      STD	Y+8,R24
    041A 838E      STD	Y+6,R24
    041B 838C      STD	Y+4,R24
    041C E086      LDI	R24,6
    041D 838A      STD	Y+2,R24
    041E E281      LDI	R24,0x21
    041F 8388      STD	Y+0,R24
    0420 E421      LDI	R18,0x41
    0421 2700      CLR	R16
    0422 DE66      RCALL	_Write_Regtime
(0168)   Write_Regspecial(0x20,0x00,0x00,0x00);                 //寄存器A写入0X20
    0423 2422      CLR	R2
    0424 822A      STD	Y+2,R2
    0425 8228      STD	Y+0,R2
    0426 2722      CLR	R18
    0427 E200      LDI	R16,0x20
    0428 DE74      RCALL	_Write_Regspecial
(0169)   display_char(maohao1,maohao2,4,8);                     //显示冒号
    0429 E088      LDI	R24,0x8
    042A 838A      STD	Y+2,R24
    042B E084      LDI	R24,4
    042C 8388      STD	Y+0,R24
    042D EC28      LDI	R18,0xC8
    042E E031      LDI	R19,1
    042F EC00      LDI	R16,0xC0
    0430 E011      LDI	R17,1
    0431 940E01DB  CALL	_display_char
(0170)   display_char(maohao1,maohao2,4,5);                     //显示冒号
    0433 E085      LDI	R24,5
    0434 838A      STD	Y+2,R24
    0435 E084      LDI	R24,4
    0436 8388      STD	Y+0,R24
    0437 EC28      LDI	R18,0xC8
    0438 E031      LDI	R19,1
    0439 EC00      LDI	R16,0xC0
    043A E011      LDI	R17,1
    043B 940E01DB  CALL	_display_char
(0171)   display_chinese(nian1,nian2,0,1);
    043D E081      LDI	R24,1
    043E 838A      STD	Y+2,R24
    043F 2422      CLR	R2
    0440 8228      STD	Y+0,R2
    0441 EE20      LDI	R18,0xE0
    0442 E031      LDI	R19,1
    0443 ED00      LDI	R16,0xD0
    0444 E011      LDI	R17,1
    0445 940E0246  CALL	_display_chinese
(0172)   display_chinese(yue1,yue2,0,3);
    0447 E083      LDI	R24,3
    0448 838A      STD	Y+2,R24
    0449 2422      CLR	R2
    044A 8228      STD	Y+0,R2
    044B E020      LDI	R18,0
    044C E032      LDI	R19,2
    044D EF00      LDI	R16,0xF0
    044E E011      LDI	R17,1
    044F 940E0246  CALL	_display_chinese
(0173)   display_chinese(ri1,ri2,0,5);
    0451 E085      LDI	R24,5
    0452 838A      STD	Y+2,R24
    0453 2422      CLR	R2
    0454 8228      STD	Y+0,R2
    0455 E220      LDI	R18,0x20
    0456 E032      LDI	R19,2
    0457 E100      LDI	R16,0x10
    0458 E012      LDI	R17,2
    0459 940E0246  CALL	_display_chinese
(0174)   display_chinese(xing1,xing2,1,0);
    045B 2422      CLR	R2
    045C 822A      STD	Y+2,R2
    045D E081      LDI	R24,1
    045E 8388      STD	Y+0,R24
    045F E420      LDI	R18,0x40
    0460 E032      LDI	R19,2
    0461 E300      LDI	R16,0x30
    0462 E012      LDI	R17,2
    0463 940E0246  CALL	_display_chinese
(0175)   display_chinese(qi1,qi2,1,1);
    0465 E081      LDI	R24,1
    0466 838A      STD	Y+2,R24
    0467 8388      STD	Y+0,R24
    0468 E620      LDI	R18,0x60
    0469 E032      LDI	R19,2
    046A E500      LDI	R16,0x50
    046B E012      LDI	R17,2
    046C 940E0246  CALL	_display_chinese
(0176)   display_char(maohao1,maohao2,2,4);                   
    046E E084      LDI	R24,4
    046F 838A      STD	Y+2,R24
    0470 E082      LDI	R24,2
    0471 8388      STD	Y+0,R24
    0472 EC28      LDI	R18,0xC8
    0473 E031      LDI	R19,1
    0474 EC00      LDI	R16,0xC0
    0475 E011      LDI	R17,1
    0476 940E01DB  CALL	_display_char
    0478 C002      RJMP	0x047B
(0177)    
(0178)   while(1)
(0179) 	{	
(0180) 	readtime();
    0479 DEE2      RCALL	_readtime
(0181) 	displaytime();
FILE: <library>
    047A DF3D      RCALL	_displaytime
    047B CFFD      RJMP	0x0479
    047C 9629      ADIW	R28,0x9
    047D 9508      RET
pop_gset2:
    047E E0E2      LDI	R30,2
    047F 940C0493  JMP	pop
pop_gset3:
    0481 E0E4      LDI	R30,4
    0482 940C0493  JMP	pop
pop_gset4:
    0484 E0E8      LDI	R30,0x8
    0485 940C0493  JMP	pop
push_gset5:
    0487 92FA      ST	R15,-Y
    0488 92EA      ST	R14,-Y
push_gset4:
    0489 92DA      ST	R13,-Y
    048A 92CA      ST	R12,-Y
push_gset3:
    048B 92BA      ST	R11,-Y
    048C 92AA      ST	R10,-Y
push_gset2:
    048D 937A      ST	R23,-Y
    048E 936A      ST	R22,-Y
push_gset1:
    048F 935A      ST	R21,-Y
    0490 934A      ST	R20,-Y
    0491 9508      RET
pop_gset1:
    0492 E0E1      LDI	R30,1
pop:
    0493 9149      LD	R20,Y+
    0494 9159      LD	R21,Y+
    0495 FDE0      SBRC	R30,0
    0496 9508      RET
    0497 9169      LD	R22,Y+
    0498 9179      LD	R23,Y+
    0499 FDE1      SBRC	R30,1
    049A 9508      RET
    049B 90A9      LD	R10,Y+
    049C 90B9      LD	R11,Y+
    049D FDE2      SBRC	R30,2
    049E 9508      RET
    049F 90C9      LD	R12,Y+
    04A0 90D9      LD	R13,Y+
    04A1 FDE3      SBRC	R30,3
    04A2 9508      RET
    04A3 90E9      LD	R14,Y+
    04A4 90F9      LD	R15,Y+
    04A5 9508      RET

⌨️ 快捷键说明

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