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

📄 ds1302.lis

📁 有遥控的温度计,用dS1302做时钟芯片
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0088           ;   asm("nop");
 0088 0000              nop
 008A                   .dbline 68
 008A           ;   asm("nop");
 008A 0000              nop
 008C                   .dbline 69
 008C           ;   asm("nop");
 008C 0000              nop
 008E                   .dbline 70
 008E           ;   asm("nop");
 008E 0000              nop
 0090                   .dbline 71
 0090           ; T_PORT|=T_RST;                  //时钟信号低时拉高RST初始化
 0090 AF9A              sbi 0x15,7
 0092                   .dbline 72
 0092           ; temp=addr;
 0092 642F              mov R22,R20
 0094                   .dbline 73
 0094           ;   for(i=0;i<8;i++) 
 0094 AA24              clr R10
 0096 0EC0              rjmp L23
 0098           L20:
 0098                   .dbline 74
 0098           ;   { 
 0098                   .dbline 75
 0098           ;       if(temp&(1<<i)) 
 0098 01E0              ldi R16,1
 009A 1A2D              mov R17,R10
 009C 00D0              rcall lsl8
 009E 262E              mov R2,R22
 00A0 2022              and R2,R16
 00A2 11F0              breq L24
 00A4                   .dbline 76
 00A4           ;                T_PORT |=T_IO ;  
 00A4 AE9A              sbi 0x15,6
 00A6 01C0              rjmp L25
 00A8           L24:
 00A8                   .dbline 78
 00A8           ;       else 
 00A8           ;                T_PORT &=~T_IO ;
 00A8 AE98              cbi 0x15,6
 00AA           L25:
 00AA                   .dbline 79
 00AA 0000              nop
 00AC                   .dbline 80
 00AC 0000              nop
 00AE                   .dbline 81
 00AE AD9A              sbi 0x15,5
 00B0                   .dbline 82
 00B0 AD98              cbi 0x15,5
 00B2                   .dbline 83
 00B2           L21:
 00B2                   .dbline 73
 00B2 A394              inc R10
 00B4           L23:
 00B4                   .dbline 73
 00B4 8A2D              mov R24,R10
 00B6 8830              cpi R24,8
 00B8 78F3              brlo L20
 00BA                   .dbline 84
 00BA           ;     asm("nop");
 00BA           ;     asm("nop"); 
 00BA           ;       T_PORT |=T_CLK;             //时钟上升沿写入数据        
 00BA           ;       T_PORT &=~T_CLK;             //时钟拉低电平 
 00BA           ;   }
 00BA           ;    T_DDR&=~T_IO;
 00BA A698              cbi 0x14,6
 00BC                   .dbline 85
 00BC           ; for(i=0;i<8;i++)
 00BC AA24              clr R10
 00BE 14C0              rjmp L29
 00C0           L26:
 00C0                   .dbline 86
 00C0           ;  { 
 00C0                   .dbline 87
 00C0           ;     k=(T_PIN&T_IO);
 00C0 43B3              in R20,0x13
 00C2 4074              andi R20,64
 00C4                   .dbline 88
 00C4           ;   if(k==T_IO)
 00C4 4034              cpi R20,64
 00C6 29F4              brne L30
 00C8                   .dbline 89
 00C8           ;       temp|=(1<<i);
 00C8 01E0              ldi R16,1
 00CA 1A2D              mov R17,R10
 00CC 00D0              rcall lsl8
 00CE 602B              or R22,R16
 00D0 06C0              rjmp L31
 00D2           L30:
 00D2                   .dbline 91
 00D2           ;   else
 00D2           ;         temp&=~(1<<i);
 00D2 01E0              ldi R16,1
 00D4 1A2D              mov R17,R10
 00D6 00D0              rcall lsl8
 00D8 202E              mov R2,R16
 00DA 2094              com R2
 00DC 6221              and R22,R2
 00DE           L31:
 00DE                   .dbline 92
 00DE 0000              nop
 00E0                   .dbline 93
 00E0 0000              nop
 00E2                   .dbline 94
 00E2 AD9A              sbi 0x15,5
 00E4                   .dbline 95
 00E4 AD98              cbi 0x15,5
 00E6                   .dbline 96
 00E6           L27:
 00E6                   .dbline 85
 00E6 A394              inc R10
 00E8           L29:
 00E8                   .dbline 85
 00E8 8A2D              mov R24,R10
 00EA 8830              cpi R24,8
 00EC 48F3              brlo L26
 00EE                   .dbline 97
 00EE           ;           asm("nop");
 00EE           ;        asm("nop"); 
 00EE           ;   T_PORT|=T_CLK;              //上升沿读出数据 
 00EE           ;    T_PORT &=~T_CLK;             //时钟电平拉低 
 00EE           ;   }
 00EE           ;   T_DDR|=T_IO;
 00EE A69A              sbi 0x14,6
 00F0                   .dbline 98
 00F0           ;   T_PORT&=~T_CLK; 
 00F0 AD98              cbi 0x15,5
 00F2                   .dbline 99
 00F2           ;   T_PORT&=~T_RST;             //禁止DS1302 
 00F2 AF98              cbi 0x15,7
 00F4                   .dbline 100
 00F4           ;  return(temp);
 00F4 062F              mov R16,R22
 00F6                   .dbline -2
 00F6           L19:
 00F6 00D0              rcall pop_gset3
 00F8                   .dbline 0 ; func end
 00F8 0895              ret
 00FA                   .dbsym r k 20 c
 00FA                   .dbsym r temp 22 c
 00FA                   .dbsym r i 10 c
 00FA                   .dbsym r addr 20 c
 00FA                   .dbend
 00FA                   .dbfunc e init_1302 _init_1302 fV
                        .even
 00FA           _init_1302::
 00FA                   .dbline -1
 00FA                   .dbline 104
 00FA           ; }
 00FA           ; //1302初始化
 00FA           ; void init_1302()
 00FA           ; {
 00FA                   .dbline 105
 00FA           ; write_data(0x8e,0x00);      //关闭寄存器写保护
 00FA 2227              clr R18
 00FC 0EE8              ldi R16,142
 00FE 88DF              rcall _write_data
 0100                   .dbline 106
 0100           ; write_data(0x90,0x00);            //写充电寄存器
 0100 2227              clr R18
 0102 00E9              ldi R16,144
 0104 85DF              rcall _write_data
 0106                   .dbline 107
 0106           ; write_data(0x80,0x00);      //秒寄存器停止位置0,时钟启动,初值设为0
 0106 2227              clr R18
 0108 00E8              ldi R16,128
 010A 82DF              rcall _write_data
 010C                   .dbline -2
 010C           L32:
 010C                   .dbline 0 ; func end
 010C 0895              ret
 010E                   .dbend
 010E                   .dbfunc e init_time _init_time fV
 010E           ;              d -> y+10
 010E           ;          month -> y+8
 010E           ;            day -> y+6
 010E           ;           hour -> y+4
 010E           ;            min -> R20
 010E           ;            sec -> R22
                        .even
 010E           _init_time::
 010E 00D0              rcall push_gset2
 0110 422F              mov R20,R18
 0112 602F              mov R22,R16
 0114                   .dbline -1
 0114                   .dbline 111
 0114           ; }
 0114           ; 
 0114           ; void init_time(uchar sec,uchar min,uchar hour,uchar day,uchar month,uchar d)
 0114           ; {
 0114                   .dbline 112
 0114           ;   write_data(0x80,sec);
 0114 262F              mov R18,R22
 0116 00E8              ldi R16,128
 0118 7BDF              rcall _write_data
 011A                   .dbline 113
 011A           ;   write_data(0x82,min);
 011A 242F              mov R18,R20
 011C 02E8              ldi R16,130
 011E 78DF              rcall _write_data
 0120                   .dbline 114
 0120           ;   write_data(0x84,hour);
 0120 2C81              ldd R18,y+4
 0122 04E8              ldi R16,132
 0124 75DF              rcall _write_data
 0126                   .dbline 115
 0126           ;   write_data(0x86,day);
 0126 2E81              ldd R18,y+6
 0128 06E8              ldi R16,134
 012A 72DF              rcall _write_data
 012C                   .dbline 116
 012C           ;   write_data(0x88,month);
 012C 2885              ldd R18,y+8
 012E 08E8              ldi R16,136
 0130 6FDF              rcall _write_data
 0132                   .dbline 117
 0132           ;   write_data(0x8a,d);
 0132 2A85              ldd R18,y+10
 0134 0AE8              ldi R16,138
 0136 6CDF              rcall _write_data
 0138                   .dbline -2
 0138           L33:
 0138 00D0              rcall pop_gset2
 013A                   .dbline 0 ; func end
 013A 0895              ret
 013C                   .dbsym l d 10 c
 013C                   .dbsym l month 8 c
 013C                   .dbsym l day 6 c
 013C                   .dbsym l hour 4 c
 013C                   .dbsym r min 20 c
 013C                   .dbsym r sec 22 c
 013C                   .dbend

⌨️ 快捷键说明

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