ds1302.lis

来自「该程序是医院用的CPCR记录仪的终端控制程序」· LIS 代码 · 共 794 行 · 第 1/3 页

LIS
794
字号
 0090 0895              ret
 0092                   .dbsym r Data1 20 c
 0092                   .dbsym r Addr 20 c
 0092                   .dbend
 0092                   .dbfunc e BurstW1302T _BurstW1302T fV
 0092           ;              i -> R20
 0092           ;          Cdata -> R22,R23
                        .even
 0092           _BurstW1302T::
 0092 0E940000          xcall push_gset2
 0096 B801              movw R22,R16
 0098                   .dbline -1
 0098                   .dbline 97
 0098           ; }
 0098           ; /******************************************************************** 
 0098           ; 
 0098           ;  函 数 名:BurstW1302T()
 0098           ;  功    能:往DS1302写入时钟数据(多字节方式)
 0098           ;  说    明:先写地址,后写命令/数据
 0098           ;  调    用:W_Byte() 
 0098           ;  入口参数:pWClock: 时钟数据地址 格式为: 秒 分 时 日 月 星期 年 控制
 0098           ;                          8Byte (BCD码)1B 1B 1B 1B 1B  1B  1B 1B
 0098           ;  返 回 值:无
 0098           ; ***********************************************************************/
 0098           ; void BurstW1302T(unsigned char *Cdata)
 0098           ; {
 0098                   .dbline 99
 0098           ;     unsigned char i;
 0098           ;     W_1302(0x8e,0x00);         /* 控制命令,WP=0,写操作?*/
 0098 2227              clr R18
 009A 0EE8              ldi R16,142
 009C DADF              xcall _W_1302
 009E                   .dbline 100
 009E           ;     CLEAR_RST();
 009E 169A              sbi 0x2,6
 00A0                   .dbline 101
 00A0           ;       CLEAR_CLK();
 00A0 149A              sbi 0x2,4
 00A2                   .dbline 102
 00A2           ;       SET_RST();
 00A2 1698              cbi 0x2,6
 00A4                   .dbline 103
 00A4           ;     W_Byte(0xbe);        /* 0xbe:时钟多字节写命令 */
 00A4 0EEB              ldi R16,190
 00A6 ACDF              xcall _W_Byte
 00A8                   .dbline 104
 00A8           ;     for (i=0;i<8;i++)     /*8Byte = 7Byte 时钟数据 + 1Byte 控制*/
 00A8 4427              clr R20
 00AA 06C0              xjmp L21
 00AC           L18:
 00AC                   .dbline 105
 00AC                   .dbline 106
 00AC FB01              movw R30,R22
 00AE 0081              ldd R16,z+0
 00B0 A7DF              xcall _W_Byte
 00B2                   .dbline 107
 00B2 6F5F              subi R22,255  ; offset = 1
 00B4 7F4F              sbci R23,255
 00B6                   .dbline 108
 00B6           L19:
 00B6                   .dbline 104
 00B6 4395              inc R20
 00B8           L21:
 00B8                   .dbline 104
 00B8 4830              cpi R20,8
 00BA C0F3              brlo L18
 00BC                   .dbline 109
 00BC           ;     {
 00BC           ;         W_Byte(*Cdata); /* 写1Byte数据*/
 00BC           ;         Cdata++;
 00BC           ;     }
 00BC           ;     SET_CLK();
 00BC 1498              cbi 0x2,4
 00BE                   .dbline 110
 00BE           ;     CLEAR_RST();
 00BE 169A              sbi 0x2,6
 00C0                   .dbline -2
 00C0           L17:
 00C0 0E940000          xcall pop_gset2
 00C4                   .dbline 0 ; func end
 00C4 0895              ret
 00C6                   .dbsym r i 20 c
 00C6                   .dbsym r Cdata 22 pc
 00C6                   .dbend
 00C6                   .dbfunc e BurstR1302T _BurstR1302T fV
 00C6           ;              i -> R20
 00C6           ;          Cdata -> R22,R23
                        .even
 00C6           _BurstR1302T::
 00C6 0E940000          xcall push_gset2
 00CA B801              movw R22,R16
 00CC                   .dbline -1
 00CC                   .dbline 123
 00CC           ; } 
 00CC           ; /******************************************************************** 
 00CC           ; 
 00CC           ;  函 数 名:BurstR1302T()
 00CC           ;  功    能:读取DS1302时钟数据
 00CC           ;  说    明:先写地址/命令,后读数据(时钟多字节方式)
 00CC           ;  调    用:W_Byte() , R_Byte()
 00CC           ;  入口参数:pRClock: 读取时钟数据地址 格式为: 秒 分 时 日 月 星期 年
 00CC           ;                              7Byte (BCD码)1B 1B 1B 1B 1B  1B  1B
 00CC           ;  返 回 值:无
 00CC           ; ***********************************************************************/
 00CC           ; void BurstR1302T(unsigned char *Cdata)
 00CC           ; {
 00CC                   .dbline 125
 00CC           ;     unsigned char i;
 00CC           ;       CLEAR_RST();
 00CC 169A              sbi 0x2,6
 00CE                   .dbline 126
 00CE           ;       CLEAR_CLK();
 00CE 149A              sbi 0x2,4
 00D0                   .dbline 127
 00D0           ;     SET_RST();
 00D0 1698              cbi 0x2,6
 00D2                   .dbline 128
 00D2           ;     W_Byte(0xbf);             /* 0xbf:时钟多字节读命令 */
 00D2 0FEB              ldi R16,191
 00D4 95DF              xcall _W_Byte
 00D6                   .dbline 129
 00D6           ;     for (i=0;i<8;i++) 
 00D6 4427              clr R20
 00D8 06C0              xjmp L26
 00DA           L23:
 00DA                   .dbline 130
 00DA                   .dbline 131
 00DA A4DF              xcall _R_Byte
 00DC FB01              movw R30,R22
 00DE 0083              std z+0,R16
 00E0                   .dbline 132
 00E0 6F5F              subi R22,255  ; offset = 1
 00E2 7F4F              sbci R23,255
 00E4                   .dbline 133
 00E4           L24:
 00E4                   .dbline 129
 00E4 4395              inc R20
 00E6           L26:
 00E6                   .dbline 129
 00E6 4830              cpi R20,8
 00E8 C0F3              brlo L23
 00EA                   .dbline 134
 00EA           ;     {
 00EA           ;        *Cdata = R_Byte();   /* 读1Byte数据 */
 00EA           ;        Cdata++;
 00EA           ;     }
 00EA           ;     SET_CLK();
 00EA 1498              cbi 0x2,4
 00EC                   .dbline 135
 00EC           ;     CLEAR_RST();
 00EC 169A              sbi 0x2,6
 00EE                   .dbline -2
 00EE           L22:
 00EE 0E940000          xcall pop_gset2
 00F2                   .dbline 0 ; func end
 00F2 0895              ret
 00F4                   .dbsym r i 20 c
 00F4                   .dbsym r Cdata 22 pc
 00F4                   .dbend
 00F4                   .dbfunc e BurstW1302R _BurstW1302R fV
 00F4           ;              i -> R20
 00F4           ;          Cdata -> R22,R23
                        .even
 00F4           _BurstW1302R::
 00F4 0E940000          xcall push_gset2
 00F8 B801              movw R22,R16
 00FA                   .dbline -1
 00FA                   .dbline 147
 00FA           ; }
 00FA           ; /******************************************************************** 
 00FA           ; 
 00FA           ;  函 数 名:BurstW1302R()
 00FA           ;  功    能:往DS1302寄存器数写入数据(多字节方式)
 00FA           ;  说    明:先写地址,后写数据(寄存器多字节方式)
 00FA           ;  调    用:W_Byte()
 00FA           ;  入口参数:pWReg: 寄存器数据地址
 00FA           ;  返 回 值:无
 00FA           ; ***********************************************************************/
 00FA           ; void BurstW1302R(unsigned char *Cdata)
 00FA           ; {
 00FA                   .dbline 149
 00FA           ;     unsigned char i;
 00FA           ;     W_1302(0x8e,0x00);         /* 控制命令,WP=0,写操作*/
 00FA 2227              clr R18
 00FC 0EE8              ldi R16,142
 00FE A9DF              xcall _W_1302
 0100                   .dbline 150
 0100           ;       CLEAR_RST();
 0100 169A              sbi 0x2,6
 0102                   .dbline 151
 0102           ;       CLEAR_CLK();
 0102 149A              sbi 0x2,4
 0104                   .dbline 152
 0104           ;     SET_RST();
 0104 1698              cbi 0x2,6
 0106                   .dbline 153
 0106           ;     W_Byte(0xfe);         /* 0xbe:时钟多字节写命令 */
 0106 0EEF              ldi R16,254
 0108 7BDF              xcall _W_Byte
 010A                   .dbline 154
 010A           ;     for (i=31; i>0; i--)       /* 31Byte 寄存器数据 */
 010A 4FE1              ldi R20,31
 010C 06C0              xjmp L31
 010E           L28:
 010E                   .dbline 155
 010E                   .dbline 156
 010E FB01              movw R30,R22
 0110 0081              ldd R16,z+0
 0112 76DF              xcall _W_Byte
 0114                   .dbline 157
 0114 6F5F              subi R22,255  ; offset = 1
 0116 7F4F              sbci R23,255
 0118                   .dbline 158
 0118           L29:
 0118                   .dbline 154
 0118 4A95              dec R20
 011A           L31:
 011A                   .dbline 154
 011A 2224              clr R2
 011C 2416              cp R2,R20
 011E B8F3              brlo L28
 0120                   .dbline 159
 0120           ;     {
 0120           ;         W_Byte(*Cdata);    /* 写1Byte数据*/
 0120           ;         Cdata++;
 0120           ;     }
 0120           ;     SET_CLK();
 0120 1498              cbi 0x2,4
 0122                   .dbline 160
 0122           ;     CLEAR_RST();
 0122 169A              sbi 0x2,6
 0124                   .dbline -2
 0124           L27:
 0124 0E940000          xcall pop_gset2
 0128                   .dbline 0 ; func end
 0128 0895              ret
 012A                   .dbsym r i 20 c
 012A                   .dbsym r Cdata 22 pc
 012A                   .dbend
 012A                   .dbfunc e BurstR1302R _BurstR1302R fV
 012A           ;              i -> R20
 012A           ;          Cdata -> R22,R23
                        .even
 012A           _BurstR1302R::
 012A 0E940000          xcall push_gset2
 012E B801              movw R22,R16
 0130                   .dbline -1
 0130                   .dbline 172
 0130           ; } 
 0130           ; /******************************************************************** 
 0130           ; 
 0130           ;  函 数 名:BurstR1302R()
 0130           ;  功    能:读取DS1302寄存器数据
 0130           ;  说    明:先写地址,后读命令/数据(寄存器多字节方式)
 0130           ;  调    用:W_Byte() , R_Byte()
 0130           ;  入口参数:pRReg: 寄存器数据地址
 0130           ;  返 回 值:无
 0130           ; ***********************************************************************/
 0130           ; void BurstR1302R(unsigned char *Cdata)
 0130           ; {
 0130                   .dbline 174
 0130           ;     unsigned char i;
 0130           ;     CLEAR_RST();
 0130 169A              sbi 0x2,6
 0132                   .dbline 175

⌨️ 快捷键说明

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