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

📄 ds1302.lis

📁 用AVR单片机做的一些程序,包括跑马灯显示,PWM产生,ADC转换等
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 005E                   .dbline 94
 005E           ;                       IO_CLR;
 005E 9698              cbi 0x12,6
 0060                   .dbline 95
 0060           ;                       }
 0060           L20:
 0060                   .dbline 96
 0060 959A              sbi 0x12,5
 0062                   .dbline 97
 0062 9598              cbi 0x12,5
 0064                   .dbline 98
 0064 0695              lsr R16
 0066                   .dbline 99
 0066           L16:
 0066                   .dbline 89
 0066 6395              inc R22
 0068           L18:
 0068                   .dbline 89
 0068 6830              cpi R22,8
 006A A8F3              brlo L15
 006C                   .dbline 102
 006C           ;               SCK_SET;
 006C           ;               SCK_CLR;
 006C           ;               addr = addr >> 1;
 006C           ;               }
 006C           ;       
 006C           ;       /*输出数据:temp*/
 006C           ;       IO_IN;
 006C 8E98              cbi 0x11,6
 006E                   .dbline 103
 006E 6627              clr R22
 0070 09C0              xjmp L24
 0072           L21:
 0072                   .dbline 103
 0072           ;       for (i = 0; i < 8; i ++) {
 0072                   .dbline 104
 0072           ;               temp = temp >> 1;
 0072 4695              lsr R20
 0074                   .dbline 105
 0074           ;               if (IO_R) {
 0074 869B              sbis 0x10,6
 0076 02C0              rjmp L25
 0078                   .dbline 105
 0078                   .dbline 106
 0078           ;                       temp |= 0x80;
 0078 4068              ori R20,128
 007A                   .dbline 107
 007A           ;                       }
 007A 01C0              xjmp L26
 007C           L25:
 007C                   .dbline 108
 007C           ;               else {
 007C                   .dbline 109
 007C           ;                       temp &= 0x7F;
 007C 4F77              andi R20,127
 007E                   .dbline 110
 007E           ;                       }
 007E           L26:
 007E                   .dbline 111
 007E 959A              sbi 0x12,5
 0080                   .dbline 112
 0080 9598              cbi 0x12,5
 0082                   .dbline 113
 0082           L22:
 0082                   .dbline 103
 0082 6395              inc R22
 0084           L24:
 0084                   .dbline 103
 0084 6830              cpi R22,8
 0086 A8F3              brlo L21
 0088                   .dbline 115
 0088           ;               SCK_SET;
 0088           ;               SCK_CLR;
 0088           ;               }
 0088           ;       
 0088           ;       RST_CLR;                                        /*停止DS1302总线*/
 0088 9798              cbi 0x12,7
 008A                   .dbline 116
 008A           ;       return temp;
 008A 042F              mov R16,R20
 008C                   .dbline -2
 008C           L14:
 008C 0E940000          xcall pop_gset2
 0090                   .dbline 0 ; func end
 0090 0895              ret
 0092                   .dbsym r temp 20 c
 0092                   .dbsym r i 22 c
 0092                   .dbsym r addr 16 c
 0092                   .dbend
 0092                   .dbfunc e ds1302_write_time _ds1302_write_time fV
                        .even
 0092           _ds1302_write_time::
 0092                   .dbline -1
 0092                   .dbline 120
 0092           ; }
 0092           ; 
 0092           ; /*向DS302写入时钟数据*/
 0092           ; void ds1302_write_time(void) {
 0092                   .dbline 122
 0092           ; 
 0092           ;       ds1302_write_byte(ds1302_control_add,0x00);                     //关闭写保护 
 0092 2227              clr R18
 0094 0EE8              ldi R16,142
 0096 B4DF              xcall _ds1302_write_byte
 0098                   .dbline 123
 0098           ;       ds1302_write_byte(ds1302_sec_add,0x80);                         //暂停 
 0098 20E8              ldi R18,128
 009A 00E8              ldi R16,128
 009C B1DF              xcall _ds1302_write_byte
 009E                   .dbline 125
 009E           ;       //ds1302_write_byte(ds1302_charger_add,0xa9);                   //涓流充电 
 009E           ;       ds1302_write_byte(ds1302_year_add,time_buf[1]);         //年 
 009E 20910100          lds R18,_time_buf+1
 00A2 0CE8              ldi R16,140
 00A4 ADDF              xcall _ds1302_write_byte
 00A6                   .dbline 126
 00A6           ;       ds1302_write_byte(ds1302_month_add,time_buf[2]);        //月 
 00A6 20910200          lds R18,_time_buf+2
 00AA 08E8              ldi R16,136
 00AC A9DF              xcall _ds1302_write_byte
 00AE                   .dbline 127
 00AE           ;       ds1302_write_byte(ds1302_date_add,time_buf[3]);         //日 
 00AE 20910300          lds R18,_time_buf+3
 00B2 06E8              ldi R16,134
 00B4 A5DF              xcall _ds1302_write_byte
 00B6                   .dbline 128
 00B6           ;       ds1302_write_byte(ds1302_day_add,time_buf[7]);          //周 
 00B6 20910700          lds R18,_time_buf+7
 00BA 0AE8              ldi R16,138
 00BC A1DF              xcall _ds1302_write_byte
 00BE                   .dbline 129
 00BE           ;       ds1302_write_byte(ds1302_hr_add,time_buf[4]);           //时 
 00BE 20910400          lds R18,_time_buf+4
 00C2 04E8              ldi R16,132
 00C4 9DDF              xcall _ds1302_write_byte
 00C6                   .dbline 130
 00C6           ;       ds1302_write_byte(ds1302_min_add,time_buf[5]);          //分
 00C6 20910500          lds R18,_time_buf+5
 00CA 02E8              ldi R16,130
 00CC 99DF              xcall _ds1302_write_byte
 00CE                   .dbline 131
 00CE           ;       ds1302_write_byte(ds1302_sec_add,time_buf[6]);          //秒
 00CE 20910600          lds R18,_time_buf+6
 00D2 00E8              ldi R16,128
 00D4 95DF              xcall _ds1302_write_byte
 00D6                   .dbline 132
 00D6           ;       ds1302_write_byte(ds1302_day_add,time_buf[7]);          //周 
 00D6 20910700          lds R18,_time_buf+7
 00DA 0AE8              ldi R16,138
 00DC 91DF              xcall _ds1302_write_byte
 00DE                   .dbline 133
 00DE           ;       ds1302_write_byte(ds1302_control_add,0x80);                     //打开写保护 
 00DE 20E8              ldi R18,128
 00E0 0EE8              ldi R16,142
 00E2 8EDF              xcall _ds1302_write_byte
 00E4                   .dbline -2
 00E4           L27:
 00E4                   .dbline 0 ; func end
 00E4 0895              ret
 00E6                   .dbend
 00E6                   .dbfunc e ds1302_read_time _ds1302_read_time fV
                        .even
 00E6           _ds1302_read_time::
 00E6                   .dbline -1
 00E6                   .dbline 137
 00E6           ; }
 00E6           ; 
 00E6           ; /*从DS302读出时钟数据*/
 00E6           ; void ds1302_read_time(void)  { 
 00E6                   .dbline 139
 00E6           ; 
 00E6           ;       time_buf[1]=ds1302_read_byte(ds1302_year_add);          //年 
 00E6 0CE8              ldi R16,140
 00E8 AFDF              xcall _ds1302_read_byte
 00EA 00930100          sts _time_buf+1,R16
 00EE                   .dbline 140
 00EE           ;       time_buf[2]=ds1302_read_byte(ds1302_month_add);         //月 
 00EE 08E8              ldi R16,136
 00F0 ABDF              xcall _ds1302_read_byte
 00F2 00930200          sts _time_buf+2,R16
 00F6                   .dbline 141
 00F6           ;       time_buf[3]=ds1302_read_byte(ds1302_date_add);          //日 
 00F6 06E8              ldi R16,134
 00F8 A7DF              xcall _ds1302_read_byte
 00FA 00930300          sts _time_buf+3,R16
 00FE                   .dbline 142
 00FE           ;       time_buf[4]=ds1302_read_byte(ds1302_hr_add);            //时 
 00FE 04E8              ldi R16,132
 0100 A3DF              xcall _ds1302_read_byte
 0102 00930400          sts _time_buf+4,R16
 0106                   .dbline 143
 0106           ;       time_buf[5]=ds1302_read_byte(ds1302_min_add);           //分 
 0106 02E8              ldi R16,130
 0108 9FDF              xcall _ds1302_read_byte
 010A 00930500          sts _time_buf+5,R16
 010E                   .dbline 144
 010E           ;       time_buf[6]=(ds1302_read_byte(ds1302_sec_add))&0x7F;//秒 
 010E 00E8              ldi R16,128
 0110 9BDF              xcall _ds1302_read_byte
 0112 802F              mov R24,R16
 0114 8F77              andi R24,127
 0116 80930600          sts _time_buf+6,R24
 011A                   .dbline 145
 011A           ;       time_buf[7]=ds1302_read_byte(ds1302_day_add);           //周 
 011A 0AE8              ldi R16,138
 011C 95DF              xcall _ds1302_read_byte
 011E 00930700          sts _time_buf+7,R16
 0122                   .dbline -2
 0122           L36:
 0122                   .dbline 0 ; func end
 0122 0895              ret
 0124                   .dbend
 0124                   .dbfunc e ds1302_init _ds1302_init fV
                        .even
 0124           _ds1302_init::
 0124                   .dbline -1
 0124                   .dbline 149
 0124           ; }
 0124           ; 
 0124           ; /*DS302初始化函数*/
 0124           ; void ds1302_init(void) {
 0124                   .dbline 151
 0124           ;       
 0124           ;       RST_CLR;                        /*RST脚置低*/
 0124 9798              cbi 0x12,7
 0126                   .dbline 152
 0126           ;       SCK_CLR;                        /*SCK脚置低*/
 0126 9598              cbi 0x12,5
 0128                   .dbline 153
 0128           ;       RST_OUT;                        /*RST脚设置为输出*/
 0128 8F9A              sbi 0x11,7
 012A                   .dbline 154
 012A           ;       SCK_OUT;                        /*SCK脚设置为输出*/
 012A 8D9A              sbi 0x11,5
 012C                   .dbline -2
 012C           L44:
 012C                   .dbline 0 ; func end
 012C 0895              ret
 012E                   .dbend

⌨️ 快捷键说明

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