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

📄 funcs.lis

📁 本程序中用到DS1302以及液晶等模块
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 00CC                   .dbend
 00CC                   .dbfunc e DS1302_writeB _DS1302_writeB fV
 00CC           ;              i -> R20
 00CC           ;           byte -> R22
                        .even
 00CC           _DS1302_writeB::
 00CC 0E940000          xcall push_gset2
 00D0 602F              mov R22,R16
 00D2                   .dbline -1
 00D2                   .dbline 28
 00D2                   .dbline 30
 00D2 4427              clr R20
 00D4 0CC0              xjmp L22
 00D6           L19:
 00D6                   .dbline 31
 00D6                   .dbline 32
 00D6 C798              cbi 0x18,7
 00D8                   .dbline 33
 00D8 60FF              sbrs R22,0
 00DA 02C0              rjmp L23
 00DC                   .dbline 34
 00DC                   .dbline 35
 00DC C59A              sbi 0x18,5
 00DE                   .dbline 36
 00DE 01C0              xjmp L24
 00E0           L23:
 00E0                   .dbline 38
 00E0                   .dbline 39
 00E0 C598              cbi 0x18,5
 00E2                   .dbline 40
 00E2           L24:
 00E2                   .dbline 41
 00E2 0AE0              ldi R16,10
 00E4 10E0              ldi R17,0
 00E6 8CDF              xcall _Delayus
 00E8                   .dbline 42
 00E8 C79A              sbi 0x18,7
 00EA                   .dbline 43
 00EA 6695              lsr R22
 00EC                   .dbline 44
 00EC           L20:
 00EC                   .dbline 30
 00EC 4395              inc R20
 00EE           L22:
 00EE                   .dbline 30
 00EE 4830              cpi R20,8
 00F0 90F3              brlo L19
 00F2                   .dbline -2
 00F2                   .dbline 45
 00F2           L18:
 00F2 0E940000          xcall pop_gset2
 00F6                   .dbline 0 ; func end
 00F6 0895              ret
 00F8                   .dbsym r i 20 c
 00F8                   .dbsym r byte 22 c
 00F8                   .dbend
 00F8                   .dbfunc e DS1302_readB _DS1302_readB fc
 00F8           ;              i -> R20
 00F8           ;           byte -> R22
                        .even
 00F8           _DS1302_readB::
 00F8 0E940000          xcall push_gset2
 00FC                   .dbline -1
 00FC                   .dbline 53
 00FC                   .dbline 54
 00FC 6627              clr R22
 00FE                   .dbline 55
 00FE BD98              cbi 0x17,5
 0100                   .dbline 56
 0100 C598              cbi 0x18,5
 0102                   .dbline 57
 0102 4427              clr R20
 0104 0FC0              xjmp L29
 0106           L26:
 0106                   .dbline 58
 0106                   .dbline 59
 0106 6695              lsr R22
 0108                   .dbline 60
 0108 C79A              sbi 0x18,7
 010A                   .dbline 61
 010A 0AE0              ldi R16,10
 010C 10E0              ldi R17,0
 010E 78DF              xcall _Delayus
 0110                   .dbline 62
 0110 C798              cbi 0x18,7
 0112                   .dbline 63
 0112 0AE0              ldi R16,10
 0114 10E0              ldi R17,0
 0116 74DF              xcall _Delayus
 0118                   .dbline 64
 0118 B59B              sbis 0x16,5
 011A 02C0              rjmp L30
 011C                   .dbline 65
 011C                   .dbline 66
 011C 6068              ori R22,128
 011E                   .dbline 67
 011E 01C0              xjmp L31
 0120           L30:
 0120                   .dbline 69
 0120                   .dbline 70
 0120 6F77              andi R22,127
 0122                   .dbline 71
 0122           L31:
 0122                   .dbline 72
 0122           L27:
 0122                   .dbline 57
 0122 4395              inc R20
 0124           L29:
 0124                   .dbline 57
 0124 4830              cpi R20,8
 0126 78F3              brlo L26
 0128                   .dbline 73
 0128 BD9A              sbi 0x17,5
 012A                   .dbline 74
 012A 062F              mov R16,R22
 012C                   .dbline -2
 012C           L25:
 012C 0E940000          xcall pop_gset2
 0130                   .dbline 0 ; func end
 0130 0895              ret
 0132                   .dbsym r i 20 c
 0132                   .dbsym r byte 22 c
 0132                   .dbend
 0132                   .dbfunc e DS1302_writeD _DS1302_writeD fV
 0132           ;           data -> R20
 0132           ;           addr -> R22
                        .even
 0132           _DS1302_writeD::
 0132 0E940000          xcall push_gset2
 0136 422F              mov R20,R18
 0138 602F              mov R22,R16
 013A                   .dbline -1
 013A                   .dbline 84
 013A                   .dbline 85
 013A AF98              cbi 0x15,7
 013C                   .dbline 86
 013C C798              cbi 0x18,7
 013E                   .dbline 87
 013E           ;  Delayus(10);
 013E 0AE0              ldi R16,10
 0140 10E0              ldi R17,0
 0142 5EDF              xcall _Delayus
 0144                   .dbline 88
 0144           ;  PORTC|=BIT(RTC_CS);   //拉高片选端
 0144 AF9A              sbi 0x15,7
 0146                   .dbline 89
 0146           ;  Delayus(10);                          //调整片选脉冲
 0146 0AE0              ldi R16,10
 0148 10E0              ldi R17,0
 014A 5ADF              xcall _Delayus
 014C                   .dbline 90
 014C           ;  DS1302_writeB(addr);  //写入操作命令(地址)
 014C 062F              mov R16,R22
 014E BEDF              xcall _DS1302_writeB
 0150                   .dbline 91
 0150           ;  Delayus(10);
 0150 0AE0              ldi R16,10
 0152 10E0              ldi R17,0
 0154 55DF              xcall _Delayus
 0156                   .dbline 92
 0156           ;  PORTB&=~BIT(RTC_CLK);         //拉低时钟端
 0156 C798              cbi 0x18,7
 0158                   .dbline 93
 0158           ;  Delayus(10);
 0158 0AE0              ldi R16,10
 015A 10E0              ldi R17,0
 015C 51DF              xcall _Delayus
 015E                   .dbline 94
 015E           ;  DS1302_writeB(data);  //写入数据
 015E 042F              mov R16,R20
 0160 B5DF              xcall _DS1302_writeB
 0162                   .dbline 95
 0162           ;  PORTB&=~BIT(RTC_CLK);         //拉低时钟端
 0162 C798              cbi 0x18,7
 0164                   .dbline 96
 0164           ;  Delayus(10);                  //调整片选脉冲
 0164 0AE0              ldi R16,10
 0166 10E0              ldi R17,0
 0168 4BDF              xcall _Delayus
 016A                   .dbline 97
 016A           ;  PORTC&=~BIT(RTC_CS);  //拉低片选端
 016A AF98              cbi 0x15,7
 016C                   .dbline -2
 016C                   .dbline 98
 016C           ; }
 016C           L32:
 016C 0E940000          xcall pop_gset2
 0170                   .dbline 0 ; func end
 0170 0895              ret
 0172                   .dbsym r data 20 c
 0172                   .dbsym r addr 22 c
 0172                   .dbend
 0172                   .dbfunc e DS1302_readD _DS1302_readD fc
 0172           ;           data -> R20
 0172           ;           addr -> R20
                        .even
 0172           _DS1302_readD::
 0172 0E940000          xcall push_gset1
 0176 402F              mov R20,R16
 0178                   .dbline -1
 0178                   .dbline 106
 0178           ; /*******************************************
 0178           ; 函数名称: DS1302_readD
 0178           ; 功    能: 从DS1302的某个地址读出一个字节数据
 0178           ; 参    数: addr--地址值(寄存器或RAM)
 0178           ; 返回值  : data--读出的数据
 0178           ; /********************************************/
 0178           ; uchar DS1302_readD(uchar addr)
 0178           ; {
 0178                   .dbline 108
 0178           ;  uchar data;
 0178           ;  PORTC&=~BIT(RTC_CS);  //拉低片选端
 0178 AF98              cbi 0x15,7
 017A                   .dbline 109
 017A           ;  PORTB&=~BIT(RTC_CLK);         //拉低时钟端
 017A C798              cbi 0x18,7
 017C                   .dbline 110
 017C           ;  Delayus(10);
 017C 0AE0              ldi R16,10
 017E 10E0              ldi R17,0
 0180 3FDF              xcall _Delayus
 0182                   .dbline 111
 0182           ;  PORTC|=BIT(RTC_CS);   //拉高片选端
 0182 AF9A              sbi 0x15,7
 0184                   .dbline 112
 0184           ;  Delayus(10);                          //调整片选脉冲
 0184 0AE0              ldi R16,10
 0186 10E0              ldi R17,0
 0188 3BDF              xcall _Delayus
 018A                   .dbline 113
 018A           ;  DS1302_writeB(addr);  //写入操作命令(地址)
 018A 042F              mov R16,R20
 018C 9FDF              xcall _DS1302_writeB
 018E                   .dbline 114
 018E           ;  Delayus(10);
 018E 0AE0              ldi R16,10
 0190 10E0              ldi R17,0
 0192 36DF              xcall _Delayus
 0194                   .dbline 115
 0194           ;  data=DS1302_readB();  //读出数据
 0194 B1DF              xcall _DS1302_readB
 0196 402F              mov R20,R16
 0198                   .dbline 116
 0198           ;  Delayus(10);
 0198 0AE0              ldi R16,10
 019A 10E0              ldi R17,0
 019C 31DF              xcall _Delayus
 019E                   .dbline 117
 019E           ;  PORTB&=~BIT(RTC_CLK);         //拉低时钟端
 019E C798              cbi 0x18,7
 01A0                   .dbline 118
 01A0           ;  PORTC&=~BIT(RTC_CS);          //拉低片选端
 01A0 AF98              cbi 0x15,7
 01A2                   .dbline 119
 01A2           ;  return data;                  //返回读出的数据
 01A2 042F              mov R16,R20
 01A4                   .dbline -2
 01A4           L33:
 01A4 0E940000          xcall pop_gset1
 01A8                   .dbline 0 ; func end
 01A8 0895              ret
 01AA                   .dbsym r data 20 c
 01AA                   .dbsym r addr 20 c
 01AA                   .dbend
 01AA                   .dbfunc e DS1302_getT _DS1302_getT fV
 01AA           ;           addr -> R20
 01AA           ;              i -> R22
 01AA           ;           time -> R10,R11
                        .even
 01AA           _DS1302_getT::
 01AA 0E940000          xcall push_gset3
 01AE 5801              movw R10,R16
 01B0                   .dbline -1
 01B0                   .dbline 128
 01B0           ; }
 01B0           ; /*******************************************
 01B0           ; 函数名称: DS1302_getT
 01B0           ; 功    能: 读取DS1302的当前时间的时、分、秒
 01B0           ; 参    数: time[]--读取的时间数组
 01B0           ; 返回值  : 无
 01B0           ; /********************************************/
 01B0           ; void DS1302_getT(INT8U time[])
 01B0           ; {
 01B0                   .dbline 130
 01B0           ;     uchar i;
 01B0           ;     uchar addr = 0x80;                                                  //读取地址从秒寄存器开始 
 01B0 40E8              ldi R20,128
 01B2                   .dbline 131
 01B2           ;     for(i=0;i<3;i++)
 01B2 6627              clr R22
 01B4 0BC0              xjmp L38
 01B6           L35:
 01B6                   .dbline 132
 01B6                   .dbline 133
 01B6 042F              mov R16,R20
 01B8 0160              ori R16,1
 01BA DBDF              xcall _DS1302_readD
 01BC 82E0              ldi R24,2
 01BE 869F              mul R24,R22
 01C0 F001              movw R30,R0
 01C2 EA0D              add R30,R10
 01C4 FB1D              adc R31,R11
 01C6 0083              std z+0,R16
 01C8                   .dbline 134
 01C8 4E5F              subi R20,254    ; addi 2
 01CA                   .dbline 135
 01CA           L36:
 01CA                   .dbline 131
 01CA 6395              inc R22
 01CC           L38:

⌨️ 快捷键说明

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