📄 ds1305.lis
字号:
.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 + -