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

📄 ds1305.lst

📁 DS1305程序代码,在网上很少,一般不容易找到.现上传一个给大家分享.
💻 LST
📖 第 1 页 / 共 4 页
字号:
__start:
__text_start:
    010C E5CF      LDI	R28,0x5F
    010D E0D4      LDI	R29,4
    010E BFCD      OUT	0x3D,R28
    010F BFDE      OUT	0x3E,R29
    0110 51C0      SUBI	R28,0x10
    0111 40D0      SBCI	R29,0
    0112 EA0A      LDI	R16,0xAA
    0113 8308      STD	Y+0,R16
    0114 2400      CLR	R0
    0115 E4EE      LDI	R30,0x4E
    0116 E0F1      LDI	R31,1
    0117 E011      LDI	R17,1
    0118 37E1      CPI	R30,0x71
    0119 07F1      CPC	R31,R17
    011A F011      BEQ	0x011D
    011B 9201      ST	R0,Z+
    011C CFFB      RJMP	0x0118
    011D 8300      STD	Z+0,R16
    011E E2E9      LDI	R30,0x29
    011F E0F1      LDI	R31,1
    0120 E6A0      LDI	R26,0x60
    0121 E0B0      LDI	R27,0
    0122 E012      LDI	R17,2
    0123 31E7      CPI	R30,0x17
    0124 07F1      CPC	R31,R17
    0125 F021      BEQ	0x012A
    0126 95C8      LPM
    0127 9631      ADIW	R30,1
    0128 920D      ST	R0,X+
    0129 CFF9      RJMP	0x0123
    012A D00E      RCALL	_main
_exit:
    012B CFFF      RJMP	_exit
_int0_isr:
    012C 922A      ST	R2,-Y
    012D 938A      ST	R24,-Y
    012E B62F      IN	R2,0x3F
    012F 922A      ST	R2,-Y
