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

📄 tc_clock.lst

📁 在ICCAVR环境下做的ATMEGA128单片机实现模拟时钟
💻 LST
📖 第 1 页 / 共 3 页
字号:
    04D3 3180      CPI	R24,0x10
    04D4 F350      BCS	0x04BF
    04D5 9563      INC	R22
    04D6 3064      CPI	R22,4
    04D7 F328      BCS	0x04BD
    04D8 9543      INC	R20
    04D9 3048      CPI	R20,0x8
    04DA F2D8      BCS	0x04B6
    04DB 940E0707  CALL	pop_gset3
    04DD 9508      RET
_LCD_CLS:
  i                    --> R20
  j                    --> R22
    04DE 940E0713  CALL	push_gset2
    04E0 9721      SBIW	R28,1
(0305)                               
(0306)                             }
(0307)      }
(0308) }
(0309) /***************12864液晶清屏**********************/
(0310) void LCD_CLS()
(0311) {
(0312)   uchar i,j;
(0313)   LCDCS1H;         //清左边屏幕
    04E1 9A95      SBI	0x12,5
(0314)   LCDCS2L;
    04E2 9894      CBI	0x12,4
(0315)   LCD_WRITE_COM(0x3F);
    04E3 E30F      LDI	R16,0x3F
    04E4 DEFF      RCALL	_LCD_WRITE_COM
(0316)   LCD_WRITE_COM(0xC0);
    04E5 EC00      LDI	R16,0xC0
    04E6 DEFD      RCALL	_LCD_WRITE_COM
(0317)   for(i=0;i<4;i++)
    04E7 2744      CLR	R20
    04E8 C00B      RJMP	0x04F4
(0318)     for(j=0;j<8;j++)
    04E9 2766      CLR	R22
    04EA C006      RJMP	0x04F1
(0319) 	{
(0320) 	   LCD_WRITE_ADD_CHAR(i,j,0x0C);
    04EB E08C      LDI	R24,0xC
    04EC 8388      STD	Y+0,R24
    04ED 2F26      MOV	R18,R22
    04EE 2F04      MOV	R16,R20
    04EF DF0B      RCALL	_LCD_WRITE_ADD_CHAR
    04F0 9563      INC	R22
    04F1 3068      CPI	R22,0x8
    04F2 F3C0      BCS	0x04EB
    04F3 9543      INC	R20
    04F4 3044      CPI	R20,4
    04F5 F398      BCS	0x04E9
(0321) 	}
(0322) 	
(0323)    LCDCS1L;       //清右边屏幕
    04F6 9895      CBI	0x12,5
(0324)    LCDCS2H;
    04F7 9A94      SBI	0x12,4
(0325)    LCD_WRITE_COM(0x3F);
    04F8 E30F      LDI	R16,0x3F
    04F9 DEEA      RCALL	_LCD_WRITE_COM
(0326)    LCD_WRITE_COM(0xC0);
    04FA EC00      LDI	R16,0xC0
    04FB DEE8      RCALL	_LCD_WRITE_COM
(0327)   for(i=0;i<4;i++)
    04FC 2744      CLR	R20
    04FD C00B      RJMP	0x0509
(0328)     for(j=0;j<8;j++)
    04FE 2766      CLR	R22
    04FF C006      RJMP	0x0506
(0329) 	{
(0330) 	   LCD_WRITE_ADD_CHAR(i,j,0x0C);
    0500 E08C      LDI	R24,0xC
    0501 8388      STD	Y+0,R24
    0502 2F26      MOV	R18,R22
    0503 2F04      MOV	R16,R20
    0504 DEF6      RCALL	_LCD_WRITE_ADD_CHAR
    0505 9563      INC	R22
    0506 3068      CPI	R22,0x8
    0507 F3C0      BCS	0x0500
    0508 9543      INC	R20
    0509 3044      CPI	R20,4
    050A F398      BCS	0x04FE
    050B 9621      ADIW	R28,1
    050C 940E0704  CALL	pop_gset2
    050E 9508      RET
(0331) 	}
(0332) }									  
(0333) 
(0334) //定时器0溢出中断函数
(0335) 
(0336) /*****************************************/
(0337) void   Timer1_INIT()
(0338) {
(0339)    TCNT1H=0xB9;                    //在18.432MHz晶振下,取1024分频时钟设初值
_Timer1_INIT:
    050F EB89      LDI	R24,0xB9
    0510 BD8D      OUT	0x2D,R24
(0340)    TCNT1L=0xAF;
    0511 EA8F      LDI	R24,0xAF
    0512 BD8C      OUT	0x2C,R24
(0341)    TCCR1A=0x00;                    //普通模式
    0513 2422      CLR	R2
    0514 BC2F      OUT	0x2F,R2
(0342)    TCCR1B|=0x05;                   //时钟选择为1024分频模式
    0515 B58E      IN	R24,0x2E
    0516 6085      ORI	R24,5
    0517 BD8E      OUT	0x2E,R24
(0343)    SREG|=BIT(7);                       //使能全局中断
    0518 9478      BSET	7
(0344)    TIMSK|=0x04;                        //TIMSK的bit2为定时器1溢出中断使能
    0519 B787      IN	R24,0x37
    051A 6084      ORI	R24,4
    051B BF87      OUT	0x37,R24
    051C 9508      RET
_Timer1_int:
    051D 922A      ST	R2,-Y
    051E 938A      ST	R24,-Y
    051F 939A      ST	R25,-Y
    0520 B62F      IN	R2,0x3F
    0521 922A      ST	R2,-Y
(0345) }
(0346) /****************************************
(0347) * 名称:Timer1_int()                定时器1中断函数
(0348) * 功能:实现秒计数
(0349) **************************************/
(0350) void  Timer1_int()
(0351) {
(0352)     TCNT1H=0xB9;                   //重装初值
    0522 EB89      LDI	R24,0xB9
    0523 BD8D      OUT	0x2D,R24
(0353)     TCNT1L=0xAF;
    0524 EA8F      LDI	R24,0xAF
    0525 BD8C      OUT	0x2C,R24
(0354) 	sec++;
    0526 91800100  LDS	R24,sec
    0528 5F8F      SUBI	R24,0xFF
    0529 93800100  STS	sec,R24
(0355) 	if(sec==60)
    052B 338C      CPI	R24,0x3C
    052C F441      BNE	0x0535
(0356) 	{
(0357) 	sec=0;
    052D 2422      CLR	R2
    052E 92200100  STS	sec,R2
(0358) 	min++;
    0530 91800101  LDS	R24,min
    0532 5F8F      SUBI	R24,0xFF
    0533 93800101  STS	min,R24
(0359) 	}
    0535 9029      LD	R2,Y+
    0536 BE2F      OUT	0x3F,R2
    0537 9199      LD	R25,Y+
    0538 9189      LD	R24,Y+
    0539 9029      LD	R2,Y+
    053A 9518      RETI
_CLOCK:
    053B 940E0713  CALL	push_gset2
(0360) }
(0361) void CLOCK()
(0362) {
(0363)   if(min==60)
    053D 91800101  LDS	R24,min
    053F 338C      CPI	R24,0x3C
    0540 F009      BEQ	0x0542
    0541 C09B      RJMP	0x05DD
(0364)     {
(0365) 	min=0;
    0542 2422      CLR	R2
    0543 92200101  STS	min,R2
(0366) 	hour++;
    0545 91800102  LDS	R24,hour
    0547 5F8F      SUBI	R24,0xFF
    0548 93800102  STS	hour,R24
(0367) 	if(hour==24)
    054A 3188      CPI	R24,0x18
    054B F009      BEQ	0x054D
    054C C080      RJMP	0x05CD
(0368) 	   {
(0369) 	   hour=0;
    054D 92200102  STS	hour,R2
(0370) 	   date++;
    054F 91800105  LDS	R24,date
    0551 5F8F      SUBI	R24,0xFF
    0552 93800105  STS	date,R24
(0371) 	    day++;
    0554 91800106  LDS	R24,day
    0556 5F8F      SUBI	R24,0xFF
    0557 93800106  STS	day,R24
(0372) 		if(day==8)
    0559 3088      CPI	R24,0x8
    055A F419      BNE	0x055E
(0373) 		{day=1;}
    055B E081      LDI	R24,1
    055C 93800106  STS	day,R24
(0374) 	     if(date==32&&((mon==1)|(mon==3)||(mon==5)||(mon==7)||(mon==8)||(mon==10)||(mon==12)))
    055E 91800105  LDS	R24,date
    0560 3280      CPI	R24,0x20
    0561 F569      BNE	0x058F
    0562 91800104  LDS	R24,mon
    0564 3081      CPI	R24,1
    0565 F419      BNE	0x0569
    0566 E061      LDI	R22,1
    0567 E070      LDI	R23,0
    0568 C002      RJMP	0x056B
    0569 2766      CLR	R22
    056A 2777      CLR	R23
    056B 91800104  LDS	R24,mon
    056D 3083      CPI	R24,3
    056E F419      BNE	0x0572
    056F E041      LDI	R20,1
    0570 E050      LDI	R21,0
    0571 C002      RJMP	0x0574
    0572 2744      CLR	R20
    0573 2755      CLR	R21
    0574 011B      MOVW	R2,R22
    0575 2A24      OR	R2,R20
    0576 2A35      OR	R3,R21
    0577 2022      TST	R2
    0578 F471      BNE	0x0587
    0579 2033      TST	R3
    057A F461      BNE	0x0587
    057B 91800104  LDS	R24,mon
    057D 3085      CPI	R24,5
    057E F041      BEQ	0x0587
    057F 3087      CPI	R24,7
    0580 F031      BEQ	0x0587
    0581 3088      CPI	R24,0x8
    0582 F021      BEQ	0x0587
    0583 308A      CPI	R24,0xA
    0584 F011      BEQ	0x0587
    0585 308C      CPI	R24,0xC
    0586 F441      BNE	0x058F
(0375) 		   {
(0376) 		    date=1;
    0587 E081      LDI	R24,1
    0588 93800105  STS	date,R24
(0377) 			mon++;
    058A 91800104  LDS	R24,mon
    058C 5F8F      SUBI	R24,0xFF
    058D 93800104  STS	mon,R24
(0378) 			}
(0379) 		  if(date==31&&mon!=2)
    058F 91800105  LDS	R24,date
    0591 318F      CPI	R24,0x1F
    0592 F461      BNE	0x059F
    0593 91800104  LDS	R24,mon
    0595 3082      CPI	R24,2
    0596 F041      BEQ	0x059F
(0380) 		   {
(0381) 		     date=1;
    0597 E081      LDI	R24,1
    0598 93800105  STS	date,R24
(0382) 			 mon++;
    059A 91800104  LDS	R24,mon
    059C 5F8F      SUBI	R24,0xFF
    059D 93800104  STS	mon,R24
(0383) 		   }	
(0384) 		  if(date==29&&mon==2&&year%4==0)
    059F 91800105  LDS	R24,date
    05A1 318D      CPI	R24,0x1D
    05A2 F499      BNE	0x05B6
    05A3 91800104  LDS	R24,mon
    05A5 3082      CPI	R24,2
    05A6 F479      BNE	0x05B6
    05A7 E014      LDI	R17,4
    05A8 91000103  LDS	R16,year
    05AA 940E06DC  CALL	mod8u
    05AC 2300      TST	R16
    05AD F441      BNE	0x05B6
(0385) 		  {
(0386) 		  date=1;
    05AE E081      LDI	R24,1
    05AF 93800105  STS	date,R24
(0387) 		  mon++;
    05B1 91800104  LDS	R24,mon
    05B3 5F8F      SUBI	R24,0xFF
    05B4 93800104  STS	mon,R24
(0388) 		  }
(0389) 		   if(date==30&&mon==2&&year%4!=0)
    05B6 91800105  LDS	R24,date
    05B8 318E      CPI	R24,0x1E
    05B9 F499      BNE	0x05CD
    05BA 91800104  LDS	R24,mon
    05BC 3082      CPI	R24,2
    05BD F479      BNE	0x05CD
    05BE E014      LDI	R17,4
    05BF 91000103  LDS	R16,year
    05C1 940E06DC  CALL	mod8u
    05C3 2300      TST	R16
    05C4 F041      BEQ	0x05CD
(0390) 		   {
(0391) 		   date=1;
    05C5 E081      LDI	R24,1
    05C6 93800105  STS	date,R24
(0392) 		   mon++;
    05C8 91800104  LDS	R24,mon
    05CA 5F8F      SUBI	R24,0xFF
    05CB 93800104  STS	mon,R24
(0393) 		   }
(0394) 	   }
(0395) 	   if(mon==13)
    05CD 91800104  LDS	R24,mon
    05CF 308D      CPI	R24,0xD
    05D0 F461      BNE	0x05DD
(0396) 	     {
(0397) 	       mon=0;
    05D1 2422      CLR	R2
    05D2 92200104  STS	mon,R2
(0398) 		   year++;
    05D4 91800103  LDS	R24,year
    05D6 5F8F      SUBI	R24,0xFF
    05D7 93800103  STS	year,R24
(0399) 		   if(year==100)
    05D9 3684      CPI	R24,0x64
    05DA F411      BNE	0x05DD
(0400) 		   {year=0;}
    05DB 92200103  STS	year,R2
(0401) 	     }
(0402) 	}
    05DD 940E0704  CALL	pop_gset2
    05DF 9508      RET
(0403) }
(0404) 
(0405) /*********************************************
(0406) *函数名称:

⌨️ 快捷键说明

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