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

📄 ds1302.lis

📁 时钟芯片将给显示时间
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .module DS1302.c
                        .area code(ram, con, rel)
                        .area lit(rom, con, rel)
 0000           _table::
 0000 3F00              .word 63
 0002 0600              .word 6
 0004 5B00              .word 91
 0006 4F00              .word 79
 0008 6600              .word 102
 000A 6D00              .word 109
 000C 7D00              .word 125
 000E 0700              .word 7
 0010 7F00              .word 127
 0012 6F00              .word 111
 0014 7700              .word 119
 0016 7C00              .word 124
 0018 3900              .word 57
 001A 5E00              .word 94
 001C 7900              .word 121
 001E 7100              .word 113
 0020                   .dbfile D:\卜凡涛单片机\卜凡涛做板\DS1302/xianshi.C
 0020                   .dbsym e table _table A[32:16]kI
                        .area text(rom, con, rel)
 0000                   .dbfile D:\卜凡涛单片机\卜凡涛做板\DS1302/xianshi.C
 0000                   .dbfunc e delay _delay fV
 0000           ;              i -> R20,R21
 0000           ;              j -> R22,R23
 0000           ;             ms -> R16,R17
                        .even
 0000           _delay::
 0000 0E940000          xcall push_gset2
 0004                   .dbline -1
 0004                   .dbline 9
 0004           ; #include <iom16v.h>                   //包含型号头文件
 0004           ; #include <macros.h>                   //包含"位"操作头文件
 0004           ; #define uchar unsigned char
 0004           ; #define uint unsigned int
 0004           ; 
 0004           ; #define TRUE 1
 0004           ; #define FALSE 0
 0004           ; #include "xianshi.C"                  //包含1602液晶函数文件
 0004           ; 
 0004                   .dbline 11
 0004           ; /******************RTC常量******************/
 0004           ; #define RTC_CLK       PC7
 0004 4427              clr R20
 0006 5527              clr R21
 0008 0BC0              xjmp L5
 000A           L2:
 000A                   .dbline 12
 000A           ; #define RTC_DATA      PC6
 000A                   .dbline 13
 000A 6627              clr R22
 000C 7727              clr R23
 000E 02C0              xjmp L9
 0010           L6:
 0010                   .dbline 13
 0010           L7:
 0010                   .dbline 13
 0010 6F5F              subi R22,255  ; offset = 1
 0012 7F4F              sbci R23,255
 0014           L9:
 0014                   .dbline 13
 0014 6537              cpi R22,117
 0016 E4E0              ldi R30,4
 0018 7E07              cpc R23,R30
 001A D0F3              brlo L6
 001C                   .dbline 14
 001C           L3:
 001C                   .dbline 11
 001C 4F5F              subi R20,255  ; offset = 1
 001E 5F4F              sbci R21,255
 0020           L5:
 0020                   .dbline 11
 0020 4017              cp R20,R16
 0022 5107              cpc R21,R17
 0024 90F3              brlo L2
 0026                   .dbline -2
 0026           L1:
 0026 0E940000          xcall pop_gset2
 002A                   .dbline 0 ; func end
 002A 0895              ret
 002C                   .dbsym r i 20 i
 002C                   .dbsym r j 22 i
 002C                   .dbsym r ms 16 i
 002C                   .dbend
 002C                   .dbfunc e show _show fV
 002C           ;              j -> R20
 002C           ;              i -> R22
                        .even
 002C           _show::
 002C 0E940000          xcall push_gset2
 0030 422F              mov R20,R18
 0032 602F              mov R22,R16
 0034                   .dbline -1
 0034                   .dbline 17
 0034           ; #define RTC_CS        PC1
 0034           ;       //命令
 0034           ; #define RD            0x01
 0034           ; #define WR            0x00
 0034           ; #define C_SEC         0x80    //秒
 0034                   .dbline 17
 0034 8FEF              ldi R24,255
 0036 87BB              out 0x17,R24
 0038                   .dbline 18
 0038           ; #define C_MIN         0x82    //分
 0038 8CE3              ldi R24,60
 003A 81BB              out 0x11,R24
 003C                   .dbline 19
 003C           ; #define C_HR          0x84    //时
 003C 82E0              ldi R24,2
 003E 869F              mul R24,R22
 0040 F001              movw R30,R0
 0042 80E0              ldi R24,<_table
 0044 90E0              ldi R25,>_table
 0046 E80F              add R30,R24
 0048 F91F              adc R31,R25
 004A 0590              lpm R0,Z+
 004C 1490              lpm R1,Z
 004E F001              movw R30,R0
 0050 E8BB              out 0x18,R30
 0052                   .dbline 22
 0052           ; #define C_DAY         0x86    //日
 0052           ; #define C_MTH         0x88    //月
 0052           ; #define C_WK          0x8A    //星期 DATE
 0052 142F              mov R17,R20
 0054 1E5F              subi R17,254    ; addi 2
 0056 01E0              ldi R16,1
 0058 0E940000          xcall lsl8
 005C 202E              mov R2,R16
 005E 2094              com R2
 0060 32B2              in R3,0x12
 0062 3220              and R3,R2
 0064 32BA              out 0x12,R3
 0066                   .dbline 23
 0066           ; #define C_YR          0x8C    //年
 0066 01E0              ldi R16,1
 0068 10E0              ldi R17,0
 006A CADF              xcall _delay
 006C                   .dbline -2
 006C           L10:
 006C 0E940000          xcall pop_gset2
 0070                   .dbline 0 ; func end
 0070 0895              ret
 0072                   .dbsym r j 20 c
 0072                   .dbsym r i 22 c
 0072                   .dbend
 0072                   .dbfile D:\卜凡涛单片机\卜凡涛做板\DS1302\DS1302.c
 0072                   .dbfunc e Delayus _Delayus fV
 0072           ;              i -> R20,R21
 0072           ;             US -> R22,R23
                        .even
 0072           _Delayus::
 0072 0E940000          xcall push_gset2
 0076 B801              movw R22,R16
 0078                   .dbline -1
 0078                   .dbline 41
 0078           ; #define C_WP          0x8E    //控制(写保护)
 0078           ; #define C_CHARGE      0x90    //涓流充电
 0078           ; #define C_BURST               0xBE    //时钟多字节
 0078           ;       //配置
 0078           ; #define CLK_HALT              0x80    //停止时钟控制位    SECOND      bit7
 0078           ; #define CLK_START             0x00    //启动时钟
 0078           ; #define M12_24                        0x80    //12/24小时值选择位 HOUR                bit7 
 0078           ; #define PROTECT                       0x80    //写保护控制位      CONTROL     bit7 
 0078           ; #define UPROTECT              0x00    //写保护控制位      CONTROL     bit7 
 0078           ;       //涓流充电控制常量
 0078           ; #define TC_D1R2                       0xA5    //high 1 Diode +2K Resistors  
 0078           ; #define TC_D2R8                       0xAB    //low  2 Diodes+8K Resistors  
 0078           ; #define TC_DISABLED           0x00    //Disabled(TCS<>1010 or DS=00 or RS=00)
 0078           ;       //RAM 命令
 0078           ; #define C_RAMBASE             0xC0    //RAM0~RAM30<<1 地址需左移一位 
 0078           ; 
 0078           ; void Delayus(uint US)           
 0078           ; {
 0078                   .dbline 43
 0078           ;  uint i;
 0078           ;  US=US*5/4;                    //5/4是在8MHz晶振下,通过软件仿真反复实验得到的数值
 0078 05E0              ldi R16,5
 007A 10E0              ldi R17,0
 007C 9B01              movw R18,R22
 007E 0E940000          xcall empy16s
 0082 B801              movw R22,R16
 0084 7695              lsr R23
 0086 6795              ror R22
 0088 7695              lsr R23
 008A 6795              ror R22
 008C                   .dbline 44
 008C 4427              clr R20
 008E 5527              clr R21
 0090 02C0              xjmp L15
 0092           L12:
 0092                   .dbline 44
 0092           L13:
 0092                   .dbline 44
 0092 4F5F              subi R20,255  ; offset = 1
 0094 5F4F              sbci R21,255
 0096           L15:
 0096                   .dbline 44
 0096           ;  for( i=0;i<US;i++); 
 0096 4617              cp R20,R22
 0098 5707              cpc R21,R23
 009A D8F3              brlo L12
 009C                   .dbline -2
 009C           L11:
 009C 0E940000          xcall pop_gset2
 00A0                   .dbline 0 ; func end
 00A0 0895              ret
 00A2                   .dbsym r i 20 i
 00A2                   .dbsym r US 22 i
 00A2                   .dbend
 00A2                   .dbfunc e Delayms _Delayms fV
 00A2           ;              i -> R20,R21
 00A2           ;              j -> R22,R23
 00A2           ;             MS -> R16,R17
                        .even
 00A2           _Delayms::
 00A2 0E940000          xcall push_gset2
 00A6                   .dbline -1
 00A6                   .dbline 47
 00A6           ; }
 00A6           ; void Delayms(uint MS)           
 00A6           ; {
 00A6                   .dbline 49
 00A6           ;  uint i,j;
 00A6           ;  for( i=0;i<MS;i++)
 00A6 4427              clr R20
 00A8 5527              clr R21
 00AA 0BC0              xjmp L20
 00AC           L17:
 00AC                   .dbline 50
 00AC 6627              clr R22
 00AE 7727              clr R23
 00B0 02C0              xjmp L24
 00B2           L21:
 00B2                   .dbline 50
 00B2           L22:
 00B2                   .dbline 50
 00B2 6F5F              subi R22,255  ; offset = 1
 00B4 7F4F              sbci R23,255
 00B6           L24:
 00B6                   .dbline 50
 00B6 6537              cpi R22,117
 00B8 E4E0              ldi R30,4
 00BA 7E07              cpc R23,R30
 00BC D0F3              brlo L21
 00BE           L18:
 00BE                   .dbline 49
 00BE 4F5F              subi R20,255  ; offset = 1
 00C0 5F4F              sbci R21,255
 00C2           L20:
 00C2                   .dbline 49
 00C2 4017              cp R20,R16
 00C4 5107              cpc R21,R17
 00C6 90F3              brlo L17
 00C8                   .dbline -2
 00C8           L16:
 00C8 0E940000          xcall pop_gset2
 00CC                   .dbline 0 ; func end
 00CC 0895              ret
 00CE                   .dbsym r i 20 i
 00CE                   .dbsym r j 22 i
 00CE                   .dbsym r MS 16 i
 00CE                   .dbend
 00CE                   .dbfunc e DS1302_portinit _DS1302_portinit fV
                        .even
 00CE           _DS1302_portinit::
 00CE                   .dbline -1
 00CE                   .dbline 62
 00CE           ;  for(j=0;j<1141;j++); //1141是在8MHz晶振下,通过软件仿真反复实验得到的数值
 00CE           ; }
 00CE           ; 
 00CE           ; 
 00CE           ; 
 00CE           ; /*******************************************
 00CE           ; 函数名称: DS1302_init
 00CE           ; 功    能: 初始化DS1302的数据接口
 00CE           ; 参    数: 无
 00CE           ; 返回值  : 无
 00CE           ; /********************************************/
 00CE           ; void DS1302_portinit(void)              
 00CE           ; {
 00CE                   .dbline 63
 00CE           ;  DDRC|=BIT(RTC_CLK)|BIT(RTC_DATA)|BIT(RTC_CS);//将时钟端(RTC_CLK)数据端(RTC_DATA)片选端(RTC_CS)设置为输出
 00CE 84B3              in R24,0x14
 00D0 826C              ori R24,194
 00D2 84BB              out 0x14,R24
 00D4                   .dbline -2
 00D4           L25:
 00D4                   .dbline 0 ; func end
 00D4 0895              ret
 00D6                   .dbend
 00D6                   .dbfunc e DS1302_writeB _DS1302_writeB fV
 00D6           ;              i -> R20
 00D6           ;           byte -> R22
                        .even
 00D6           _DS1302_writeB::

⌨️ 快捷键说明

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