FILE: F:\ziliao\JTAG\example\DS1305\DS1305.c
(0001) /*DS1302时钟显示*/
(0002) 
(0003) #include <iom8v.h>
(0004) #include <macros.h>
(0005) #include <stdio.h>
(0006) 
(0007) /*串口波特率设置*/
(0008) #define fosc 7372800  //晶振7.3728M
(0009) #define baud 9600    //波特率设置
(0010) 
(0011) #define ds1305_rst   PC0 
(0012) #define ds1305_sclk   PC1  
(0013) #define ds1305_io   PC2
(0014) #define set_ds1305_rst_ddr()   DDRC|=1<<ds1305_rst 
(0015) #define set_ds1305_rst()     PORTC|=1<<ds1305_rst 
(0016) #define clr_ds1305_rst()     PORTC&=~(1<<ds1305_rst) 
(0017) #define set_ds1305_io_ddr()     DDRC|=1<<ds1305_io 
(0018) #define set_ds1305_io()       PORTC|=1<<ds1305_io 
(0019) #define clr_ds1305_io()       PORTC&=~(1<<ds1305_io) 
(0020) #define clr_ds1305_io_ddr()     DDRC&=~(1<<ds1305_io) 
(0021) #define in_ds1305_io()       PINC&(1<<ds1305_io) 
(0022) #define set_ds1305_sclk_ddr()   DDRC|=1<<ds1305_sclk 
(0023) #define set_ds1305_sclk()     PORTC|=1<<ds1305_sclk 
(0024) #define clr_ds1305_sclk()     PORTC&=~(1<<ds1305_sclk) 
(0025) 
(0026) #define ds1305_sec_reg     0x00 
(0027) #define ds1305_min_reg     0x01 
(0028) #define ds1305_hr_reg      0x02 
(0029) #define ds1305_date_reg    0x04 
(0030) #define ds1305_month_reg   0x05 
(0031) #define ds1305_day_reg     0x03 
(0032) #define ds1305_year_reg    0x06 
(0033) #define alarm0_sec_reg     0x07
(0034) #define alarm0_min_reg     0x08
(0035) #define alarm0_hr_reg      0x09
(0036) #define alarm0_day_reg     0x0a
(0037) #define alarm1_sec_reg     0x0b
(0038) #define alarm1_min_reg     0x0c
(0039) #define alarm1_hr_reg      0x0d
(0040) #define alarm1_day_reg     0x0e
(0041) #define ds1305_control_reg   0x0f 
(0042) #define ds1305_status_reg   0x10 
(0043) #define ds1305_charger_reg   0x11 
(0044) 
(0045) 
(0046) unsigned char month,week,day,hour,minute,second;
(0047) unsigned int year;
(0048) #pragma interrupt_handler int0_isr:2
(0049) void int0_isr(void)
(0050) {
(0051) PORTB^=0X01;
    0130 E081      LDI	R24,1
    0131 B228      IN	R2,0x18
    0132 2628      EOR	R2,R24
    0133 BA28      OUT	0x18,R2
    0134 9029      LD	R2,Y+
    0135 BE2F      OUT	0x3F,R2
    0136 9189      LD	R24,Y+
    0137 9029      LD	R2,Y+
    0138 9518      RETI
_main:
  guangbiao            --> Y+13
  queren_zhi1          --> Y+13
  jia_zhi1             --> Y+13
  jian_zhi1            --> Y+13
  tuichu_zhi1          --> Y+13
  queren_zhi           --> Y+13
  jia_zhi              --> Y+13
  jian_zhi             --> Y+13
  tuichu_zhi           --> Y+13
  she_zhi              --> Y+13
  queren1              --> Y+13
  tuichu1              --> Y+13
  jian1                --> Y+13
  jia1                 --> Y+13
  queren               --> Y+13
  tuichu               --> Y+13
  jian                 --> Y+13
  jia                  --> Y+13
  shu                  --> Y+13
  j                    --> Y+13
    0139 972C      SBIW	R28,0xC
(0052) 
(0053) }
(0054) 
(0055) void main(void)
(0056) { unsigned char j,shu,jia,jian,tuichu,queren,jia1,jian1,tuichu1,queren1,she_zhi,tuichu_zhi,jian_zhi,jia_zhi,queren_zhi,tuichu_zhi1,jian_zhi1,jia_zhi1,queren_zhi1,guangbiao;
(0057)   //guangbiao=0;
(0058)   CLI();
    013A 94F8      BCLR	7
(0059)   DDRC=0XFF;
    013B EF8F      LDI	R24,0xFF
    013C BB84      OUT	0x14,R24
(0060)   PORTC|=0x07;
    013D B385      IN	R24,0x15
    013E 6087      ORI	R24,7
    013F BB85      OUT	0x15,R24
(0061)   DDRB=0XFF;
    0140 EF8F      LDI	R24,0xFF
    0141 BB87      OUT	0x17,R24
(0062)   PORTB=0x00;
    0142 2422      CLR	R2
    0143 BA28      OUT	0x18,R2
(0063)   PORTD=0XFF;
    0144 BB82      OUT	0x12,R24
(0064)   DDRD=0X00;
    0145 BA21      OUT	0x11,R2
(0065)   MCUCR=0x00;
    0146 BE25      OUT	0x35,R2
(0066)   GICR=0X40;
    0147 E480      LDI	R24,0x40
    0148 BF8B      OUT	0x3B,R24
(0067)   uart_init();
    0149 D1BD      RCALL	_uart_init
(0068)   ds1305_init();
    014A D16B      RCALL	_ds1305_init
(0069)   SEI();
    014B 9478      BSET	7
    014C C02D      RJMP	0x017A
(0070) 
(0071) while(1)
(0072) {  	
(0073)     delay_nms(500);
    014D EF04      LDI	R16,0xF4
    014E E011      LDI	R17,1
    014F D1AA      RCALL	_delay_nms
(0074) 	ds1305_read_time();
    0150 D0B0      RCALL	_ds1305_read_time
(0075) 	printf("当前的时间是:  %d年%d月%d日  星期%d %d:%d:%d\n",year,month,day,week,hour,minute,second);
    0151 90200150  LDS	R2,second
    0153 2433      CLR	R3
    0154 863B      STD	Y+11,R3
    0155 862A      STD	Y+10,R2
    0156 90200151  LDS	R2,minute
    0158 2433      CLR	R3
    0159 8639      STD	Y+9,R3
    015A 8628      STD	Y+8,R2
    015B 90200152  LDS	R2,hour
    015D 2433      CLR	R3
    015E 823F      STD	Y+7,R3
    015F 822E      STD	Y+6,R2
    0160 90200154  LDS	R2,week
    0162 2433      CLR	R3
    0163 823D      STD	Y+5,R3
    0164 822C      STD	Y+4,R2
    0165 90200153  LDS	R2,day
    0167 2433      CLR	R3
    0168 823B      STD	Y+3,R3
    0169 822A      STD	Y+2,R2
    016A 90200155  LDS	R2,month
    016C 2433      CLR	R3
    016D 8239      STD	Y+1,R3
    016E 8228      STD	Y+0,R2
    016F 9120014E  LDS	R18,year
    0171 9130014F  LDS	R19,year+1
    0173 E600      LDI	R16,0x60
    0174 E010      LDI	R17,0
    0175 D499      RCALL	_printf
(0076) 	putchar(0x0a);
    0176 E00A      LDI	R16,0xA
    0177 D3CC      RCALL	_putchar
(0077) 	putchar(0x0d);
    0178 E00D      LDI	R16,0xD
    0179 D3CA      RCALL	_putchar
    017A CFD2      RJMP	0x014D
    017B 962C      ADIW	R28,0xC
    017C 9508      RET
_ds1305_write:
  i                    --> R20
  data                 --> R18
  reg                  --> R16
    017D D3A6      RCALL	push_gset1
(0078) }
(0079) 
(0080) }
(0081) 
(0082) void ds1305_write(unsigned char reg,unsigned char data) 
(0083) { 
(0084)   unsigned char i=0; 
    017E 2744      CLR	R20
(0085)    reg+=0x80;//写标志
    017F 5800      SUBI	R16,0x80
(0086)   set_ds1305_io_ddr(); 
    0180 9AA2      SBI	0x14,2
(0087)   //asm("nop"); 
(0088)   //asm("nop"); 
(0089)   clr_ds1305_rst(); 
    0181 98A8      CBI	0x15,0
(0090)   asm("nop"); 
    0182 0000      NOP
(0091)   asm("nop"); 
    0183 0000      NOP
(0092)   clr_ds1305_sclk(); 
    0184 98A9      CBI	0x15,1
(0093)   asm("nop"); 
    0185 0000      NOP
(0094)   asm("nop"); 
    0186 0000      NOP
(0095)   set_ds1305_rst(); 
    0187 9AA8      SBI	0x15,0
(0096)   asm("nop"); 
    0188 0000      NOP
(0097)   asm("nop"); 
    0189 0000      NOP
(0098)   for(i=8;i>0;i--) 
    018A E048      LDI	R20,0x8
    018B C00F      RJMP	0x019B
(0099)   {     
(0100)     if(reg&0x01) set_ds1305_io(); 
    018C FF00      SBRS	R16,0
    018D C002      RJMP	0x0190
    018E 9AAA      SBI	0x15,2
    018F C001      RJMP	0x0191
(0101)     else clr_ds1305_io(); 
    0190 98AA      CBI	0x15,2
(0102)     asm("nop"); 
    0191 0000      NOP
(0103)     asm("nop"); 
    0192 0000      NOP
(0104)     set_ds1305_sclk();   
    0193 9AA9      SBI	0x15,1
(0105)     asm("nop"); 
    0194 0000      NOP
(0106)     asm("nop"); 
    0195 0000      NOP
(0107)     clr_ds1305_sclk(); 
    0196 98A9      CBI	0x15,1
(0108)     asm("nop"); 
    0197 0000      NOP
(0109)     asm("nop"); 
    0198 0000      NOP
(0110)     reg>>=1; 
    0199 9506      LSR	R16
    019A 954A      DEC	R20
    019B 2422      CLR	R2
    019C 1624      CP	R2,R20
    019D F370      BCS	0x018C
(0111)   } 
(0112)   for(i=8;i>0;i--) 
    019E E048      LDI	R20,0x8
    019F C00F      RJMP	0x01AF
(0113)   {     
(0114)     if(data&0x01) set_ds1305_io(); 
    01A0 FF20      SBRS	R18,0
    01A1 C002      RJMP	0x01A4
    01A2 9AAA      SBI	0x15,2
    01A3 C001      RJMP	0x01A5
(0115)     else clr_ds1305_io(); 
    01A4 98AA      CBI	0x15,2
(0116)     asm("nop"); 
    01A5 0000      NOP
(0117)     asm("nop"); 
    01A6 0000      NOP
(0118)     set_ds1305_sclk(); 
    01A7 9AA9      SBI	0x15,1
(0119)     asm("nop"); 
    01A8 0000      NOP
(0120)     asm("nop"); 
    01A9 0000      NOP
(0121)     clr_ds1305_sclk(); 
    01AA 98A9      CBI	0x15,1
(0122)     asm("nop"); 
    01AB 0000      NOP
(0123)     asm("nop"); 
    01AC 0000      NOP
(0124)     data>>=1; 
    01AD 9526      LSR	R18
    01AE 954A      DEC	R20
    01AF 2422      CLR	R2
    01B0 1624      CP	R2,R20
    01B1 F370      BCS	0x01A0
(0125)   } 
(0126)   clr_ds1305_rst(); 
    01B2 98A8      CBI	0x15,0
(0127)   asm("nop"); 
    01B3 0000      NOP
(0128)   asm("nop"); 
    01B4 0000      NOP
(0129)   clr_ds1305_io_ddr(); 
    01B5 98A2      CBI	0x14,2
(0130)   asm("nop"); 
    01B6 0000      NOP
(0131)   asm("nop"); 
    01B7 0000      NOP
    01B8 D36E      RCALL	pop_gset1
    01B9 9508      RET
_ds1305_read:
  data                 --> R20
  i                    --> R22
  reg                  --> R16
    01BA D367      RCALL	push_gset2
(0132) } 
(0133) unsigned char ds1305_read(unsigned char reg) 
(0134) { 
(0135)   unsigned char data=0; 
    01BB 2744      CLR	R20
(0136)   unsigned char i=0; 
    01BC 2766      CLR	R22
(0137)   
(0138)   set_ds1305_io_ddr();   
    01BD 9AA2      SBI	0x14,2
(0139)   //asm("nop"); 
(0140)   //asm("nop"); 
(0141)   clr_ds1305_rst(); 
    01BE 98A8      CBI	0x15,0
(0142)   asm("nop"); 
    01BF 0000      NOP
(0143)   asm("nop"); 
    01C0 0000      NOP
(0144)   clr_ds1305_sclk(); 
    01C1 98A9      CBI	0x15,1
(0145)   asm("nop"); 
    01C2 0000      NOP
(0146)   asm("nop"); 
    01C3 0000      NOP
(0147)   set_ds1305_rst(); 
    01C4 9AA8      SBI	0x15,0
(0148)   asm("nop"); 
    01C5 0000      NOP
(0149)   asm("nop"); 
    01C6 0000      NOP
(0150)   for(i=8;i>0;i--) 
    01C7 E068      LDI	R22,0x8
    01C8 C00F      RJMP	0x01D8
(0151)   { 
(0152)     
(0153)     if(reg&0x01) set_ds1305_io(); 
    01C9 FF00      SBRS	R16,0
    01CA C002      RJMP	0x01CD
    01CB 9AAA      SBI	0x15,2
    01CC C001      RJMP	0x01CE
(0154)     else clr_ds1305_io(); 
    01CD 98AA      CBI	0x15,2
(0155)     asm("nop"); 
    01CE 0000      NOP
(0156)     asm("nop"); 
    01CF 0000      NOP
(0157)     set_ds1305_sclk(); 
    01D0 9AA9      SBI	0x15,1
(0158)     asm("nop"); 
    01D1 0000      NOP
(0159)     asm("nop"); 
    01D2 0000      NOP
(0160)     clr_ds1305_sclk(); 
    01D3 98A9      CBI	0x15,1
(0161)     asm("nop"); 
    01D4 0000      NOP
(0162)     asm("nop"); 
    01D5 0000      NOP
(0163)     reg>>=1; 
    01D6 9506      LSR	R16
    01D7 956A      DEC	R22
    01D8 2422      CLR	R2
    01D9 1626      CP	R2,R22
    01DA F370      BCS	0x01C9
(0164)   } 
(0165)   clr_ds1305_io_ddr(); 
    01DB 98A2      CBI	0x14,2
(0166)   asm("nop"); 
    01DC 0000      NOP
(0167)   asm("nop"); 
    01DD 0000      NOP
(0168)   for(i=8;i>0;i--) 
    01DE E068      LDI	R22,0x8
    01DF C00D      RJMP	0x01ED
(0169)   {   
(0170)     data>>=1; 

⌨️ 快捷键说明

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