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

📄 1.lis

📁 测试18b20的程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 00CE 402F              mov R20,R16
 00D0                   .dbline -1
 00D0                   .dbline 108
 00D0           ;   
 00D0           ; }
 00D0           ; /*----------------------------------------------------------------------------*/
 00D0           ; void LCD_write_data(unsigned char data) //写数据
 00D0           ; {
 00D0                   .dbline 109
 00D0           ;   delay_nus(16);
 00D0 00E1              ldi R16,16
 00D2 10E0              ldi R17,0
 00D4 97DF              xcall _delay_nus
 00D6                   .dbline 110
 00D6           ;   LCD_RS_PORT|=LCD_RS;       //RS=1
 00D6 D89A              sbi 0x1b,0
 00D8                   .dbline 111
 00D8           ;   LCD_DATA_PORT&=0X0f;       //清高四位
 00D8 8BB3              in R24,0x1b
 00DA 8F70              andi R24,15
 00DC 8BBB              out 0x1b,R24
 00DE                   .dbline 112
 00DE           ;   LCD_DATA_PORT|=data&0xf0;  //写高四位
 00DE 842F              mov R24,R20
 00E0 807F              andi R24,240
 00E2 2BB2              in R2,0x1b
 00E4 282A              or R2,R24
 00E6 2BBA              out 0x1b,R2
 00E8                   .dbline 113
 00E8           ;   LCD_en_write();
 00E8 CADF              xcall _LCD_en_write
 00EA                   .dbline 114
 00EA           ;   data=data<<4;               //低四位移到高四位
 00EA 842F              mov R24,R20
 00EC 8F70              andi R24,#0x0F
 00EE 8295              swap R24
 00F0 482F              mov R20,R24
 00F2                   .dbline 115
 00F2           ;   LCD_DATA_PORT&=0X0f;        //清高四位
 00F2 8BB3              in R24,0x1b
 00F4 8F70              andi R24,15
 00F6 8BBB              out 0x1b,R24
 00F8                   .dbline 116
 00F8           ;   LCD_DATA_PORT|=data&0xf0;   //写低四位
 00F8 842F              mov R24,R20
 00FA 807F              andi R24,240
 00FC 2BB2              in R2,0x1b
 00FE 282A              or R2,R24
 0100 2BBA              out 0x1b,R2
 0102                   .dbline 117
 0102           ;   LCD_en_write();
 0102 BDDF              xcall _LCD_en_write
 0104                   .dbline -2
 0104           L20:
 0104 0E940000          xcall pop_gset1
 0108                   .dbline 0 ; func end
 0108 0895              ret
 010A                   .dbsym r data 20 c
 010A                   .dbend
 010A                   .dbfunc e LCD_set_xy _LCD_set_xy fV
 010A           ;        address -> R20
 010A           ;              y -> R20
 010A           ;              x -> R22
                        .even
 010A           _LCD_set_xy::
 010A 0E940000          xcall push_gset2
 010E 422F              mov R20,R18
 0110 602F              mov R22,R16
 0112                   .dbline -1
 0112                   .dbline 121
 0112           ; }
 0112           ; /*----------------------------------------------------------------------------*/
 0112           ; void LCD_set_xy( unsigned char x, unsigned char y )  //写地址函数
 0112           ; {
 0112                   .dbline 123
 0112           ;     unsigned char address;
 0112           ;     if (y == 0) address = 0x80 + x;
 0112 4423              tst R20
 0114 19F4              brne L22
 0116                   .dbline 123
 0116 462F              mov R20,R22
 0118 4058              subi R20,128    ; addi 128
 011A 02C0              xjmp L23
 011C           L22:
 011C                   .dbline 124
 011C           ;     else   address = 0xc0 + x;
 011C 462F              mov R20,R22
 011E 4054              subi R20,64    ; addi 192
 0120           L23:
 0120                   .dbline 125
 0120           ;     LCD_write_command( address);
 0120 042F              mov R16,R20
 0122 B3DF              xcall _LCD_write_command
 0124                   .dbline -2
 0124           L21:
 0124 0E940000          xcall pop_gset2
 0128                   .dbline 0 ; func end
 0128 0895              ret
 012A                   .dbsym r address 20 c
 012A                   .dbsym r y 20 c
 012A                   .dbsym r x 22 c
 012A                   .dbend
 012A                   .dbfunc e LCD_write_string _LCD_write_string fV
 012A           ;              s -> R20,R21
 012A           ;              Y -> R10
 012A           ;              X -> R22
                        .even
 012A           _LCD_write_string::
 012A 0E940000          xcall push_gset3
 012E A22E              mov R10,R18
 0130 602F              mov R22,R16
 0132 4E81              ldd R20,y+6
 0134 5F81              ldd R21,y+7
 0136                   .dbline -1
 0136                   .dbline 129
 0136           ; }
 0136           ; /*----------------------------------------------------------------------------*/
 0136           ; void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s) //列x=0~15,行y=0,1
 0136           ; {
 0136                   .dbline 130
 0136           ;     LCD_set_xy( X, Y ); //写地址    
 0136 2A2D              mov R18,R10
 0138 062F              mov R16,R22
 013A E7DF              xcall _LCD_set_xy
 013C 05C0              xjmp L26
 013E           L25:
 013E                   .dbline 132
 013E                   .dbline 133
 013E FA01              movw R30,R20
 0140 0081              ldd R16,z+0
 0142 C3DF              xcall _LCD_write_data
 0144                   .dbline 134
 0144 4F5F              subi R20,255  ; offset = 1
 0146 5F4F              sbci R21,255
 0148                   .dbline 135
 0148           L26:
 0148                   .dbline 131
 0148           ;     while (*s)  // 写显示字符
 0148 FA01              movw R30,R20
 014A 2080              ldd R2,z+0
 014C 2220              tst R2
 014E B9F7              brne L25
 0150                   .dbline -2
 0150           L24:
 0150 0E940000          xcall pop_gset3
 0154                   .dbline 0 ; func end
 0154 0895              ret
 0156                   .dbsym r s 20 pc
 0156                   .dbsym r Y 10 c
 0156                   .dbsym r X 22 c
 0156                   .dbend
 0156                   .dbfunc e LCD_write_char _LCD_write_char fV
 0156           ;           data -> y+4
 0156           ;              Y -> R22
 0156           ;              X -> R20
                        .even
 0156           _LCD_write_char::
 0156 0E940000          xcall push_gset2
 015A 622F              mov R22,R18
 015C 402F              mov R20,R16
 015E                   .dbline -1
 015E                   .dbline 141
 015E           ;     {
 015E           ;       LCD_write_data( *s );
 015E           ;       s ++;
 015E           ;     }
 015E           ;       
 015E           ; }
 015E           ; 
 015E           ; /*----------------------------------------------------------------------------*/
 015E           ; void LCD_write_char(unsigned char X,unsigned char Y,unsigned char data) //列x=0~15,行y=0,1
 015E           ; {
 015E                   .dbline 142
 015E           ;   LCD_set_xy( X, Y ); //写地址
 015E 262F              mov R18,R22
 0160 042F              mov R16,R20
 0162 D3DF              xcall _LCD_set_xy
 0164                   .dbline 143
 0164           ;   LCD_write_data( data);
 0164 0C81              ldd R16,y+4
 0166 B1DF              xcall _LCD_write_data
 0168                   .dbline -2
 0168           L28:
 0168 0E940000          xcall pop_gset2
 016C                   .dbline 0 ; func end
 016C 0895              ret
 016E                   .dbsym l data 4 c
 016E                   .dbsym r Y 22 c
 016E                   .dbsym r X 20 c
 016E                   .dbend
 016E                   .dbfunc e delay _delay fV
 016E           ;              x -> R16,R17
                        .even
 016E           _delay::
 016E                   .dbline -1
 016E                   .dbline 155
 016E           ;   
 016E           ; }
 016E           ; 
 016E           ; 
 016E           ; 
 016E           ; 
 016E           ; 
 016E           ; 
 016E           ; 
 016E           ; /////////////////////////////////////////
 016E           ; void delay(uint x)  //1.5us左右 
 016E           ; { 
 016E 02C0              xjmp L31
 0170           L30:
 0170                   .dbline 157
 0170                   .dbline 158
 0170 0150              subi R16,1
 0172 1040              sbci R17,0
 0174                   .dbline 159
 0174           L31:
 0174                   .dbline 156
 0174           ;      while(x) 
 0174 0030              cpi R16,0
 0176 0107              cpc R16,R17
 0178 D9F7              brne L30
 017A           X0:
 017A                   .dbline -2
 017A           L29:
 017A                   .dbline 0 ; func end
 017A 0895              ret
 017C                   .dbsym r x 16 i
 017C                   .dbend
 017C                   .dbfunc e init_1820 _init_1820 fV
                        .even
 017C           _init_1820::
 017C                   .dbline -1
 017C                   .dbline 164
 017C           ;     { 
 017C           ;        x--; 
 017C           ;     } 
 017C           ; } 
 017C           ;  
 017C           ; //////////////////////////////////////////
 017C           ; void init_1820() 
 017C           ; { 
 017C                   .dbline 165
 017C           ;     PORTD|=(1<<6);    
 017C 969A              sbi 0x12,6
 017E                   .dbline 166
 017E           ;     PORTD&=~(1<<6); 
 017E 9698              cbi 0x12,6
 0180                   .dbline 167
 0180           ;     delay(3000);    //480us以上 
 0180 08EB              ldi R16,3000
 0182 1BE0              ldi R17,11
 0184 F4DF              xcall _delay
 0186                   .dbline 168
 0186           ;     PORTD|=(1<<6); 
 0186 969A              sbi 0x12,6
 0188                   .dbline 169
 0188           ;     DDRD&=~(1<<6); 
 0188 8E98              cbi 0x11,6
 018A                   .dbline 170
 018A           ;     delay(40);     //15~60us 
 018A 08E2              ldi R16,40
 018C 10E0              ldi R17,0
 018E EFDF              xcall _delay
 0190           L34:
 0190                   .dbline 172
 0190                   .dbline 176
 0190           L35:
 0190                   .dbline 171
 0190           ;     while(PIND&(1<<6)) 
 0190 8699              sbic 0x10,6
 0192 FECF              rjmp L34
 0194                   .dbline 177
 0194           ;     { 
 0194           ;       // disp_led(3,0); 
 0194           ;       // for(;;) 
 0194           ;        //{} 
 0194           ;    } 
 0194           ;     DDRD|=(1<<6); 
 0194 8E9A              sbi 0x11,6
 0196                   .dbline 178
 0196           ;     PORTD|=(1<<6); 
 0196 969A              sbi 0x12,6
 0198                   .dbline 179
 0198           ;     delay(150);   //60~240us 
 0198 06E9              ldi R16,150
 019A 10E0              ldi R17,0
 019C E8DF              xcall _delay
 019E                   .dbline -2
 019E           L33:
 019E                   .dbline 0 ; func end
 019E 0895              ret
 01A0                   .dbend
 01A0                   .dbfunc e write_1820 _write_1820 fI
 01A0           ;              m -> R20
 01A0           ;              x -> R22
                        .even
 01A0           _write_1820::
 01A0 0E940000          xcall push_gset2
 01A4 602F              mov R22,R16
 01A6                   .dbline -1
 01A6                   .dbline 183
 01A6           ; }
 01A6           ; ///////////////////////////////////////////////////////
 01A6           ; write_1820(uchar x) 
 01A6           ; {    
 01A6                   .dbline 185
 01A6           ;      uchar m; 
 01A6           ;     for(m=0;m<8;m++) 
 01A6 4427              clr R20
 01A8 10C0              xjmp L41
 01AA           L38:
 01AA                   .dbline 186
 01AA           ;     { 
 01AA                   .dbline 187
 01AA           ;          PORTD&=~(1<<6); 
 01AA 9698              cbi 0x12,6
 01AC                   .dbline 188
 01AC           ;        if(x&(1<<m))    //写数据,从低位开始 
 01AC 01E0              ldi R16,1
 01AE 142F              mov R17,R20
 01B0 0E940000          xcall lsl8
 01B4 262E              mov R2,R22
 01B6 2022              and R2,R16
 01B8 11F0              breq L42
 01BA                   .dbline 189
 01BA           ;        PORTD|=(1<<6); 
 01BA 969A              sbi 0x12,6
 01BC 01C0              xjmp L43
 01BE           L42:
 01BE                   .dbline 191
 01BE           ;        else 
 01BE           ;        PORTD&=~(1<<6); 
 01BE 9698              cbi 0x12,6
 01C0           L43:
 01C0                   .dbline 192
 01C0 08E2              ldi R16,40
 01C2 10E0              ldi R17,0
 01C4 D4DF              xcall _delay
 01C6                   .dbline 193
 01C6 969A              sbi 0x12,6
 01C8                   .dbline 194
 01C8           L39:
 01C8                   .dbline 185
 01C8 4395              inc R20
 01CA           L41:
 01CA                   .dbline 185
 01CA 4830              cpi R20,8
 01CC 70F3              brlo L38
 01CE                   .dbline 195
 01CE           ;        delay(40);   //15~60us 
 01CE           ;        PORTD|=(1<<6); 
 01CE           ;     } 
 01CE           ;      PORTD|=(1<<6); 
 01CE 969A              sbi 0x12,6
 01D0                   .dbline -2
 01D0           L37:
 01D0 0E940000          xcall pop_gset2
 01D4                   .dbline 0 ; func end
 01D4 0895              ret
 01D6                   .dbsym r m 20 c
 01D6                   .dbsym r x 22 c
 01D6                   .dbend
 01D6                   .dbfunc e read_1820 _read_1820 fc

⌨️ 快捷键说明

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