📄 ds1302_main.lis
字号:
.module ds1302_main.c
.area text(rom, con, rel)
0000 .dbfile E:\16实验程序\ds1302\ds1302_main.c
0000 .dbfile E:\16实验程序\ds1302\ds1302.h
0000 .dbfunc e ds1302_write_byte _ds1302_write_byte fV
0000 ; i -> R20
0000 ; d -> R18
0000 ; addr -> R16
.even
0000 _ds1302_write_byte::
0000 4A93 st -y,R20
0002 .dbline -1
0002 .dbline 37
0002 ; //时钟电路DS1302试验程序
0002 ; //使用1602液晶显示
0002 ;
0002 ; #include "iom16v.h"
0002 ; #include "ds1302.h"
0002 ; #include "1602.h"
0002 ;
0002 ; uchar aa[]={'-'};
0002 ; //时钟数据
0002 ; unsigned char time_data[8] = {0x21,0x11,0x11,0x12,0x18,0x52,0x00,0x02};
0002 ;
0002 ; //在16M延时1ms的延时函数
0002 ; void s_1ms(unsigned int ms)
0002 ; {
0002 ; unsigned int aa;
0002 ; for(;ms>=1;ms--)
0002 ; {
0002 ; for(aa=0;aa<=2000;aa++)
0002 ; {;}
0002 ; }
0002 ; }
0002 ;
0002 ; //主函数
0002 ; void main()
0002 ; {
0002 ; unsigned char temp;
0002 ; //端口初始化
0002 ; PORTA = 0xFF;
0002 ; DDRA = 0xFF;
0002 ; PORTB = 0xF0;
0002 ; DDRB = 0xFF;
0002 ; PORTC = 0x7F;
0002 ; DDRC = 0x80;
0002 ; PORTD = 0x00;
0002 ; DDRD = 0xFF;
0002 ;
0002 ; s_1ms(20);
0002 .dbline 40
0002 ; //1602液晶初始化
0002 ; LcdInit();
0002 ; //时钟芯片DS1302初始化
0002 AE9A sbi 0x15,6
0004 .dbline 43
0004 ; ds1302_init();
0004 ; s_1ms(10);
0004 ; //写入初始的时间
0004 A19A sbi 0x14,1
0006 .dbline 44
0006 ; ds1302_write_time(time_data);
0006 0E7F andi R16,254
0008 .dbline 45
0008 ;
0008 4427 clr R20
000A 09C0 xjmp L5
000C L2:
000C .dbline 45
000C .dbline 46
000C ; while (1) {
000C 00FF sbrs R16,0
000E 02C0 rjmp L6
0010 X0:
0010 .dbline 46
0010 .dbline 47
0010 ; s_1ms(100);
0010 A99A sbi 0x15,1
0012 .dbline 48
0012 ; //读出时钟数据
0012 01C0 xjmp L7
0014 L6:
0014 .dbline 49
0014 ; ds1302_read_time(time_data);
0014 .dbline 50
0014 ; //显示年份
0014 A998 cbi 0x15,1
0016 .dbline 51
0016 ; WriteNum(1,3,2); //2
0016 L7:
0016 .dbline 52
0016 ; WriteNum(1,4,0); //0
0016 A89A sbi 0x15,0
0018 .dbline 53
0018 ; temp = (time_data[1] >> 4) ;
0018 A898 cbi 0x15,0
001A .dbline 54
001A ; WriteNum(1,5,temp);
001A 0695 lsr R16
001C .dbline 55
001C ; temp = (time_data[1] & 0x0F);
001C L3:
001C .dbline 45
001C 4395 inc R20
001E L5:
001E .dbline 45
001E 4830 cpi R20,8
0020 A8F3 brlo L2
0022 X1:
0022 .dbline 58
0022 ; WriteNum(1,6,temp);
0022 ; WriteChar(1,7,2,aa);
0022 ;
0022 A19A sbi 0x14,1
0024 .dbline 59
0024 ; temp = (time_data[2] >> 4);
0024 4427 clr R20
0026 09C0 xjmp L11
0028 L8:
0028 .dbline 59
0028 .dbline 60
0028 ; WriteNum(1,8,temp);
0028 20FF sbrs R18,0
002A 02C0 rjmp L12
002C X2:
002C .dbline 60
002C .dbline 61
002C ; temp = (time_data[2] & 0x0F);
002C A99A sbi 0x15,1
002E .dbline 62
002E ; WriteNum(1,9,temp);
002E 01C0 xjmp L13
0030 L12:
0030 .dbline 63
0030 ; WriteChar(1,10,2,aa);
0030 .dbline 64
0030 ;
0030 A998 cbi 0x15,1
0032 .dbline 65
0032 ; temp = (time_data[3] >> 4);
0032 L13:
0032 .dbline 66
0032 ; WriteNum(1,11,temp);
0032 A89A sbi 0x15,0
0034 .dbline 67
0034 ; temp = (time_data[3] & 0x0F);
0034 A898 cbi 0x15,0
0036 .dbline 68
0036 ; WriteNum(1,12,temp);
0036 2695 lsr R18
0038 .dbline 69
0038 ;
0038 L9:
0038 .dbline 59
0038 4395 inc R20
003A L11:
003A .dbline 59
003A 4830 cpi R20,8
003C A8F3 brlo L8
003E X3:
003E .dbline 70
003E ; temp = (time_data[4] >> 4);
003E AE98 cbi 0x15,6
0040 .dbline -2
0040 L1:
0040 .dbline 0 ; func end
0040 4991 ld R20,y+
0042 0895 ret
0044 .dbsym r i 20 c
0044 .dbsym r d 18 c
0044 .dbsym r addr 16 c
0044 .dbend
0044 .dbfunc e ds1302_read_byte _ds1302_read_byte fc
0044 ; temp -> R20
0044 ; i -> R22
0044 ; addr -> R16
.even
0044 _ds1302_read_byte::
0044 4A93 st -y,R20
0046 6A93 st -y,R22
0048 .dbline -1
0048 .dbline 74
0048 ; WriteNum(2,4,temp);
0048 ; temp = (time_data[4] & 0x0F);
0048 ; WriteNum(2,5,temp);
0048 ; WriteChar(2,6,2,aa);
0048 .dbline 78
0048 ;
0048 ; temp = (time_data[5] >> 4);
0048 ; WriteNum(2,7,temp);
0048 ; temp = (time_data[5] & 0x0F);
0048 AE9A sbi 0x15,6
004A .dbline 81
004A ; WriteNum(2,8,temp);
004A ; WriteChar(2,9,2,aa);
004A ;
004A A19A sbi 0x14,1
004C .dbline 82
004C ; temp = (time_data[6] >> 4);
004C 0160 ori R16,1
004E .dbline 83
004E ; WriteNum(2,10,temp);
004E 6627 clr R22
0050 09C0 xjmp L18
0052 L15:
0052 .dbline 83
0052 .dbline 84
0052 ; temp = (time_data[6] & 0x0F);
0052 00FF sbrs R16,0
0054 02C0 rjmp L19
0056 X4:
0056 .dbline 84
0056 .dbline 85
0056 ; WriteNum(2,11,temp);
0056 A99A sbi 0x15,1
0058 .dbline 86
0058 ; }
0058 01C0 xjmp L20
005A L19:
005A .dbline 87
005A ; }
005A .dbline 88
005A A998 cbi 0x15,1
005C .dbline 89
005C L20:
005C .dbline 90
005C A89A sbi 0x15,0
005E .dbline 91
005E A898 cbi 0x15,0
0060 .dbline 92
0060 0695 lsr R16
0062 .dbline 93
0062 L16:
0062 .dbline 83
0062 6395 inc R22
0064 L18:
0064 .dbline 83
0064 6830 cpi R22,8
0066 A8F3 brlo L15
0068 X5:
0068 .dbline 96
0068 A198 cbi 0x14,1
006A .dbline 97
006A 6627 clr R22
006C 09C0 xjmp L24
006E L21:
006E .dbline 97
006E .dbline 98
006E 4695 lsr R20
0070 .dbline 99
0070 999B sbis 0x13,1
0072 02C0 rjmp L25
0074 X6:
0074 .dbline 99
0074 .dbline 100
0074 4068 ori R20,128
0076 .dbline 101
0076 01C0 xjmp L26
0078 L25:
0078 .dbline 102
0078 .dbline 103
0078 4F77 andi R20,127
007A .dbline 104
007A L26:
007A .dbline 105
007A A89A sbi 0x15,0
007C .dbline 106
007C A898 cbi 0x15,0
007E .dbline 107
007E L22:
007E .dbline 97
007E 6395 inc R22
0080 L24:
0080 .dbline 97
0080 6830 cpi R22,8
0082 A8F3 brlo L21
0084 X7:
0084 .dbline 109
0084 AE98 cbi 0x15,6
0086 .dbline 110
0086 042F mov R16,R20
0088 .dbline -2
0088 L14:
0088 .dbline 0 ; func end
0088 6991 ld R22,y+
008A 4991 ld R20,y+
008C 0895 ret
008E .dbsym r temp 20 c
008E .dbsym r i 22 c
008E .dbsym r addr 16 c
008E .dbend
008E .dbfunc e ds1302_write_time _ds1302_write_time fV
008E ; time_data -> R20,R21
.even
008E _ds1302_write_time::
008E 4A93 st -y,R20
0090 5A93 st -y,R21
0092 A801 movw R20,R16
0094 .dbline -1
0094 .dbline 115
0094 .dbline 117
0094 2227 clr R18
0096 0EE8 ldi R16,142
0098 B3DF xcall _ds1302_write_byte
009A .dbline 118
009A 20E8 ldi R18,128
009C 00E8 ldi R16,128
009E B0DF xcall _ds1302_write_byte
00A0 .dbline 119
00A0 4F5F subi R20,255 ; offset = 1
00A2 5F4F sbci R21,255
00A4 .dbline 120
00A4 FA01 movw R30,R20
00A6 2191 ld R18,Z+
00A8 AF01 movw R20,R30
00AA 0CE8 ldi R16,140
00AC A9DF xcall _ds1302_write_byte
00AE .dbline 121
00AE FA01 movw R30,R20
00B0 2191 ld R18,Z+
00B2 AF01 movw R20,R30
00B4 08E8 ldi R16,136
00B6 A4DF xcall _ds1302_write_byte
00B8 .dbline 122
00B8 FA01 movw R30,R20
00BA 2191 ld R18,Z+
00BC AF01 movw R20,R30
00BE 06E8 ldi R16,134
00C0 9FDF xcall _ds1302_write_byte
00C2 .dbline 123
00C2 FA01 movw R30,R20
00C4 2191 ld R18,Z+
00C6 AF01 movw R20,R30
00C8 04E8 ldi R16,132
00CA 9ADF xcall _ds1302_write_byte
00CC .dbline 124
00CC FA01 movw R30,R20
00CE 2191 ld R18,Z+
00D0 AF01 movw R20,R30
00D2 02E8 ldi R16,130
00D4 95DF xcall _ds1302_write_byte
00D6 .dbline 125
00D6 FA01 movw R30,R20
00D8 2191 ld R18,Z+
00DA AF01 movw R20,R30
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -