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

📄 ds1302_main.lis

📁 16个单片机c语言实验程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 032E 00E8              ldi R16,128
 0330 50DF              xcall _writecom
 0332                   .dbline 155
 0332           ;       
 0332           ;       PORTA|=(1<<RS);
 0332 DD9A              sbi 0x1b,5
 0334                   .dbline 156
 0334           ;       PORTA&=~(1<<RW);
 0334 DE98              cbi 0x1b,6
 0336                   .dbline 157
 0336           ;       s_ms(50);
 0336 02E3              ldi R16,50
 0338 10E0              ldi R17,0
 033A 17DF              xcall _s_ms
 033C                   .dbline 158
 033C           ;       for(i=0;i<16;i++)
 033C 6627              clr R22
 033E 0BC0              xjmp L52
 0340           L49:
 0340                   .dbline 159
 0340           ;       {
 0340                   .dbline 160
 0340           ;               t = *pBuffer;
 0340 FA01              movw R30,R20
 0342 A080              ldd R10,z+0
 0344                   .dbline 161
 0344           ;               PORTD = t;
 0344 A2BA              out 0x12,R10
 0346                   .dbline 162
 0346           ;               PORTA|=(1<<EN);
 0346 DF9A              sbi 0x1b,7
 0348                   .dbline 163
 0348           ;               s_ms(50);
 0348 02E3              ldi R16,50
 034A 10E0              ldi R17,0
 034C 0EDF              xcall _s_ms
 034E                   .dbline 164
 034E           ;               PORTA&=~(1<<EN);                                
 034E DF98              cbi 0x1b,7
 0350                   .dbline 165
 0350           ;               pBuffer++;
 0350 4F5F              subi R20,255  ; offset = 1
 0352 5F4F              sbci R21,255
 0354                   .dbline 166
 0354           ;       }
 0354           L50:
 0354                   .dbline 158
 0354 6395              inc R22
 0356           L52:
 0356                   .dbline 158
 0356 6031              cpi R22,16
 0358 98F3              brlo L49
 035A           X11:
 035A                   .dbline 167
 035A           ;       writecom(0xC0);
 035A 00EC              ldi R16,192
 035C 3ADF              xcall _writecom
 035E                   .dbline 169
 035E           ; 
 035E           ;       PORTA|=(1<<RS);
 035E DD9A              sbi 0x1b,5
 0360                   .dbline 170
 0360           ;       PORTA&=~(1<<RW);
 0360 DE98              cbi 0x1b,6
 0362                   .dbline 171
 0362           ;       s_ms(50);       
 0362 02E3              ldi R16,50
 0364 10E0              ldi R17,0
 0366 01DF              xcall _s_ms
 0368                   .dbline 172
 0368           ;       for(i=0;i<16;i++)
 0368 6627              clr R22
 036A 0BC0              xjmp L56
 036C           L53:
 036C                   .dbline 173
 036C           ;       {
 036C                   .dbline 174
 036C           ;               t = *pBuffer;
 036C FA01              movw R30,R20
 036E A080              ldd R10,z+0
 0370                   .dbline 175
 0370           ;               PORTD = t;
 0370 A2BA              out 0x12,R10
 0372                   .dbline 176
 0372           ;               PORTA|=(1<<EN);
 0372 DF9A              sbi 0x1b,7
 0374                   .dbline 177
 0374           ;               s_ms(50);
 0374 02E3              ldi R16,50
 0376 10E0              ldi R17,0
 0378 F8DE              xcall _s_ms
 037A                   .dbline 178
 037A           ;               PORTA&=~(1<<EN);                                
 037A DF98              cbi 0x1b,7
 037C                   .dbline 179
 037C           ;               pBuffer++;
 037C 4F5F              subi R20,255  ; offset = 1
 037E 5F4F              sbci R21,255
 0380                   .dbline 180
 0380           ;       }
 0380           L54:
 0380                   .dbline 172
 0380 6395              inc R22
 0382           L56:
 0382                   .dbline 172
 0382 6031              cpi R22,16
 0384 98F3              brlo L53
 0386           X12:
 0386                   .dbline -2
 0386           L48:
 0386                   .dbline 0 ; func end
 0386 0C940000          xjmp pop_xgsetF00C
 038A                   .dbsym r t 10 c
 038A                   .dbsym r i 22 c
 038A                   .dbsym r pBuffer 20 pkc
 038A                   .dbend
 038A                   .dbfunc e WriteNum _WriteNum fV
 038A           ;            num -> R20,R21
 038A           ;            col -> R10,R11
 038A           ;            row -> R22,R23
                        .even
 038A           _WriteNum::
 038A 0E940000          xcall push_xgsetF00C
 038E 5901              movw R10,R18
 0390 B801              movw R22,R16
 0392 4E81              ldd R20,y+6
 0394 5F81              ldd R21,y+7
 0396                   .dbline -1
 0396                   .dbline 190
 0396           ; }
 0396           ; //====================================================
 0396           ; // 描述:在任意位置写数字函数
 0396           ; // 入口:’row‘表示要写数字所在的行地址,只能为1或2
 0396           ; //       ’col‘表示要写数字所在的列地址,只能为0--15
 0396           ; //             ‘num’表示要写的数字,只能为0--9
 0396           ; // 出口:无
 0396           ; //===================================================
 0396           ; void  WriteNum(uint   row,uint        col,uint         num)
 0396           ; {
 0396                   .dbline 191
 0396           ;       if (row == 1)   row = 0x80 + col;
 0396 6130              cpi R22,1
 0398 E0E0              ldi R30,0
 039A 7E07              cpc R23,R30
 039C 21F4              brne L58
 039E           X13:
 039E                   .dbline 191
 039E B501              movw R22,R10
 03A0 6058              subi R22,128  ; offset = 128
 03A2 7F4F              sbci R23,255
 03A4 03C0              xjmp L59
 03A6           L58:
 03A6                   .dbline 192
 03A6           ;       else    row = 0xC0 + col;
 03A6 B501              movw R22,R10
 03A8 6054              subi R22,64  ; offset = 192
 03AA 7F4F              sbci R23,255
 03AC           L59:
 03AC                   .dbline 193
 03AC           ;       writecom(row);
 03AC 062F              mov R16,R22
 03AE 11DF              xcall _writecom
 03B0                   .dbline 194
 03B0           ;       if (num<=0 | num>9)     num =0x30;
 03B0 4030              cpi R20,0
 03B2 4507              cpc R20,R21
 03B4 21F4              brne L62
 03B6           X14:
 03B6 81E0              ldi R24,1
 03B8 90E0              ldi R25,0
 03BA 5C01              movw R10,R24
 03BC 02C0              xjmp L63
 03BE           L62:
 03BE AA24              clr R10
 03C0 BB24              clr R11
 03C2           L63:
 03C2 89E0              ldi R24,9
 03C4 90E0              ldi R25,0
 03C6 8417              cp R24,R20
 03C8 9507              cpc R25,R21
 03CA 18F4              brsh L64
 03CC           X15:
 03CC 61E0              ldi R22,1
 03CE 70E0              ldi R23,0
 03D0 02C0              xjmp L65
 03D2           L64:
 03D2 6627              clr R22
 03D4 7727              clr R23
 03D6           L65:
 03D6 1501              movw R2,R10
 03D8 262A              or R2,R22
 03DA 372A              or R3,R23
 03DC 2220              tst R2
 03DE 11F4              brne X16
 03E0 3320              tst R3
 03E2 19F0              breq L60
 03E4           X16:
 03E4                   .dbline 194
 03E4 40E3              ldi R20,48
 03E6 50E0              ldi R21,0
 03E8 02C0              xjmp L61
 03EA           L60:
 03EA                   .dbline 195
 03EA           ;       else    num = 0x30 + num;
 03EA 405D              subi R20,208  ; offset = 48
 03EC 5F4F              sbci R21,255
 03EE           L61:
 03EE                   .dbline 197
 03EE           ; 
 03EE           ;       PORTA|=(1<<RS);
 03EE DD9A              sbi 0x1b,5
 03F0                   .dbline 198
 03F0           ;       s_ms(500);
 03F0 04EF              ldi R16,500
 03F2 11E0              ldi R17,1
 03F4 BADE              xcall _s_ms
 03F6                   .dbline 199
 03F6           ;       PORTA&=~(1<<RW);
 03F6 DE98              cbi 0x1b,6
 03F8                   .dbline 200
 03F8           ;       s_ms(500);
 03F8 04EF              ldi R16,500
 03FA 11E0              ldi R17,1
 03FC B6DE              xcall _s_ms
 03FE                   .dbline 201
 03FE           ;       PORTD = num;
 03FE 42BB              out 0x12,R20
 0400                   .dbline 202
 0400           ;       s_ms(500);
 0400 04EF              ldi R16,500
 0402 11E0              ldi R17,1
 0404 B2DE              xcall _s_ms
 0406                   .dbline 203
 0406           ;       PORTA|=(1<<EN);
 0406 DF9A              sbi 0x1b,7
 0408                   .dbline 204
 0408           ;       s_ms(500);
 0408 04EF              ldi R16,500
 040A 11E0              ldi R17,1
 040C AEDE              xcall _s_ms
 040E                   .dbline 205
 040E           ;       PORTA&=~(1<<EN);        
 040E DF98              cbi 0x1b,7
 0410                   .dbline 206
 0410           ;       s_ms(500);                      
 0410 04EF              ldi R16,500
 0412 11E0              ldi R17,1
 0414 AADE              xcall _s_ms
 0416                   .dbline -2
 0416           L57:
 0416                   .dbline 0 ; func end
 0416 0C940000          xjmp pop_xgsetF00C
 041A                   .dbsym r num 20 i
 041A                   .dbsym r col 10 i
 041A                   .dbsym r row 22 i
 041A                   .dbend
 041A                   .dbfunc e WriteChar _WriteChar fV
 041A           ;              t -> R12
 041A           ;              i -> R10
 041A           ;        pBuffer -> R20,R21
 041A           ;            num -> y+8
 041A           ;            col -> R10
 041A           ;            row -> R22
                        .even
 041A           _WriteChar::
 041A 0E940000          xcall push_xgsetF03C
 041E A22E              mov R10,R18
 0420 602F              mov R22,R16
 0422 4A85              ldd R20,y+10
 0424 5B85              ldd R21,y+11
 0426                   .dbline -1
 0426                   .dbline 216
 0426           ; }
 0426           ; //================================================================
 0426           ; // 描述:在任意位置写任意多个字符
 0426           ; // 入口:’row‘要写的字符所在的行,只能为1或2;
 0426           ; //       ‘col’要写的字符所在的列,只能为0---15
 0426           ; //       ‘num’要写字符的个数
 0426           ; //       ‘pbuffer’要写字符的首地址
 0426           ; //================================================================== 
 0426           ; void  WriteChar(uchar row,uchar col,uint num,uchar *pBuffer)
 0426           ; {
 0426                   .dbline 218
 0426           ;       uchar i,t;
 0426           ;       if (row == 1)   row = 0x80 + col;
 0426 6130              cpi R22,1
 0428 19F4              brne L67
 042A           X17:
 042A                   .dbline 218
 042A 6A2D              mov R22,R10
 042C 6058              subi R22,128    ; addi 128
 042E 02C0              xjmp L68
 0430           L67:
 0430                   .dbline 219
 0430           ;       else    row = 0xC0 + col;
 0430 6A2D              mov R22,R10
 0432 6054              subi R22,64    ; addi 192
 0434           L68:
 0434                   .dbline 220
 0434           ;       writecom(row);
 0434 062F              mov R16,R22
 0436 CDDE              xcall _writecom
 0438                   .dbline 224
 0438           ;       //if (num<=0 | num>9)   num =0x30;
 0438           ;       //else  num = 0x30 + num;
 0438           ; 
 0438           ;       PORTA|=(1<<RS);
 0438 DD9A              sbi 0x1b,5
 043A                   .dbline 225
 043A           ;       s_ms(500);
 043A 04EF              ldi R16,500
 043C 11E0              ldi R17,1
 043E 95DE              xcall _s_ms
 0440                   .dbline 226
 0440           ;       PORTA&=~(1<<RW);
 0440 DE98              cbi 0x1b,6
 0442                   .dbline 227
 0442           ;       s_ms(500);
 0442 04EF              ldi R16,500
 0444 11E0              ldi R17,1
 0446 91DE              xcall _s_ms
 0448                   .dbline 228
 0448           ;       for(i=num;i!=0;i--)
 0448 A884              ldd R10,y+8
 044A B984              ldd R11,y+9
 044C 14C0              xjmp L72
 044E           L69:
 044E                   .dbline 229
 044E           ;       {
 044E                   .dbline 230
 044E           ;               t = *pBuffer;
 044E FA01              movw R30,R20
 0450 C080              ldd R12,z+0
 0452                   .dbline 231
 0452           ;               s_ms(500);
 0452 04EF              ldi R16,500
 0454 11E0              ldi R17,1
 0456 89DE              xcall _s_ms
 0458                   .dbline 232
 0458           ;               PORTD = t;
 0458 C2BA              out 0x12,R12
 045A                   .dbline 233
 045A           ;               s_ms(500);
 045A 04EF              ldi R16,500
 045C 11E0              ldi R17,1

⌨️ 快捷键说明

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