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

📄 ds18b20_main.lis

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

⌨️ 快捷键说明

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