📄 ds1302.lis
字号:
.module DS1302.c
.area data(ram, con, rel)
0000 _WriteAddress::
0000 .blkb 2
.area idata
0000 8C88 .byte 140,136
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 8684 .byte 134,132
.area data(ram, con, rel)
0004 .blkb 2
.area idata
0004 8280 .byte 130,128
.area data(ram, con, rel)
0006 .blkb 1
.area idata
0006 8A .byte 138
.area data(ram, con, rel)
0007 .dbfile E:\biyesheji\TESTBE~1\DS1302\程序/ds1302.h
0007 .dbsym e WriteAddress _WriteAddress A[7:7]c
0007 _WriteTime::
0007 .blkb 2
.area idata
0007 1012 .byte 16,18
.area data(ram, con, rel)
0009 .dbfile E:\biyesheji\TESTBE~1\DS1302\程序/ds1302.h
0009 .blkb 2
.area idata
0009 3124 .byte 49,36
.area data(ram, con, rel)
000B .dbfile E:\biyesheji\TESTBE~1\DS1302\程序/ds1302.h
000B .blkb 2
.area idata
000B 5030 .byte 'P,48
.area data(ram, con, rel)
000D .dbfile E:\biyesheji\TESTBE~1\DS1302\程序/ds1302.h
000D .blkb 1
.area idata
000D 00 .byte 0
.area data(ram, con, rel)
000E .dbfile E:\biyesheji\TESTBE~1\DS1302\程序/ds1302.h
000E .dbsym e WriteTime _WriteTime A[7:7]c
.area text(rom, con, rel)
0000 .dbfile E:\biyesheji\TESTBE~1\DS1302\程序/ds1302.h
0000 .dbfunc e DS1302_set _DS1302_set fV
0000 ; i -> R16
.even
0000 _DS1302_set::
0000 .dbline -1
0000 .dbline 44
0000 ; //ICC-AVR 修改日期: 2006-10-29 15:38:44
0000 ; //姓名:荣俊齐
0000 ; // Target : M8
0000 ; // Crystal: 1.0000Mhz
0000 ;
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ; #include "ds1302.h"
0000 ; #include "DELAY.C"
0000 ; const char SEG_table[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
0000 ; char Sec_buffer[4]={0,0,0,0};
0000 ; char Min_buffer[4]={0,0,0,0};
0000 ;
0000 ; /******************************************************************************
0000 ; 定义164的时钟和数据线
0000 ; ********************************************************************************/
0000 ; #define DATA_1 PORTD|=(1<<0)
0000 ; #define DATA_0 PORTD&=~(1<<0)
0000 ; #define CLK_1 PORTD|=(1<<1)
0000 ; #define CLK_0 PORTD&=~(1<<1)
0000 ; /******************************************************************************
0000 ; 定义数码管的选择端口
0000 ; ********************************************************************************/
0000 ; #define LED1 PORTD=0X07//LED2
0000 ; #define LED2 PORTD=0X0B//LED1
0000 ; #define LED3 PORTD=0X13//LED3
0000 ; #define LED4 PORTD=0X23//LED4
0000 ; #define LED0 PORTD=0X03//灭
0000 ;
0000 ; /*******************************************************************************
0000 ; 单片机初始化程序
0000 ;
0000 ; ******************************************************************************/
0000 ; void port_init(void)
0000 ; {
0000 ; PORTB = 0x00;
0000 ; DDRB = 0x00;
0000 ; PORTC = 0x00; //m103 output only
0000 ; DDRC = 0xff;
0000 ; PORTD = 0x00;
0000 ; DDRD = 0xFF;
0000 ; }
0000 ;
0000 ; //TIMER1 initialize - prescale:1
0000 .dbline 45
0000 ; // WGM: 0) Normal, TOP=0xFFFF
0000 A998 cbi 0x15,1
0002 .dbline 46
0002 ; // desired value: 1mSec
0002 A898 cbi 0x15,0
0004 .dbline 47
0004 ; // actual value: 1.000mSec (0.0%)
0004 0027 clr R16
0006 02C0 rjmp L5
0008 L2:
0008 .dbline 48
0008 .dbline 49
0008 0000 nop
000A .dbline 50
000A L3:
000A .dbline 47
000A 0395 inc R16
000C L5:
000C .dbline 47
000C 0830 cpi R16,8
000E E0F3 brlo L2
0010 .dbline 51
0010 ; void timer1_init(void)
0010 ; {
0010 ; TCCR1B = 0x00; //stop
0010 ; TCNT1H = 0xFC; //setup
0010 A89A sbi 0x15,0
0012 .dbline -2
0012 L1:
0012 .dbline 0 ; func end
0012 0895 ret
0014 .dbsym r i 16 c
0014 .dbend
0014 .dbfunc e DS1302_Write _DS1302_Write fV
0014 ; i -> R20,R21
0014 ; x -> R22
.even
0014 _DS1302_Write::
0014 00D0 rcall push_gset2
0016 602F mov R22,R16
0018 .dbline -1
0018 .dbline 57
0018 ; TCNT1L = 0x18;
0018 ; OCR1AH = 0x03;
0018 ; OCR1AL = 0xE8;
0018 ; OCR1BH = 0x03;
0018 ; OCR1BL = 0xE8;
0018 ; ICR1H = 0x03;
0018 .dbline 60
0018 ; ICR1L = 0xE8;
0018 ; TCCR1A = 0x00;
0018 ; TCCR1B = 0x01; //start Timer
0018 A998 cbi 0x15,1
001A .dbline 61
001A ; }
001A A29A sbi 0x14,2
001C .dbline 62
001C ;
001C 4427 clr R20
001E 5527 clr R21
0020 L7:
0020 .dbline 63
0020 ;
0020 .dbline 63
0020 A998 cbi 0x15,1
0022 .dbline 64
0022 ; void init_devices(void)
0022 01E0 ldi R16,1
0024 10E0 ldi R17,0
0026 9A01 movw R18,R20
0028 00D0 rcall lsl16
002A 262E mov R2,R22
002C 3324 clr R3
002E 2022 and R2,R16
0030 3122 and R3,R17
0032 2220 tst R2
0034 11F4 brne X0
0036 3320 tst R3
0038 11F0 breq L11
003A X0:
003A .dbline 65
003A ; {
003A AA9A sbi 0x15,2
003C 01C0 rjmp L12
003E L11:
003E .dbline 67
003E ; CLI(); //disable all interrupts
003E ; port_init();
003E AA98 cbi 0x15,2
0040 L12:
0040 .dbline 68
0040 0000 nop
0042 .dbline 69
0042 A99A sbi 0x15,1
0044 .dbline 70
0044 0000 nop
0046 .dbline 71
0046 L8:
0046 .dbline 62
0046 4F5F subi R20,255 ; offset = 1
0048 5F4F sbci R21,255
004A .dbline 62
004A 4830 cpi R20,8
004C E0E0 ldi R30,0
004E 5E07 cpc R21,R30
0050 3CF3 brlt L7
0052 .dbline 72
0052 ; timer1_init();
0052 ; MCUCR = 0x00;
0052 ; GICR = 0x00;
0052 ; TIMSK = 0x04;
0052 ; SEI(); //re-enable interrupts
0052 A998 cbi 0x15,1
0054 .dbline -2
0054 L6:
0054 00D0 rcall pop_gset2
0056 .dbline 0 ; func end
0056 0895 ret
0058 .dbsym r i 20 I
0058 .dbsym r x 22 c
0058 .dbend
0058 .dbfunc e DS1302_WriteT _DS1302_WriteT fV
0058 ; time -> R20
0058 ; ddr -> R22
.even
0058 _DS1302_WriteT::
0058 00D0 rcall push_gset2
005A 422F mov R20,R18
005C 602F mov R22,R16
005E .dbline -1
005E .dbline 76
005E ;
005E ; }
005E ; /*******************************************************************************
005E ; 显示程序
005E .dbline 77
005E ;
005E D0DF rcall _DS1302_set
0060 .dbline 78
0060 ; ******************************************************************************/
0060 062F mov R16,R22
0062 D8DF rcall _DS1302_Write
0064 .dbline 79
0064 ; /*发送显示一个字节*/
0064 042F mov R16,R20
0066 D6DF rcall _DS1302_Write
0068 .dbline -2
0068 L13:
0068 00D0 rcall pop_gset2
006A .dbline 0 ; func end
006A 0895 ret
006C .dbsym r time 20 c
006C .dbsym r ddr 22 c
006C .dbend
006C .dbfunc e DS1302_Read _DS1302_Read fc
006C ; temp -> R20
006C ; temp2 -> R22
006C ; temp1 -> R10
006C ; k -> R12
006C ; n -> R14
006C ; xx -> R12
.even
006C _DS1302_Read::
006C 00D0 rcall push_gset5
006E C02E mov R12,R16
0070 .dbline -1
0070 .dbline 85
0070 ; void sendbeyt(char x)
0070 ; {
0070 ; int i;
0070 ; for(i=0;i<8;i++)
0070 ; {
0070 ; CLK_1;
0070 .dbline 86
0070 ; if(x&(1<<i))
0070 4427 clr R20
0072 .dbline 87
0072 ; DATA_1;
0072 AA24 clr R10
0074 .dbline 88
0074 ; else
0074 6627 clr R22
0076 .dbline 89
0076 ; DATA_0;
0076 C4DF rcall _DS1302_set
0078 .dbline 90
0078 ; CLK_0;
0078 0C2D mov R16,R12
007A CCDF rcall _DS1302_Write
007C .dbline 91
007C ; }
007C A298 cbi 0x14,2
007E .dbline 92
007E ; CLK_1;
007E A998 cbi 0x15,1
0080 .dbline 93
0080 ; }
0080 EE24 clr R14
0082 15C0 rjmp L18
0084 L15:
0084 .dbline 94
0084 ;
0084 .dbline 94
0084 A998 cbi 0x15,1
0086 .dbline 95
0086 ; /* 发送显示4字节*/
0086 0000 nop
0088 .dbline 96
0088 ; void sendFOURbeyt()
0088 83B3 in R24,0x13
008A 8470 andi R24,4
008C C82E mov R12,R24
008E .dbline 97
008E ; { LED3;
008E 8430 cpi R24,4
0090 29F4 brne L19
0092 .dbline 98
0092 ; sendbeyt(SEG_table[Sec_buffer[0]]);
0092 01E0 ldi R16,1
0094 1E2D mov R17,R14
0096 00D0 rcall lsl8
0098 A02A or R10,R16
009A 06C0 rjmp L20
009C L19:
009C .dbline 100
009C ; delay_nus(200);
009C ; LED4;
009C 01E0 ldi R16,1
009E 1E2D mov R17,R14
00A0 00D0 rcall lsl8
00A2 202E mov R2,R16
00A4 2094 com R2
00A6 A220 and R10,R2
00A8 L20:
00A8 .dbline 101
00A8 A99A sbi 0x15,1
00AA .dbline 102
00AA 0000 nop
00AC .dbline 103
00AC L16:
00AC .dbline 93
00AC E394 inc R14
00AE L18:
00AE .dbline 93
00AE 8E2D mov R24,R14
00B0 8430 cpi R24,4
00B2 40F3 brlo L15
00B4 .dbline 104
00B4 ; sendbeyt(SEG_table[Sec_buffer[1]]);
00B4 ; delay_nus(200);
00B4 ; LED1;
00B4 ; sendbeyt(SEG_table[Min_buffer[0]]);
00B4 EE24 clr R14
00B6 15C0 rjmp L24
00B8 L21:
00B8 .dbline 105
00B8 ; delay_nus(200);
00B8 .dbline 105
00B8 A998 cbi 0x15,1
00BA .dbline 106
00BA ; LED2;
00BA 0000 nop
00BC .dbline 107
00BC ; sendbeyt(SEG_table[Min_buffer[1]]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -