📄 ds1302.lis
字号:
.module ds1302.c
.area text(rom, con, rel)
0000 .dbfile D:\单片机\ds1302\ds1302_end/delay.c
0000 .dbfunc e delay_1us _delay_1us fV
.even
0000 _delay_1us::
0000 .dbline -1
0000 .dbline 6
0000 ; #include <iom16v.h> //包含型号头文件
0000 ; #include <macros.h> //包含"位"操作头文件
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ;
0000 ; #include "1602B_LCD.C" //包含1602液晶函数文件
0000 .dbline 7
0000 ;
0000 0000 nop
0002 .dbline -2
0002 L1:
0002 .dbline 0 ; func end
0002 0895 ret
0004 .dbend
0004 .dbfunc e delay_nus _delay_nus fV
0004 ; i -> R20,R21
0004 ; n -> R22,R23
.even
0004 _delay_nus::
0004 0E940000 xcall push_gset2
0008 B801 movw R22,R16
000A .dbline -1
000A .dbline 11
000A ; /******************RTC常量******************/
000A ; #define RTC_CLK PB7
000A ; #define RTC_DATA PB6
000A ; #define RTC_CS PB4
000A .dbline 12
000A ; //命令
000A 4427 clr R20
000C 5527 clr R21
000E .dbline 13
000E ; #define RD 0x01
000E 03C0 xjmp L6
0010 L3:
0010 .dbline 14
0010 F7DF xcall _delay_1us
0012 L4:
0012 .dbline 13
0012 4F5F subi R20,255 ; offset = 1
0014 5F4F sbci R21,255
0016 L6:
0016 .dbline 13
0016 4617 cp R20,R22
0018 5707 cpc R21,R23
001A D0F3 brlo L3
001C .dbline -2
001C L2:
001C 0E940000 xcall pop_gset2
0020 .dbline 0 ; func end
0020 0895 ret
0022 .dbsym r i 20 i
0022 .dbsym r n 22 i
0022 .dbend
0022 .dbfunc e delay_1ms _delay_1ms fV
0022 ; i -> R16,R17
.even
0022 _delay_1ms::
0022 .dbline -1
0022 .dbline 18
0022 ; #define WR 0x00
0022 ; #define C_SEC 0x80 //秒
0022 ; #define C_MIN 0x82 //分
0022 ; #define C_HR 0x84 //时
0022 ; #define C_DAY 0x86 //日
0022 .dbline 20
0022 0027 clr R16
0024 1127 clr R17
0026 02C0 xjmp L11
0028 L8:
0028 .dbline 20
0028 L9:
0028 .dbline 20
0028 0F5F subi R16,255 ; offset = 1
002A 1F4F sbci R17,255
002C L11:
002C .dbline 20
002C ; #define C_MTH 0x88 //月
002C ; #define C_WK 0x8A //星期 DATE
002C 0437 cpi R16,116
002E E4E0 ldi R30,4
0030 1E07 cpc R17,R30
0032 D0F3 brlo L8
0034 .dbline -2
0034 L7:
0034 .dbline 0 ; func end
0034 0895 ret
0036 .dbsym r i 16 i
0036 .dbend
0036 .dbfunc e delay_nms _delay_nms fV
0036 ; i -> R20,R21
0036 ; n -> R22,R23
.even
0036 _delay_nms::
0036 0E940000 xcall push_gset2
003A B801 movw R22,R16
003C .dbline -1
003C .dbline 24
003C ; #define C_YR 0x8C //年
003C ; #define C_WP 0x8E //控制(写保护)
003C ; #define C_CHARGE 0x90 //涓流充电
003C ; #define C_BURST 0xBE //时钟多字节
003C .dbline 25
003C ; //配置
003C 4427 clr R20
003E 5527 clr R21
0040 .dbline 26
0040 ; #define CLK_HALT 0x80 //停止时钟控制位 SECOND bit7
0040 03C0 xjmp L16
0042 L13:
0042 .dbline 27
0042 EFDF xcall _delay_1ms
0044 L14:
0044 .dbline 26
0044 4F5F subi R20,255 ; offset = 1
0046 5F4F sbci R21,255
0048 L16:
0048 .dbline 26
0048 4617 cp R20,R22
004A 5707 cpc R21,R23
004C D0F3 brlo L13
004E .dbline -2
004E L12:
004E 0E940000 xcall pop_gset2
0052 .dbline 0 ; func end
0052 0895 ret
0054 .dbsym r i 20 i
0054 .dbsym r n 22 i
0054 .dbend
0054 .dbfunc e delay _delay fV
0054 ; i -> R20,R21
0054 ; n -> R22,R23
.even
0054 _delay::
0054 0E940000 xcall push_gset2
0058 B801 movw R22,R16
005A .dbline -1
005A .dbline 30
005A ; #define CLK_START 0x00 //启动时钟
005A ; #define M12_24 0x80 //12/24小时值选择位 HOUR bit7
005A ; #define PROTECT 0x80 //写保护控制位 CONTROL bit7
005A ; #define UPROTECT 0x00 //写保护控制位 CONTROL bit7
005A .dbline 31
005A ; //涓流充电控制常量
005A 4427 clr R20
005C 5527 clr R21
005E .dbline 32
005E ; #define TC_D1R2 0xA5 //high 1 Diode +2K Resistors
005E 03C0 xjmp L21
0060 L18:
0060 .dbline 33
0060 E0DF xcall _delay_1ms
0062 L19:
0062 .dbline 32
0062 4F5F subi R20,255 ; offset = 1
0064 5F4F sbci R21,255
0066 L21:
0066 .dbline 32
0066 4617 cp R20,R22
0068 5707 cpc R21,R23
006A D0F3 brlo L18
006C .dbline -2
006C L17:
006C 0E940000 xcall pop_gset2
0070 .dbline 0 ; func end
0070 0895 ret
0072 .dbsym r i 20 i
0072 .dbsym r n 22 i
0072 .dbend
0072 .dbfile D:\单片机\ds1302\ds1302_end/1602B_LCD.C
0072 .dbfunc e LCD_Write_half_char _LCD_Write_half_char fV
.even
0072 _LCD_Write_half_char::
0072 .dbline -1
0072 .dbline 28
0072 .dbline 29
0072 85B3 in R24,0x15
0074 8F70 andi R24,15
0076 85BB out 0x15,R24
0078 .dbline 30
0078 80910000 lds R24,_data_temp
007C 90910100 lds R25,_data_temp+1
0080 880F lsl R24
0082 991F rol R25
0084 880F lsl R24
0086 991F rol R25
0088 880F lsl R24
008A 991F rol R25
008C 880F lsl R24
008E 991F rol R25
0090 807F andi R24,240
0092 9070 andi R25,0
0094 25B2 in R2,0x15
0096 3324 clr R3
0098 282A or R2,R24
009A 392A or R3,R25
009C 25BA out 0x15,R2
009E .dbline 31
009E AB9A sbi 0x15,3
00A0 .dbline 32
00A0 02E0 ldi R16,2
00A2 10E0 ldi R17,0
00A4 D7DF xcall _delay
00A6 .dbline 33
00A6 ; #define TC_D2R8 0xAB //low 2 Diodes+8K Resistors
00A6 AB98 cbi 0x15,3
00A8 .dbline 34
00A8 ; #define TC_DISABLED 0x00 //Disabled(TCS<>1010 or DS=00 or RS=00)
00A8 85B3 in R24,0x15
00AA 8F70 andi R24,15
00AC 85BB out 0x15,R24
00AE .dbline 35
00AE ; //RAM 命令
00AE 02E0 ldi R16,2
00B0 10E0 ldi R17,0
00B2 D0DF xcall _delay
00B4 .dbline -2
00B4 L22:
00B4 .dbline 0 ; func end
00B4 0895 ret
00B6 .dbend
00B6 .dbfunc e LCD_write_char _LCD_write_char fV
00B6 ; data -> R20,R21
00B6 ; command -> R22,R23
.even
00B6 _LCD_write_char::
00B6 0E940000 xcall push_gset2
00BA A901 movw R20,R18
00BC B801 movw R22,R16
00BE .dbline -1
00BE .dbline 39
00BE ; #define C_RAMBASE 0xC0 //RAM0~RAM30<<1 地址需左移一位
00BE ;
00BE ; void Delayus(uint US)
00BE ; {
00BE .dbline 40
00BE ; asm("nop");
00BE AB98 cbi 0x15,3
00C0 .dbline 41
00C0 ; }
00C0 6030 cpi R22,0
00C2 6707 cpc R22,R23
00C4 11F4 brne L24
00C6 X0:
00C6 .dbline 42
00C6 ; void Delayms(uint MS)
00C6 AA98 cbi 0x15,2
00C8 01C0 xjmp L25
00CA L24:
00CA .dbline 44
00CA ; {
00CA ; uint i,j;
00CA AA9A sbi 0x15,2
00CC L25:
00CC .dbline 46
00CC ; for( i=0;i<MS;i++)
00CC ; for(j=0;j<1180;j++); //1141是在8MHz晶振下,通过软件仿真反复实验得到的数值
00CC 50930100 sts _data_temp+1,R21
00D0 40930000 sts _data_temp,R20
00D4 .dbline 47
00D4 ; }
00D4 1A01 movw R2,R20
00D6 3694 lsr R3
00D8 2794 ror R2
00DA 3694 lsr R3
00DC 2794 ror R2
00DE 3694 lsr R3
00E0 2794 ror R2
00E2 3694 lsr R3
00E4 2794 ror R2
00E6 30920100 sts _data_temp+1,R3
00EA 20920000 sts _data_temp,R2
00EE .dbline 48
00EE ;
00EE C1DF xcall _LCD_Write_half_char
00F0 .dbline 49
00F0 ;
00F0 50930100 sts _data_temp+1,R21
00F4 40930000 sts _data_temp,R20
00F8 .dbline 50
00F8 ;
00F8 BCDF xcall _LCD_Write_half_char
00FA .dbline 51
00FA ; /*******************************************
00FA 01E0 ldi R16,1
00FC 10E0 ldi R17,0
00FE AADF xcall _delay
0100 .dbline -2
0100 L23:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -