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

📄 zuopin.lis

📁 18b20的程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module zuopin.c
                        .area text(rom, con, rel)
 0000                   .dbfile K:\作品\新建文件夹\zuopin.c
 0000                   .dbfunc e delay_us _delay_us fV
                        .even
 0000           _delay_us::
 0000                   .dbline -1
 0000                   .dbline 7
 0000           ; // Target : M8
 0000           ; // Crystal: 8.0000Mhz    //8M晶振
 0000           ; #include <iom8v.h> 
 0000           ; #include <macros.h> 
 0000           ; 
 0000           ; void delay_us()     //微秒延时程序(1us)
 0000           ; {
 0000                   .dbline 8
 0000           ;  asm("nop");
 0000 0000              nop
 0002                   .dbline -2
 0002           L1:
 0002                   .dbline 0 ; func end
 0002 0895              ret
 0004                   .dbend
 0004                   .dbfunc e delay _delay fV
 0004           ;           time -> R20,R21
                        .even
 0004           _delay::
 0004 00D0              rcall push_gset1
 0006 A801              movw R20,R16
 0008                   .dbline -1
 0008                   .dbline 11
 0008           ; }     
 0008           ; void delay(unsigned int time)    
 0008           ; {
 0008 03C0              rjmp L4
 000A           L3:
 000A                   .dbline 13
 000A                   .dbline 13
 000A FADF              rcall _delay_us
 000C                   .dbline 14
 000C 4150              subi R20,1
 000E 5040              sbci R21,0
 0010                   .dbline 15
 0010           L4:
 0010                   .dbline 12
 0010           ; while(time)
 0010 4030              cpi R20,0
 0012 4507              cpc R20,R21
 0014 D1F7              brne L3
 0016           X0:
 0016                   .dbline -2
 0016           L2:
 0016 00D0              rcall pop_gset1
 0018                   .dbline 0 ; func end
 0018 0895              ret
 001A                   .dbsym r time 20 i
 001A                   .dbend
 001A                   .dbfunc e init_1820 _init_1820 fV
                        .even
 001A           _init_1820::
 001A                   .dbline -1
 001A                   .dbline 19
 001A           ;   { delay_us();
 001A           ;     time--;
 001A           ;    }
 001A           ; }     
 001A           ;    
 001A           ; void init_1820()    //初始化18b20
 001A           ; {
 001A                   .dbline 20
 001A           ;   PORTD|=0X80;   //总线置1
 001A 979A              sbi 0x12,7
 001C                   .dbline 21
 001C           ;   delay(10);
 001C 0AE0              ldi R16,10
 001E 10E0              ldi R17,0
 0020 F1DF              rcall _delay
 0022                   .dbline 22
 0022           ;   PORTD&=~0x80;  //总线置0 
 0022 9798              cbi 0x12,7
 0024                   .dbline 23
 0024           ;   delay(1200);    // 延时等待
 0024 00EB              ldi R16,1200
 0026 14E0              ldi R17,4
 0028 EDDF              rcall _delay
 002A                   .dbline 24
 002A           ;   DDRD&=~0x80;  
 002A 8F98              cbi 0x11,7
 002C                   .dbline 25
 002C           ;   PORTD|=0x80;   //总线置1
 002C 979A              sbi 0x12,7
 002E                   .dbline 26
 002E           ;   delay(50);   
 002E 02E3              ldi R16,50
 0030 10E0              ldi R17,0
 0032 E8DF              rcall _delay
 0034                   .dbline 27
 0034           ;   DDRD|=0x80; 
 0034 8F9A              sbi 0x11,7
 0036                   .dbline 28
 0036           ;   PORTD|=0x80; 
 0036 979A              sbi 0x12,7
 0038                   .dbline 29
 0038           ;   delay(200);   
 0038 08EC              ldi R16,200
 003A 10E0              ldi R17,0
 003C E3DF              rcall _delay
 003E                   .dbline -2
 003E           L6:
 003E                   .dbline 0 ; func end
 003E 0895              ret
 0040                   .dbend
 0040                   .dbfunc e write_1820 _write_1820 fV
 0040           ;              i -> R20
 0040           ;           temp -> R22
                        .even
 0040           _write_1820::
 0040 00D0              rcall push_gset2
 0042 602F              mov R22,R16
 0044                   .dbline -1
 0044                   .dbline 32
 0044           ; } 
 0044           ; void write_1820(unsigned char temp)   //写数据
 0044           ; {   
 0044                   .dbline 33
 0044           ;   unsigned char i=0; 
 0044 4427              clr R20
 0046                   .dbline 34
 0046           ;   for(;i<8;i++) 
 0046 0FC0              rjmp L11
 0048           L8:
 0048                   .dbline 35
 0048           ;   { 
 0048                   .dbline 36
 0048           ;     PORTD&=~0X80; 
 0048 9798              cbi 0x12,7
 004A                   .dbline 37
 004A           ;     if(temp&(1<<i))   //写数据,从低位开始 
 004A 01E0              ldi R16,1
 004C 142F              mov R17,R20
 004E 00D0              rcall lsl8
 0050 262E              mov R2,R22
 0052 2022              and R2,R16
 0054 11F0              breq L12
 0056                   .dbline 38
 0056           ;     PORTD|=0X80; 
 0056 979A              sbi 0x12,7
 0058 01C0              rjmp L13
 005A           L12:
 005A                   .dbline 40
 005A           ;     else 
 005A           ;     PORTD&=~0X80; 
 005A 9798              cbi 0x12,7
 005C           L13:
 005C                   .dbline 41
 005C 02E3              ldi R16,50
 005E 10E0              ldi R17,0
 0060 D1DF              rcall _delay
 0062                   .dbline 42
 0062 979A              sbi 0x12,7
 0064                   .dbline 43
 0064           L9:
 0064                   .dbline 34
 0064 4395              inc R20
 0066           L11:
 0066                   .dbline 34
 0066 4830              cpi R20,8
 0068 78F3              brlo L8
 006A                   .dbline 44
 006A           ;     delay(50);  
 006A           ;     PORTD|=0X80; 
 006A           ;   } 
 006A           ;   PORTD|=0X80; 
 006A 979A              sbi 0x12,7
 006C                   .dbline -2
 006C           L7:
 006C 00D0              rcall pop_gset2
 006E                   .dbline 0 ; func end
 006E 0895              ret
 0070                   .dbsym r i 20 c
 0070                   .dbsym r temp 22 c
 0070                   .dbend
 0070                   .dbfunc e read_1820 _read_1820 fc
 0070           ;              n -> R20
 0070           ;              m -> R22
 0070           ;              i -> R10
                        .even
 0070           _read_1820::
 0070 00D0              rcall push_gset3
 0072                   .dbline -1
 0072                   .dbline 48
 0072           ; } 
 0072           ; 
 0072           ; unsigned char read_1820() //读数据
 0072           ; {   
 0072                   .dbline 49
 0072           ;  unsigned char m,i=0,n=0;     
 0072 AA24              clr R10
 0074                   .dbline 49
 0074 4427              clr R20
 0076                   .dbline 50
 0076           ;   for(;i<8;i++) 
 0076 19C0              rjmp L18
 0078           L15:
 0078                   .dbline 51
 0078           ;     { 
 0078                   .dbline 52
 0078           ;     PORTD&=~0X80;
 0078 9798              cbi 0x12,7
 007A                   .dbline 53
 007A           ;       delay(5); 
 007A 05E0              ldi R16,5
 007C 10E0              ldi R17,0
 007E C2DF              rcall _delay
 0080                   .dbline 54
 0080           ;     PORTD|=0X80; 
 0080 979A              sbi 0x12,7
 0082                   .dbline 55
 0082           ;     DDRD&=~0X80; 
 0082 8F98              cbi 0x11,7
 0084                   .dbline 56

⌨️ 快捷键说明

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