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

📄 ds18b20_main.lis

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

⌨️ 快捷键说明

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