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

📄 ds1302_main.lis

📁 16个单片机c语言实验程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 00DC 00E8              ldi R16,128
 00DE 90DF              xcall _ds1302_write_byte
 00E0                   .dbline 126
 00E0 FA01              movw R30,R20
 00E2 2081              ldd R18,z+0
 00E4 0AE8              ldi R16,138
 00E6 8CDF              xcall _ds1302_write_byte
 00E8                   .dbline 127
 00E8 20E8              ldi R18,128
 00EA 0EE8              ldi R16,142
 00EC 89DF              xcall _ds1302_write_byte
 00EE                   .dbline -2
 00EE           L27:
 00EE                   .dbline 0 ; func end
 00EE 5991              ld R21,y+
 00F0 4991              ld R20,y+
 00F2 0895              ret
 00F4                   .dbsym r time_data 20 pc
 00F4                   .dbend
 00F4                   .dbfunc e ds1302_read_time _ds1302_read_time fV
 00F4           ;      time_data -> R20,R21
                        .even
 00F4           _ds1302_read_time::
 00F4 0E940000          xcall push_xgsetF00C
 00F8 A801              movw R20,R16
 00FA                   .dbline -1
 00FA                   .dbline 131
 00FA                   .dbline 132
 00FA 4F5F              subi R20,255  ; offset = 1
 00FC 5F4F              sbci R21,255
 00FE                   .dbline 133
 00FE 0CE8              ldi R16,140
 0100 A1DF              xcall _ds1302_read_byte
 0102 FA01              movw R30,R20
 0104 0083              std z+0,R16
 0106                   .dbline 134
 0106 4F5F              subi R20,255  ; offset = 1
 0108 5F4F              sbci R21,255
 010A                   .dbline 135
 010A 08E8              ldi R16,136
 010C 9BDF              xcall _ds1302_read_byte
 010E FA01              movw R30,R20
 0110 0083              std z+0,R16
 0112                   .dbline 136
 0112 4F5F              subi R20,255  ; offset = 1
 0114 5F4F              sbci R21,255
 0116                   .dbline 137
 0116 06E8              ldi R16,134
 0118 95DF              xcall _ds1302_read_byte
 011A A02E              mov R10,R16
 011C FA01              movw R30,R20
 011E A082              std z+0,R10
 0120                   .dbline 138
 0120 4F5F              subi R20,255  ; offset = 1
 0122 5F4F              sbci R21,255
 0124                   .dbline 139
 0124 04E8              ldi R16,132
 0126 8EDF              xcall _ds1302_read_byte
 0128 A02E              mov R10,R16
 012A FA01              movw R30,R20
 012C A082              std z+0,R10
 012E                   .dbline 140
 012E 4F5F              subi R20,255  ; offset = 1
 0130 5F4F              sbci R21,255
 0132                   .dbline 141
 0132 02E8              ldi R16,130
 0134 87DF              xcall _ds1302_read_byte
 0136 A02E              mov R10,R16
 0138 FA01              movw R30,R20
 013A A082              std z+0,R10
 013C                   .dbline 142
 013C 4F5F              subi R20,255  ; offset = 1
 013E 5F4F              sbci R21,255
 0140                   .dbline 143
 0140 00E8              ldi R16,128
 0142 80DF              xcall _ds1302_read_byte
 0144 602F              mov R22,R16
 0146 862F              mov R24,R22
 0148 8F77              andi R24,127
 014A FA01              movw R30,R20
 014C 8083              std z+0,R24
 014E                   .dbline 144
 014E 4F5F              subi R20,255  ; offset = 1
 0150 5F4F              sbci R21,255
 0152                   .dbline 145
 0152 0AE8              ldi R16,138
 0154 77DF              xcall _ds1302_read_byte
 0156 A02E              mov R10,R16
 0158 FA01              movw R30,R20
 015A A082              std z+0,R10
 015C                   .dbline -2
 015C           L28:
 015C                   .dbline 0 ; func end
 015C 0C940000          xjmp pop_xgsetF00C
 0160                   .dbsym r time_data 20 pc
 0160                   .dbend
 0160                   .dbfunc e ds1302_init _ds1302_init fV
                        .even
 0160           _ds1302_init::
 0160                   .dbline -1
 0160                   .dbline 149
 0160                   .dbline 151
 0160 AE98              cbi 0x15,6
 0162                   .dbline 152
 0162 A898              cbi 0x15,0
 0164                   .dbline 153
 0164 A69A              sbi 0x14,6
 0166                   .dbline 154
 0166 A09A              sbi 0x14,0
 0168                   .dbline -2
 0168           L29:
 0168                   .dbline 0 ; func end
 0168 0895              ret
 016A                   .dbend
 016A                   .dbfile E:\16实验程序\ds1302\1602.h
 016A                   .dbfunc e s_ms _s_ms fV
 016A           ;             ms -> R16,R17
                        .even
 016A           _s_ms::
 016A                   .dbline -1
 016A                   .dbline 9
 016A           ; #define uchar unsigned char 
 016A           ; #define uint unsigned int 
 016A           ; 
 016A           ; #define RS 5
 016A           ; #define RW 6
 016A           ; #define EN 7
 016A           ; 
 016A           ; void s_ms(uint ms)
 016A           ; {
 016A                   .dbline 10
 016A           ;       for(;ms>1;ms--);
 016A 02C0              xjmp L34
 016C           L31:
 016C                   .dbline 10
 016C           L32:
 016C                   .dbline 10
 016C 0150              subi R16,1
 016E 1040              sbci R17,0
 0170           L34:
 0170                   .dbline 10
 0170 81E0              ldi R24,1
 0172 90E0              ldi R25,0
 0174 8017              cp R24,R16
 0176 9107              cpc R25,R17
 0178 C8F3              brlo L31
 017A           X8:
 017A                   .dbline -2
 017A           L30:
 017A                   .dbline 0 ; func end
 017A 0895              ret
 017C                   .dbsym r ms 16 i
 017C                   .dbend
 017C                   .dbfunc e busy _busy fV
 017C           ;           temp -> R20
                        .even
 017C           _busy::
 017C 4A93              st -y,R20
 017E                   .dbline -1
 017E                   .dbline 15
 017E           ; }     
 017E           ; 
 017E           ; //查忙
 017E           ; void busy(void)
 017E           ; {
 017E                   .dbline 17
 017E           ;     uchar temp;
 017E           ;       s_ms(500);
 017E 04EF              ldi R16,500
 0180 11E0              ldi R17,1
 0182 F3DF              xcall _s_ms
 0184                   .dbline 18
 0184           ;       PORTA&=~(1<<RS);    //RS=0
 0184 DD98              cbi 0x1b,5
 0186                   .dbline 19
 0186           ;       s_ms(500);
 0186 04EF              ldi R16,500
 0188 11E0              ldi R17,1
 018A EFDF              xcall _s_ms
 018C                   .dbline 20
 018C           ;       PORTA|=(1<<RW);     //RW=1
 018C DE9A              sbi 0x1b,6
 018E                   .dbline 21
 018E           ;       s_ms(500);
 018E 04EF              ldi R16,500
 0190 11E0              ldi R17,1
 0192 EBDF              xcall _s_ms
 0194 1AC0              xjmp L37
 0196           L36:
 0196                   .dbline 23
 0196           ;       while(temp)
 0196           ;       {
 0196                   .dbline 24
 0196           ;               PORTA|=(1<<EN); //EN=1
 0196 DF9A              sbi 0x1b,7
 0198                   .dbline 25
 0198           ;               s_ms(500);
 0198 04EF              ldi R16,500
 019A 11E0              ldi R17,1
 019C E6DF              xcall _s_ms
 019E                   .dbline 26
 019E           ;               DDRD=0x00;      //A口变输入
 019E 2224              clr R2
 01A0 21BA              out 0x11,R2
 01A2                   .dbline 27
 01A2           ;               PORTD=0xff;     //上拉使能
 01A2 8FEF              ldi R24,255
 01A4 82BB              out 0x12,R24
 01A6                   .dbline 28
 01A6           ;               s_ms(500);
 01A6 04EF              ldi R16,500
 01A8 11E0              ldi R17,1
 01AA DFDF              xcall _s_ms
 01AC                   .dbline 29
 01AC           ;               temp = PIND&0x80;    //读取A口
 01AC 40B3              in R20,0x10
 01AE 4078              andi R20,128
 01B0                   .dbline 30
 01B0           ;               s_ms(500);      
 01B0 04EF              ldi R16,500
 01B2 11E0              ldi R17,1
 01B4 DADF              xcall _s_ms
 01B6                   .dbline 31
 01B6           ;               DDRD=0xff;      
 01B6 8FEF              ldi R24,255
 01B8 81BB              out 0x11,R24
 01BA                   .dbline 32
 01BA           ;               PORTD=0xff;        //A口变输出
 01BA 82BB              out 0x12,R24
 01BC                   .dbline 33
 01BC           ;               s_ms(500);
 01BC 04EF              ldi R16,500
 01BE 11E0              ldi R17,1
 01C0 D4DF              xcall _s_ms
 01C2                   .dbline 34
 01C2           ;               PORTA&=~(1<<EN);   //EN=0
 01C2 DF98              cbi 0x1b,7
 01C4                   .dbline 35
 01C4           ;               s_ms(500);
 01C4 04EF              ldi R16,500
 01C6 11E0              ldi R17,1
 01C8 D0DF              xcall _s_ms
 01CA                   .dbline 36
 01CA           ;       }
 01CA           L37:
 01CA                   .dbline 22
 01CA 4423              tst R20
 01CC 21F7              brne L36
 01CE           X9:
 01CE                   .dbline -2
 01CE           L35:
 01CE                   .dbline 0 ; func end
 01CE 4991              ld R20,y+
 01D0 0895              ret
 01D2                   .dbsym r temp 20 c
 01D2                   .dbend
 01D2                   .dbfunc e writecom _writecom fV
 01D2           ;            com -> R10
                        .even
 01D2           _writecom::
 01D2 AA92              st -y,R10
 01D4 A02E              mov R10,R16
 01D6                   .dbline -1
 01D6                   .dbline 41
 01D6           ; }
 01D6           ; 
 01D6           ; //写指令
 01D6           ; void writecom(uchar   com)
 01D6           ; {
 01D6                   .dbline 42
 01D6           ;       busy();
 01D6 D2DF              xcall _busy
 01D8                   .dbline 43
 01D8           ;       s_ms(500);
 01D8 04EF              ldi R16,500
 01DA 11E0              ldi R17,1
 01DC C6DF              xcall _s_ms
 01DE                   .dbline 44
 01DE           ;       PORTA&=~(1<<RS);   //RS=0
 01DE DD98              cbi 0x1b,5
 01E0                   .dbline 45
 01E0           ;       s_ms(500);
 01E0 04EF              ldi R16,500
 01E2 11E0              ldi R17,1
 01E4 C2DF              xcall _s_ms
 01E6                   .dbline 46
 01E6           ;       PORTA&=~(1<<RW);   //RW=0
 01E6 DE98              cbi 0x1b,6
 01E8                   .dbline 47
 01E8           ;       s_ms(500);
 01E8 04EF              ldi R16,500
 01EA 11E0              ldi R17,1
 01EC BEDF              xcall _s_ms
 01EE                   .dbline 48
 01EE           ;       PORTA|=(1<<EN);    //EN=1
 01EE DF9A              sbi 0x1b,7
 01F0                   .dbline 49
 01F0           ;       s_ms(500);
 01F0 04EF              ldi R16,500
 01F2 11E0              ldi R17,1
 01F4 BADF              xcall _s_ms
 01F6                   .dbline 50
 01F6           ;       PORTD = com;       //输出指令
 01F6 A2BA              out 0x12,R10
 01F8                   .dbline 51
 01F8           ;       s_ms(500);
 01F8 04EF              ldi R16,500
 01FA 11E0              ldi R17,1
 01FC B6DF              xcall _s_ms
 01FE                   .dbline 52
 01FE           ;       PORTA&=~(1<<EN);   //EN=0
 01FE DF98              cbi 0x1b,7
 0200                   .dbline 53
 0200           ;       s_ms(500);
 0200 04EF              ldi R16,500
 0202 11E0              ldi R17,1
 0204 B2DF              xcall _s_ms
 0206                   .dbline -2
 0206           L39:
 0206                   .dbline 0 ; func end
 0206 A990              ld R10,y+
 0208 0895              ret
 020A                   .dbsym r com 10 c
 020A                   .dbend
 020A                   .dbfunc e LcdInit _LcdInit fV
                        .even
 020A           _LcdInit::
 020A                   .dbline -1
 020A                   .dbline 58
 020A           ; }
 020A           ; 
 020A           ; //1602初始化
 020A           ; void  LcdInit(void)
 020A           ; {
 020A                   .dbline 59
 020A           ;     DDRD = 0xff; 
 020A 8FEF              ldi R24,255
 020C 81BB              out 0x11,R24
 020E                   .dbline 60
 020E           ;     PORTD = 0x00; 
 020E 2224              clr R2
 0210 22BA              out 0x12,R2
 0212                   .dbline 61
 0212           ;       writecom(0x38);
 0212 08E3              ldi R16,56

⌨️ 快捷键说明

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