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

📄 ds1302.lst

📁 ds1302事实时钟+12864液晶显示 4094
💻 LST
📖 第 1 页 / 共 5 页
字号:
     328 9040 007F LDS	R4,0x007F
     32A 2455      CLR	R5
     32B 1640      CP	R4,R16
     32C 0651      CPC	R5,R17
     32D F159      BEQ	0x0359
(0133) 		{
(0134) 		jisuan(day);
     32E DD6D      RCALL	_jisuan
(0135) 		Char_Set_XY_BYTE(7,2,charindex[gewei],2);
     32F E082      LDI	R24,2
     330 E090      LDI	R25,0
     331 839B      STD	Y+3,R25
     332 838A      STD	Y+2,R24
     333 E68E      LDI	R24,0x6E
     334 E090      LDI	R25,0
     335 91E0 00B6 LDS	R30,gewei
     337 91F0 00B7 LDS	R31,gewei+1
     339 0FE8      ADD	R30,R24
     33A 1FF9      ADC	R31,R25
     33B 8020      LDD	R2,Z+0
     33C 2433      CLR	R3
     33D 8239      STD	Y+1,R3
     33E 8228      STD	Y+0,R2
     33F E022      LDI	R18,2
     340 E030      LDI	R19,0
     341 E007      LDI	R16,7
     342 E010      LDI	R17,0
     343 D163      RCALL	_Char_Set_XY_BYTE
(0136) 	    Char_Set_XY_BYTE(7,2,charindex[shiwei],1);
     344 E081      LDI	R24,1
     345 E090      LDI	R25,0
     346 839B      STD	Y+3,R25
     347 838A      STD	Y+2,R24
     348 E68E      LDI	R24,0x6E
     349 E090      LDI	R25,0
     34A 91E0 00B4 LDS	R30,shiwei
     34C 91F0 00B5 LDS	R31,shiwei+1
     34E 0FE8      ADD	R30,R24
     34F 1FF9      ADC	R31,R25
     350 8020      LDD	R2,Z+0
     351 2433      CLR	R3
     352 8239      STD	Y+1,R3
     353 8228      STD	Y+0,R2
     354 E022      LDI	R18,2
     355 E030      LDI	R19,0
     356 E007      LDI	R16,7
     357 E010      LDI	R17,0
     358 D14E      RCALL	_Char_Set_XY_BYTE
(0137) 		}
(0138) 		mid[6]=day;
     359 9020 00A8 LDS	R2,day
     35B 9030 00A9 LDS	R3,day+1
     35D 9220 007F STS	0x007F,R2
     35F CE23      RJMP	0x0183
     360 9624      ADIW	R28,4
     361 9508      RET
