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

📄 ds1305.lis

📁 DS1305程序代码,在网上很少,一般不容易找到.现上传一个给大家分享.
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module DS1305.c
                        .area vector(rom, abs)
                        .org 2
 0002 00C0              rjmp _int0_isr
                        .area text(rom, con, rel)
 0000                   .dbfile F:\ziliao\JTAG\example\DS1305\DS1305.c
 0000                   .dbfunc e int0_isr _int0_isr fV
                        .even
 0000           _int0_isr::
 0000 2A92              st -y,R2
 0002 8A93              st -y,R24
 0004 2FB6              in R2,0x3f
 0006 2A92              st -y,R2
 0008                   .dbline -1
 0008                   .dbline 50
 0008           ; /*DS1302时钟显示*/
 0008           ; 
 0008           ; #include <iom8v.h>
 0008           ; #include <macros.h>
 0008           ; #include <stdio.h>
 0008           ; 
 0008           ; /*串口波特率设置*/
 0008           ; #define fosc 7372800  //晶振7.3728M
 0008           ; #define baud 9600    //波特率设置
 0008           ; 
 0008           ; #define ds1305_rst   PC0 
 0008           ; #define ds1305_sclk   PC1  
 0008           ; #define ds1305_io   PC2
 0008           ; #define set_ds1305_rst_ddr()   DDRC|=1<<ds1305_rst 
 0008           ; #define set_ds1305_rst()     PORTC|=1<<ds1305_rst 
 0008           ; #define clr_ds1305_rst()     PORTC&=~(1<<ds1305_rst) 
 0008           ; #define set_ds1305_io_ddr()     DDRC|=1<<ds1305_io 
 0008           ; #define set_ds1305_io()       PORTC|=1<<ds1305_io 
 0008           ; #define clr_ds1305_io()       PORTC&=~(1<<ds1305_io) 
 0008           ; #define clr_ds1305_io_ddr()     DDRC&=~(1<<ds1305_io) 
 0008           ; #define in_ds1305_io()       PINC&(1<<ds1305_io) 
 0008           ; #define set_ds1305_sclk_ddr()   DDRC|=1<<ds1305_sclk 
 0008           ; #define set_ds1305_sclk()     PORTC|=1<<ds1305_sclk 
 0008           ; #define clr_ds1305_sclk()     PORTC&=~(1<<ds1305_sclk) 
 0008           ; 
 0008           ; #define ds1305_sec_reg     0x00 
 0008           ; #define ds1305_min_reg     0x01 
 0008           ; #define ds1305_hr_reg      0x02 
 0008           ; #define ds1305_date_reg    0x04 
 0008           ; #define ds1305_month_reg   0x05 
 0008           ; #define ds1305_day_reg     0x03 
 0008           ; #define ds1305_year_reg    0x06 
 0008           ; #define alarm0_sec_reg     0x07
 0008           ; #define alarm0_min_reg     0x08
 0008           ; #define alarm0_hr_reg      0x09
 0008           ; #define alarm0_day_reg     0x0a
 0008           ; #define alarm1_sec_reg     0x0b
 0008           ; #define alarm1_min_reg     0x0c
 0008           ; #define alarm1_hr_reg      0x0d
 0008           ; #define alarm1_day_reg     0x0e
 0008           ; #define ds1305_control_reg   0x0f 
 0008           ; #define ds1305_status_reg   0x10 
 0008           ; #define ds1305_charger_reg   0x11 
 0008           ; 
 0008           ; 
 0008           ; unsigned char month,week,day,hour,minute,second;
 0008           ; unsigned int year;
 0008           ; #pragma interrupt_handler int0_isr:2
 0008           ; void int0_isr(void)
 0008           ; {
 0008                   .dbline 51
 0008           ; PORTB^=0X01;
 0008 81E0              ldi R24,1
 000A 28B2              in R2,0x18
 000C 2826              eor R2,R24
 000E 28BA              out 0x18,R2
 0010                   .dbline -2
 0010           L1:
 0010 2990              ld R2,y+
 0012 2FBE              out 0x3f,R2
 0014 8991              ld R24,y+
 0016 2990              ld R2,y+
 0018                   .dbline 0 ; func end
 0018 1895              reti
 001A                   .dbend
 001A                   .dbfunc e main _main fV
 001A           ;      guangbiao -> <dead>
 001A           ;    queren_zhi1 -> <dead>
 001A           ;       jia_zhi1 -> <dead>
 001A           ;      jian_zhi1 -> <dead>
 001A           ;    tuichu_zhi1 -> <dead>
 001A           ;     queren_zhi -> <dead>
 001A           ;        jia_zhi -> <dead>
 001A           ;       jian_zhi -> <dead>
 001A           ;     tuichu_zhi -> <dead>
 001A           ;        she_zhi -> <dead>
 001A           ;        queren1 -> <dead>
 001A           ;        tuichu1 -> <dead>
 001A           ;          jian1 -> <dead>
 001A           ;           jia1 -> <dead>
 001A           ;         queren -> <dead>
 001A           ;         tuichu -> <dead>
 001A           ;           jian -> <dead>
 001A           ;            jia -> <dead>
 001A           ;            shu -> <dead>
 001A           ;              j -> <dead>
                        .even
 001A           _main::
 001A 2C97              sbiw R28,12
 001C                   .dbline -1
 001C                   .dbline 56
 001C           ; 
 001C           ; }
 001C           ; 
 001C           ; void main(void)
 001C           ; { 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;
 001C                   .dbline 58
 001C           ;   //guangbiao=0;
 001C           ;   CLI();
 001C F894              cli
 001E                   .dbline 59
 001E           ;   DDRC=0XFF;
 001E 8FEF              ldi R24,255
 0020 84BB              out 0x14,R24
 0022                   .dbline 60
 0022           ;   PORTC|=0x07;
 0022 85B3              in R24,0x15
 0024 8760              ori R24,7
 0026 85BB              out 0x15,R24
 0028                   .dbline 61
 0028           ;   DDRB=0XFF;
 0028 8FEF              ldi R24,255
 002A 87BB              out 0x17,R24
 002C                   .dbline 62
 002C           ;   PORTB=0x00;
 002C 2224              clr R2
 002E 28BA              out 0x18,R2
 0030                   .dbline 63
 0030           ;   PORTD=0XFF;
 0030 82BB              out 0x12,R24
 0032                   .dbline 64
 0032           ;   DDRD=0X00;
 0032 21BA              out 0x11,R2
 0034                   .dbline 65
 0034           ;   MCUCR=0x00;
 0034 25BE              out 0x35,R2
 0036                   .dbline 66
 0036           ;   GICR=0X40;
 0036 80E4              ldi R24,64
 0038 8BBF              out 0x3b,R24
 003A                   .dbline 67
 003A           ;   uart_init();
 003A BDD1              rcall _uart_init
 003C                   .dbline 68
 003C           ;   ds1305_init();
 003C 6BD1              rcall _ds1305_init
 003E                   .dbline 69
 003E           ;   SEI();
 003E 7894              sei
 0040 2DC0              rjmp L4
 0042           L3:
 0042                   .dbline 72
 0042                   .dbline 73
 0042 04EF              ldi R16,500
 0044 11E0              ldi R17,1
 0046 AAD1              rcall _delay_nms
 0048                   .dbline 74
 0048 B0D0              rcall _ds1305_read_time
 004A                   .dbline 75
 004A 20900200          lds R2,_second
 004E 3324              clr R3
 0050 3B86              std y+11,R3
 0052 2A86              std y+10,R2
 0054 20900300          lds R2,_minute
 0058 3324              clr R3
 005A 3986              std y+9,R3
 005C 2886              std y+8,R2
 005E 20900400          lds R2,_hour
 0062 3324              clr R3
 0064 3F82              std y+7,R3
 0066 2E82              std y+6,R2
 0068 20900600          lds R2,_week
 006C 3324              clr R3
 006E 3D82              std y+5,R3
 0070 2C82              std y+4,R2
 0072 20900500          lds R2,_day
 0076 3324              clr R3
 0078 3B82              std y+3,R3
 007A 2A82              std y+2,R2
 007C 20900700          lds R2,_month
 0080 3324              clr R3
 0082 3982              std y+1,R3
 0084 2882              std y+0,R2
 0086 20910000          lds R18,_year
 008A 30910100          lds R19,_year+1
 008E 00E0              ldi R16,<L6
 0090 10E0              ldi R17,>L6
 0092 00D0              rcall _printf
 0094                   .dbline 76
 0094 0AE0              ldi R16,10
 0096 00D0              rcall _putchar
 0098                   .dbline 77
 0098 0DE0              ldi R16,13
 009A 00D0              rcall _putchar
 009C                   .dbline 78
 009C           L4:
 009C                   .dbline 71
 009C D2CF              rjmp L3
 009E           X0:
 009E                   .dbline -2
 009E           L2:
 009E 2C96              adiw R28,12
 00A0                   .dbline 0 ; func end
 00A0 0895              ret
 00A2                   .dbsym l guangbiao 13 c
 00A2                   .dbsym l queren_zhi1 13 c
 00A2                   .dbsym l jia_zhi1 13 c
 00A2                   .dbsym l jian_zhi1 13 c
 00A2                   .dbsym l tuichu_zhi1 13 c
 00A2                   .dbsym l queren_zhi 13 c
 00A2                   .dbsym l jia_zhi 13 c
 00A2                   .dbsym l jian_zhi 13 c
 00A2                   .dbsym l tuichu_zhi 13 c
 00A2                   .dbsym l she_zhi 13 c
 00A2                   .dbsym l queren1 13 c
 00A2                   .dbsym l tuichu1 13 c
 00A2                   .dbsym l jian1 13 c
 00A2                   .dbsym l jia1 13 c
 00A2                   .dbsym l queren 13 c
 00A2                   .dbsym l tuichu 13 c
 00A2                   .dbsym l jian 13 c
 00A2                   .dbsym l jia 13 c
 00A2                   .dbsym l shu 13 c
 00A2                   .dbsym l j 13 c
 00A2                   .dbend
 00A2                   .dbfunc e ds1305_write _ds1305_write fV
 00A2           ;              i -> R20
 00A2           ;           data -> R18
 00A2           ;            reg -> R16
                        .even
 00A2           _ds1305_write::
 00A2 00D0              rcall push_gset1
 00A4                   .dbline -1
 00A4                   .dbline 83
 00A4           ; 
 00A4           ; while(1)
 00A4           ; {     
 00A4           ;     delay_nms(500);
 00A4           ;       ds1305_read_time();
 00A4           ;       printf("当前的时间是:  %d年%d月%d日  星期%d %d:%d:%d\n",year,month,day,week,hour,minute,second);
 00A4           ;       putchar(0x0a);
 00A4           ;       putchar(0x0d);
 00A4           ; }
 00A4           ; 
 00A4           ; }
 00A4           ; 
 00A4           ; void ds1305_write(unsigned char reg,unsigned char data) 
 00A4           ; { 
 00A4                   .dbline 84
 00A4           ;   unsigned char i=0; 
 00A4 4427              clr R20
 00A6                   .dbline 85
 00A6           ;    reg+=0x80;//写标志
 00A6 0058              subi R16,128    ; addi 128
 00A8                   .dbline 86
 00A8           ;   set_ds1305_io_ddr(); 
 00A8 A29A              sbi 0x14,2
 00AA                   .dbline 89
 00AA           ;   //asm("nop"); 
 00AA           ;   //asm("nop"); 
 00AA           ;   clr_ds1305_rst(); 
 00AA A898              cbi 0x15,0
 00AC                   .dbline 90
 00AC           ;   asm("nop"); 
 00AC 0000              nop
 00AE                   .dbline 91
 00AE           ;   asm("nop"); 
 00AE 0000              nop
 00B0                   .dbline 92
 00B0           ;   clr_ds1305_sclk(); 
 00B0 A998              cbi 0x15,1
 00B2                   .dbline 93
 00B2           ;   asm("nop"); 
 00B2 0000              nop
 00B4                   .dbline 94
 00B4           ;   asm("nop"); 
 00B4 0000              nop
 00B6                   .dbline 95
 00B6           ;   set_ds1305_rst(); 
 00B6 A89A              sbi 0x15,0
 00B8                   .dbline 96
 00B8           ;   asm("nop"); 
 00B8 0000              nop
 00BA                   .dbline 97
 00BA           ;   asm("nop"); 
 00BA 0000              nop
 00BC                   .dbline 98
 00BC           ;   for(i=8;i>0;i--) 
 00BC 48E0              ldi R20,8
 00BE 0FC0              rjmp L11
 00C0           L8:
 00C0                   .dbline 99
 00C0           ;   {     
 00C0                   .dbline 100
 00C0           ;     if(reg&0x01) set_ds1305_io(); 
 00C0 00FF              sbrs R16,0
 00C2 02C0              rjmp L12
 00C4                   .dbline 100
 00C4 AA9A              sbi 0x15,2
 00C6 01C0              rjmp L13
 00C8           L12:
 00C8                   .dbline 101
 00C8           ;     else clr_ds1305_io(); 
 00C8 AA98              cbi 0x15,2
 00CA           L13:
 00CA                   .dbline 102
 00CA 0000              nop
 00CC                   .dbline 103
 00CC 0000              nop
 00CE                   .dbline 104
 00CE A99A              sbi 0x15,1
 00D0                   .dbline 105
 00D0 0000              nop
 00D2                   .dbline 106
 00D2 0000              nop
 00D4                   .dbline 107
 00D4 A998              cbi 0x15,1
 00D6                   .dbline 108
 00D6 0000              nop
 00D8                   .dbline 109
 00D8 0000              nop
 00DA                   .dbline 110
 00DA 0695              lsr R16
 00DC                   .dbline 111
 00DC           L9:
 00DC                   .dbline 98
 00DC 4A95              dec R20
 00DE           L11:
 00DE                   .dbline 98
 00DE 2224              clr R2
 00E0 2416              cp R2,R20
 00E2 70F3              brlo L8
 00E4                   .dbline 112
 00E4           ;     asm("nop"); 
 00E4           ;     asm("nop"); 
 00E4           ;     set_ds1305_sclk();   
 00E4           ;     asm("nop"); 
 00E4           ;     asm("nop"); 
 00E4           ;     clr_ds1305_sclk(); 
 00E4           ;     asm("nop"); 
 00E4           ;     asm("nop"); 
 00E4           ;     reg>>=1; 
 00E4           ;   } 
 00E4           ;   for(i=8;i>0;i--) 
 00E4 48E0              ldi R20,8
 00E6 0FC0              rjmp L17
 00E8           L14:
 00E8                   .dbline 113
 00E8           ;   {     
 00E8                   .dbline 114
 00E8           ;     if(data&0x01) set_ds1305_io(); 
 00E8 20FF              sbrs R18,0
 00EA 02C0              rjmp L18
 00EC                   .dbline 114
 00EC AA9A              sbi 0x15,2
 00EE 01C0              rjmp L19
 00F0           L18:
 00F0                   .dbline 115
 00F0           ;     else clr_ds1305_io(); 
 00F0 AA98              cbi 0x15,2
 00F2           L19:
 00F2                   .dbline 116
 00F2 0000              nop
 00F4                   .dbline 117
 00F4 0000              nop
 00F6                   .dbline 118
 00F6 A99A              sbi 0x15,1
 00F8                   .dbline 119
 00F8 0000              nop
 00FA                   .dbline 120
 00FA 0000              nop
 00FC                   .dbline 121
 00FC A998              cbi 0x15,1
 00FE                   .dbline 122
 00FE 0000              nop
 0100                   .dbline 123
 0100 0000              nop
 0102                   .dbline 124
 0102 2695              lsr R18
 0104                   .dbline 125
 0104           L15:
 0104                   .dbline 112

⌨️ 快捷键说明

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