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

📄 main.lis

📁 avr基础程序大全
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 009C                   .dbline 66
 009C 4395              inc R20
 009E           L25:
 009E                   .dbline 66
 009E 4830              cpi R20,8
 00A0 70F3              brlo L22
 00A2           X5:
 00A2                   .dbline 76
 00A2           ;      SET_OP_1WIRE;  
 00A2 979A              sbi 0x12,7
 00A4                   .dbline -2
 00A4           L21:
 00A4                   .dbline 0 ; func end
 00A4 4991              ld R20,y+
 00A6 A990              ld R10,y+
 00A8 0895              ret
 00AA                   .dbsym r m 20 c
 00AA                   .dbsym r x 10 c
 00AA                   .dbend
 00AA                   .dbfunc e read_1820 _read_1820 fc
 00AA           ;           temp -> R10
 00AA           ;              k -> R22
 00AA           ;              n -> R20
                        .even
 00AA           _read_1820::
 00AA 0E940000          xcall push_xgsetF00C
 00AE                   .dbline -1
 00AE                   .dbline 79
 00AE           ; }  
 00AE           ; unsigned char read_1820()  
 00AE           ; {      
 00AE                   .dbline 81
 00AE           ;     unsigned char temp,k,n;  
 00AE           ;     temp=0;  
 00AE AA24              clr R10
 00B0                   .dbline 82
 00B0           ;     for(n=0;n<8;n++)  
 00B0 4427              clr R20
 00B2 18C0              xjmp L32
 00B4           L29:
 00B4                   .dbline 83
 00B4           ;        {  
 00B4                   .dbline 84
 00B4           ;       CLR_OP_1WIRE;  
 00B4 9798              cbi 0x12,7
 00B6                   .dbline 85
 00B6           ;       SET_OP_1WIRE;  
 00B6 979A              sbi 0x12,7
 00B8                   .dbline 86
 00B8           ;       CLR_DIR_1WIRE;  
 00B8 8F98              cbi 0x11,7
 00BA                   .dbline 87
 00BA           ;       k=(CHECK_IP_1WIRE);    //读数据,从低位开始  
 00BA 60B3              in R22,0x10
 00BC 6078              andi R22,128
 00BE                   .dbline 88
 00BE           ;       if(k)  
 00BE 31F0              breq L33
 00C0           X6:
 00C0                   .dbline 89
 00C0           ;       temp|=(1<<n);  
 00C0 01E0              ldi R16,1
 00C2 142F              mov R17,R20
 00C4 0E940000          xcall lsl8
 00C8 A02A              or R10,R16
 00CA 07C0              xjmp L34
 00CC           L33:
 00CC                   .dbline 91
 00CC           ;       else  
 00CC           ;       temp&=~(1<<n);  
 00CC 01E0              ldi R16,1
 00CE 142F              mov R17,R20
 00D0 0E940000          xcall lsl8
 00D4 202E              mov R2,R16
 00D6 2094              com R2
 00D8 A220              and R10,R2
 00DA           L34:
 00DA                   .dbline 92
 00DA           ;       delay_nus(50); //60~120us      
 00DA 02E3              ldi R16,50
 00DC 10E0              ldi R17,0
 00DE 92DF              xcall _delay_nus
 00E0                   .dbline 93
 00E0           ;       SET_DIR_1WIRE;  
 00E0 8F9A              sbi 0x11,7
 00E2                   .dbline 94
 00E2           ;    }  
 00E2           L30:
 00E2                   .dbline 82
 00E2 4395              inc R20
 00E4           L32:
 00E4                   .dbline 82
 00E4 4830              cpi R20,8
 00E6 30F3              brlo L29
 00E8           X7:
 00E8                   .dbline 95
 00E8           ;    return (temp);  
 00E8 0A2D              mov R16,R10
 00EA                   .dbline -2
 00EA           L28:
 00EA                   .dbline 0 ; func end
 00EA 0C940000          xjmp pop_xgsetF00C
 00EE                   .dbsym r temp 10 c
 00EE                   .dbsym r k 22 c
 00EE                   .dbsym r n 20 c
 00EE                   .dbend
 00EE                   .dbfunc e gettemp _gettemp fV
 00EE           ;            wm3 -> R10
 00EE           ;            wm1 -> R10
 00EE           ;            wm0 -> R20
 00EE           ;           teml -> R10
 00EE           ;           temh -> R22
 00EE           ;            wm2 -> R12
                        .even
 00EE           _gettemp::
 00EE 0E940000          xcall push_xgsetF03C
 00F2                   .dbline -1
 00F2                   .dbline 99
 00F2           ; }   
 00F2           ; 
 00F2           ; void gettemp()    //读取温度值 
 00F2           ; {  
 00F2                   .dbline 101
 00F2           ;      unsigned char temh,teml,wm0,wm1,wm2,wm3;  
 00F2           ;      init_1820();        //复位18b20  
 00F2 AEDF              xcall _init_1820
 00F4                   .dbline 102
 00F4           ;      write_1820(0xcc);   // 发出转换命令  
 00F4 0CEC              ldi R16,204
 00F6 BEDF              xcall _write_1820
 00F8                   .dbline 103
 00F8           ;      write_1820(0x44); 
 00F8 04E4              ldi R16,68
 00FA BCDF              xcall _write_1820
 00FC                   .dbline 105
 00FC           ;  //  delay_nms(800);     //不延时也好使,不知道怎么回事! 
 00FC           ;      init_1820();  
 00FC A9DF              xcall _init_1820
 00FE                   .dbline 106
 00FE           ;      write_1820(0xcc);  //发出读命令  
 00FE 0CEC              ldi R16,204
 0100 B9DF              xcall _write_1820
 0102                   .dbline 107
 0102           ;      write_1820(0xbe);  
 0102 0EEB              ldi R16,190
 0104 B7DF              xcall _write_1820
 0106                   .dbline 108
 0106           ;      teml=read_1820();  //读数据  
 0106 D1DF              xcall _read_1820
 0108 A02E              mov R10,R16
 010A                   .dbline 109
 010A           ;      temh=read_1820();  
 010A CFDF              xcall _read_1820
 010C 602F              mov R22,R16
 010E                   .dbline 110
 010E           ;      wm0=teml>>4;       //只要高8位的低四位和低8位的高四位,温度范围0~99啦! 
 010E 4A2D              mov R20,R10
 0110 4295              swap R20
 0112 4F70              andi R20,#0x0F
 0114                   .dbline 111
 0114           ;      wm1=temh<<4; 
 0114 862F              mov R24,R22
 0116 8F70              andi R24,#0x0F
 0118 8295              swap R24
 011A                   .dbline 112
 011A           ;      wm2=wm1+wm0;        //16进制转10进制 
 011A C82E              mov R12,R24
 011C C40E              add R12,R20
 011E                   .dbline 113
 011E           ;      wm3=wm2/100; 
 011E 14E6              ldi R17,100
 0120 0C2D              mov R16,R12
 0122 0E940000          xcall div8u
 0126 A02E              mov R10,R16
 0128                   .dbline 114
 0128           ;      wmh=(wm2%100)/10;   //出口参数了!wmh是显示的高位,wml使显示的低位 
 0128 14E6              ldi R17,100
 012A 0C2D              mov R16,R12
 012C 0E940000          xcall mod8u
 0130 1AE0              ldi R17,10
 0132 0E940000          xcall div8u
 0136 00930100          sts _wmh,R16
 013A                   .dbline 115
 013A           ;      wml=(wm2%100)%10; 
 013A 14E6              ldi R17,100
 013C 0C2D              mov R16,R12
 013E 0E940000          xcall mod8u
 0142 1AE0              ldi R17,10
 0144 0E940000          xcall mod8u
 0148 00930000          sts _wml,R16
 014C                   .dbline 116
 014C           ;        show(wm3,2);
 014C 22E0              ldi R18,2
 014E 30E0              ldi R19,0
 0150 0A2D              mov R16,R10
 0152 1127              clr R17
 0154 0E940000          xcall _show
 0158                   .dbline 117
 0158           ;        show( wmh,1);
 0158 21E0              ldi R18,1
 015A 30E0              ldi R19,0
 015C 00910100          lds R16,_wmh
 0160 1127              clr R17
 0162 0E940000          xcall _show
 0166                   .dbline 118
 0166           ;        show(wml,0);
 0166 2227              clr R18
 0168 3327              clr R19
 016A 00910000          lds R16,_wml
 016E 1127              clr R17
 0170 0E940000          xcall _show
 0174                   .dbline -2
 0174           L35:
 0174                   .dbline 0 ; func end
 0174 0C940000          xjmp pop_xgsetF03C
 0178                   .dbsym r wm3 10 c
 0178                   .dbsym r wm1 10 c
 0178                   .dbsym r wm0 20 c
 0178                   .dbsym r teml 10 c
 0178                   .dbsym r temh 22 c
 0178                   .dbsym r wm2 12 c
 0178                   .dbend
 0178                   .dbfunc e main _main fV
                        .even
 0178           _main::
 0178                   .dbline -1
 0178                   .dbline 126
 0178           ; }   
 0178           ; 
 0178           ; 
 0178           ; //延时程序: 
 0178           ; 
 0178           ; 
 0178           ; void main()
 0178           ; {smginit();
 0178                   .dbline 126
 0178 0E940000          xcall _smginit
 017C                   .dbline 127
 017C           ;  DDRA=0XFF;
 017C 8FEF              ldi R24,255
 017E 8ABB              out 0x1a,R24
 0180                   .dbline 128
 0180           ;  DDRC=0XFF;
 0180 84BB              out 0x14,R24
 0182 01C0              xjmp L38
 0184           L37:
 0184                   .dbline 130
 0184           ;  while(1)
 0184           ;  {gettemp();}
 0184                   .dbline 130
 0184 B4DF              xcall _gettemp
 0186                   .dbline 130
 0186           L38:
 0186                   .dbline 129
 0186 FECF              xjmp L37
 0188           X8:
 0188                   .dbline -2
 0188           L36:
 0188                   .dbline 0 ; func end
 0188 0895              ret
 018A                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile F:\51&av配套光盘\51&avr配套程序\avr程序\24.DS18b20\main.c
 0000           _wml::
 0000                   .blkb 1
 0001                   .dbsym e wml _wml c
 0001           _wmh::
 0001                   .blkb 1
 0002                   .dbsym e wmh _wmh c
 0002           ; }

⌨️ 快捷键说明

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