FILE: E:\AVR实验\ds1302+12864时钟\mudle1302.c
(0001) #include "ds1302.h"
(0002) 
(0003) 
(0004) void Delayus(uchar i)
(0005)  {
(0006)   while(--i);
_Delayus:
  i                    --> R16
     362 2F80      MOV	R24,R16
     363 5081      SUBI	R24,1
     364 2F08      MOV	R16,R24
     365 2388      TST	R24
     366 F7D9      BNE	0x0362
     367 9508      RET
(0007)   }
(0008)  
(0009)   
(0010) 
(0011) 
(0012) uchar ReadSec(void)    			
(0013) {
(0014)     return ReadRTC_Byte(0x81);
_ReadSec:
     368 E801      LDI	R16,0x81
     369 E010      LDI	R17,0
     36A D058      RCALL	_ReadRTC_Byte
     36B 9508      RET
(0015) }
(0016) uchar ReadMin(void)    		
(0017) {
(0018)     return ReadRTC_Byte(0x83);
_ReadMin:
     36C E803      LDI	R16,0x83
     36D E010      LDI	R17,0
     36E D054      RCALL	_ReadRTC_Byte
     36F 9508      RET
(0019) }
(0020) uchar ReadHour(void)
(0021) {
(0022)    return ReadRTC_Byte(0x85);
_ReadHour:
     370 E805      LDI	R16,0x85
     371 E010      LDI	R17,0
     372 D050      RCALL	_ReadRTC_Byte
     373 9508      RET
(0023) }
(0024) uchar ReadDate(void)
(0025) {
(0026)    return ReadRTC_Byte(0x87);
_ReadDate:
     374 E807      LDI	R16,0x87
     375 E010      LDI	R17,0
     376 D04C      RCALL	_ReadRTC_Byte
     377 9508      RET
(0027) }
(0028) 
(0029) uchar ReadYear(void)
(0030) {
(0031)    return ReadRTC_Byte(0x8D);
_ReadYear:
     378 E80D      LDI	R16,0x8D
     379 E010      LDI	R17,0
     37A D048      RCALL	_ReadRTC_Byte
     37B 9508      RET
(0032) }
(0033) 
(0034) uchar ReadMonth(void)
(0035) {
(0036)    return ReadRTC_Byte(0x89);
_ReadMonth:
     37C E809      LDI	R16,0x89
     37D E010      LDI	R17,0
     37E D044      RCALL	_ReadRTC_Byte
     37F 9508      RET
(0037) }
(0038) uchar ReadDay(void)
(0039) {
(0040)    return ReadRTC_Byte(0x8B);
_ReadDay:
     380 E80B      LDI	R16,0x8B
     381 E010      LDI	R17,0
     382 D040      RCALL	_ReadRTC_Byte
     383 9508      RET
_WriteSec:
  number               --> R10
     384 92AA      ST	R10,-Y
     385 2EA0      MOV	R10,R16
(0041) }
(0042) 
(0043) 
(0044) 
(0045) void WriteSec(uchar number)    	
(0046) {
(0047)     WriteRTC_Byte(0x80,number);
     386 2D2A      MOV	R18,R10
     387 2733      CLR	R19
     388 E800      LDI	R16,0x80
     389 E010      LDI	R17,0
     38A D047      RCALL	_WriteRTC_Byte
     38B 90A9      LD	R10,Y+
     38C 9508      RET
_WriteMin:
  number               --> R10
     38D 92AA      ST	R10,-Y
     38E 2EA0      MOV	R10,R16
(0048) }
(0049) void WriteMin(uchar number)    		
(0050) {
(0051)     WriteRTC_Byte(0x82,number);
     38F 2D2A      MOV	R18,R10
     390 2733      CLR	R19
     391 E802      LDI	R16,0x82
     392 E010      LDI	R17,0
     393 D03E      RCALL	_WriteRTC_Byte
     394 90A9      LD	R10,Y+
     395 9508      RET
_WriteHour:
  number               --> R10
     396 92AA      ST	R10,-Y
     397 2EA0      MOV	R10,R16
(0052) }
(0053) void WriteHour(uchar number)    		//向DS1302中写入分字节
(0054) {
(0055)     WriteRTC_Byte(0x84,number);
     398 2D2A      MOV	R18,R10
     399 2733      CLR	R19
     39A E804      LDI	R16,0x84
     39B E010      LDI	R17,0
     39C D035      RCALL	_WriteRTC_Byte
     39D 90A9      LD	R10,Y+
     39E 9508      RET
_WriteYear:
  number               --> R10
     39F 92AA      ST	R10,-Y
     3A0 2EA0      MOV	R10,R16
(0056) }
(0057) void WriteYear(uchar number)    		//向DS1302中写入分字节
(0058) {
(0059)     WriteRTC_Byte(0x8C,number);
     3A1 2D2A      MOV	R18,R10
     3A2 2733      CLR	R19
     3A3 E80C      LDI	R16,0x8C
     3A4 E010      LDI	R17,0
     3A5 D02C      RCALL	_WriteRTC_Byte
     3A6 90A9      LD	R10,Y+
     3A7 9508      RET
_WriteMonth:
  number               --> R10
     3A8 92AA      ST	R10,-Y
     3A9 2EA0      MOV	R10,R16
(0060) }
(0061) void WriteMonth(uchar number)    		//向DS1302中写入分字节
(0062) {
(0063)     WriteRTC_Byte(0x88,number);
     3AA 2D2A      MOV	R18,R10
     3AB 2733      CLR	R19
     3AC E808      LDI	R16,0x88
     3AD E010      LDI	R17,0
     3AE D023      RCALL	_WriteRTC_Byte
     3AF 90A9      LD	R10,Y+
     3B0 9508      RET
_WriteDay:
  number               --> R10
     3B1 92AA      ST	R10,-Y
     3B2 2EA0      MOV	R10,R16
(0064) }
(0065) 
(0066) void WriteDay(uchar number)    		//向DS1302中写入分字节
(0067) {
(0068)     WriteRTC_Byte(0x8A,number);
     3B3 2D2A      MOV	R18,R10
     3B4 2733      CLR	R19
     3B5 E80A      LDI	R16,0x8A
     3B6 E010      LDI	R17,0
     3B7 D01A      RCALL	_WriteRTC_Byte
     3B8 90A9      LD	R10,Y+
     3B9 9508      RET
_WriteDate:
  number               --> R10
     3BA 92AA      ST	R10,-Y
     3BB 2EA0      MOV	R10,R16
(0069) }
(0070) void WriteDate(uchar number)    		//向DS1302中写入分字节
(0071) {
(0072)     WriteRTC_Byte(0x86,number);
     3BC 2D2A      MOV	R18,R10
     3BD 2733      CLR	R19
     3BE E806      LDI	R16,0x86
     3BF E010      LDI	R17,0
     3C0 D011      RCALL	_WriteRTC_Byte
     3C1 90A9      LD	R10,Y+
     3C2 9508      RET
_ReadRTC_Byte:
  redata               --> R10
  address              --> R10
     3C3 92AA      ST	R10,-Y
     3C4 2EA0      MOV	R10,R16
(0073) }
(0074) 
(0075) 
(0076) 
(0077) 
(0078) uint ReadRTC_Byte(uchar address)    			
(0079) {
(0080)     unsigned char  redata;
(0081) 
(0082) 	Clr_ds1302_rst;//ds1302_rst = 0; 			
     3C5 98A9      CBI	0x15,1
(0083)     Clr_ds1302_clk;//ds1302_clk = 0; 				
     3C6 98AB      CBI	0x15,3
(0084)     Set_ds1302_rst;//ds1302_rst = 1;				
     3C7 9AA9      SBI	0x15,1
(0085)     Write_bit(address);				
     3C8 2D0A      MOV	R16,R10
     3C9 2711      CLR	R17
     3CA D019      RCALL	_Write_bit
(0086) 	redata=Read_bit();			
     3CB D02B      RCALL	_Read_bit
     3CC 2EA0      MOV	R10,R16
(0087) 	Clr_ds1302_rst;//ds1302_rst = 0;
     3CD 98A9      CBI	0x15,1
(0088) 	Set_ds1302_clk;//ds1302_clk = 1; 
     3CE 9AAB      SBI	0x15,3
(0089)    return redata;				
     3CF 2711      CLR	R17
     3D0 90A9      LD	R10,Y+
     3D1 9508      RET
_WriteRTC_Byte:
  number               --> R10
  address              --> R12
     3D2 92AA      ST	R10,-Y
     3D3 92CA      ST	R12,-Y
     3D4 2EA2      MOV	R10,R18
     3D5 2EC0      MOV	R12,R16
(0090) }
(0091) 
(0092) void WriteRTC_Byte(uchar address,uchar number)   
(0093) {
(0094)     Clr_ds1302_clk;//ds1302_clk = 0;
     3D6 98AB      CBI	0x15,3
(0095)     Clr_ds1302_rst;// ds1302_rst = 0;
     3D7 98A9      CBI	0x15,1
(0096) 	Set_ds1302_rst;//ds1302_rst = 1;  
     3D8 9AA9      SBI	0x15,1
(0097)     Write_bit(address);				 
     3D9 2D0C      MOV	R16,R12
     3DA 2711      CLR	R17
     3DB D008      RCALL	_Write_bit
(0098) 	Write_bit(number);				
     3DC 2D0A      MOV	R16,R10
     3DD 2711      CLR	R17
     3DE D005      RCALL	_Write_bit
(0099)     Clr_ds1302_rst;//ds1302_rst = 0; 
     3DF 98A9      CBI	0x15,1
(0100) 	Set_ds1302_clk;//ds1302_clk = 1;
     3E0 9AAB      SBI	0x15,3
     3E1 90C9      LD	R12,Y+
     3E2 90A9      LD	R10,Y+
     3E3 9508      RET
_Write_bit:
  i                    --> R20
  addr                 --> R16
     3E4 934A      ST	R20,-Y
(0101) }
(0102) 				
(0103) 
(0104) 
(0105) 
(0106) 
(0107) void Write_bit (uchar addr)				
(0108) {
(0109)   uchar i=0;
(0110)  for(i=8;i>0;i--){
     3E5 E048      LDI	R20,0x8
     3E6 C00B      RJMP	0x03F2
(0111) 	if((addr&0x01)==0x01)
     3E7 2F80      MOV	R24,R16
     3E8 7081      ANDI	R24,1
     3E9 3081      CPI	R24,1
     3EA F411      BNE	0x03ED
(0112) 	   Set_ds1302_data;//ds1302_dat = 1;
     3EB 9AAA      SBI	0x15,2
     3EC C001      RJMP	0x03EE
(0113)     else
(0114) 		Clr_ds1302_data;//ds1302_dat = 0;
     3ED 98AA      CBI	0x15,2
(0115)     Set_ds1302_clk;//ds1302_clk=1;
     3EE 9AAB      SBI	0x15,3
(0116) 	Clr_ds1302_clk;//ds1302_clk=0;
     3EF 98AB      CBI	0x15,3
(0117) 	addr>>=1;
     3F0 9506      LSR	R16
     3F1 954A      DEC	R20
     3F2 E080      LDI	R24,0
     3F3 1784      CP	R24,R20
     3F4 F390      BCS	0x03E7
     3F5 9149      LD	R20,Y+
     3F6 9508      RET
_Read_bit:
  data_r               --> R20
  i                    --> R22
     3F7 934A      ST	R20,-Y
     3F8 936A      ST	R22,-Y
(0118)  }
(0119) }
(0120) 
(0121) uchar Read_bit ()				
(0122) {
(0123)   uchar i=0;
(0124)   uchar data_r=0;
     3F9 2744      CLR	R20
(0125) 
(0126)   Set_ds1302_data;
     3FA 9AAA      SBI	0x15,2
(0127)   data_in;
     3FB 98A2      CBI	0x14,2
(0128)   Delayus(15);
     3FC E00F      LDI	R16,0xF
     3FD DF64      RCALL	_Delayus
(0129) 
(0130)  for(i=8;i>0;i--){
     3FE E068      LDI	R22,0x8
     3FF C007      RJMP	0x0407
(0131) 	data_r>>=1;
     400 9546      LSR	R20
(0132) 	
(0133) 	
(0134) 	 if(data_in_read)
     401 9B9A      SBIS	0x13,2
     402 C001      RJMP	0x0404
(0135) 	{
(0136) 		data_r|=0x80;
     403 6840      ORI	R20,0x80
(0137) 	}	
(0138) 	Set_ds1302_clk;//ds1302_clk = 1;
     404 9AAB      SBI	0x15,3
(0139)  	
(0140) 	Clr_ds1302_clk;//ds1302_clk = 0; 
     405 98AB      CBI	0x15,3
     406 956A      DEC	R22
     407 E080      LDI	R24,0
     408 1786      CP	R24,R22
     409 F3B0      BCS	0x0400
(0141)  
(0142)   }
(0143)   
(0144)   data_out;
     40A 9AA2      SBI	0x14,2
(0145) return data_r;
     40B 2F04      MOV	R16,R20
     40C 9169      LD	R22,Y+
     40D 9149      LD	R20,Y+
     40E 9508      RET
FILE: E:\AVR实验\ds1302+12864时钟\jhd12864.c
(0001) #include "jhd12864.h"
(0002) 
(0003) 
(0004) delayms()
(0005) {  unsigned int i=0;
_delayms:
  i                    --> R16
     40F 2700      CLR	R16
     410 2711      CLR	R17
     411 C002      RJMP	0x0414
(0006)    while(i!=1140)
(0007)    {
(0008)    i++;
     412 5F0F      SUBI	R16,0xFF
     413 4F1F      SBCI	R17,0xFF
     414 3704      CPI	R16,0x74
     415 E0E4      LDI	R30,4
     416 071E      CPC	R17,R30
     417 F7D1      BNE	0x0412
     418 9508      RET
_delay_1ms:
  j                    --> R20
  t                    --> R10
     419 D298      RCALL	push_xgset300C
     41A 0158      MOVW	R10,R16
(0009)    }
(0010) }
(0011) 

⌨️ 快捷键说明

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