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

📄 18b20_test.lis

📁 mega16_32实验板的上程序mega16+LCD12232-9+ds18B20
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 00BE           ;     }
 00BE           L33:
 00BE                   .dbline 56
 00BE A394              inc R10
 00C0           L35:
 00C0                   .dbline 56
 00C0 8A2D              mov R24,R10
 00C2 8430              cpi R24,4
 00C4 D0F3              brlo L32
 00C6           X7:
 00C6                   .dbline 61
 00C6           ;   }
 00C6           L23:
 00C6                   .dbline 43
 00C6 6395              inc R22
 00C8           L25:
 00C8                   .dbline 43
 00C8 6230              cpi R22,2
 00CA 20F3              brlo L22
 00CC           X8:
 00CC                   .dbline 62
 00CC           ;   lcd_port|=BIT(lcd_cs);
 00CC DC9A              sbi 0x1b,4
 00CE                   .dbline -2
 00CE           L15:
 00CE                   .dbline 0 ; func end
 00CE 0C940000          xjmp pop_xgsetF03C
 00D2                   .dbsym r j 22 c
 00D2                   .dbsym r a 20 c
 00D2                   .dbsym r i 10 c
 00D2                   .dbsym r content 10 c
 00D2                   .dbsym r dat_comm 12 c
 00D2                   .dbend
 00D2                   .dbfunc e LCD_init _LCD_init fV
                        .even
 00D2           _LCD_init::
 00D2                   .dbline -1
 00D2                   .dbline 67
 00D2           ; }
 00D2           ; 
 00D2           ; //LCD初始化
 00D2           ; void LCD_init(void)
 00D2           ; {
 00D2                   .dbline 69
 00D2           ;   /**********LCD12232串口口线设置************/
 00D2           ;   lcd_port|=BIT(lcd_cs)|BIT(lcd_sclk)|BIT(lcd_std);
 00D2 8BB3              in R24,0x1b
 00D4 8C61              ori R24,28
 00D6 8BBB              out 0x1b,R24
 00D8                   .dbline 70
 00D8           ;   lcd_ddr|=BIT(lcd_cs)|BIT(lcd_sclk)|BIT(lcd_std);
 00D8 8AB3              in R24,0x1a
 00DA 8C61              ori R24,28
 00DC 8ABB              out 0x1a,R24
 00DE                   .dbline 72
 00DE           ;   
 00DE           ;   lcd_write(command,0x30);  //30---基本指令动作
 00DE 20E3              ldi R18,48
 00E0 0027              clr R16
 00E2 B8DF              xcall _lcd_write
 00E4                   .dbline 74
 00E4           ;   //lcd_write(command,0x04);  //点设定:显示字符/光标从左到右移位,DDRAM地址加1 
 00E4           ;   lcd_write(command,0x01);  //清屏,地址指针指向00H
 00E4 21E0              ldi R18,1
 00E6 0027              clr R16
 00E8 B5DF              xcall _lcd_write
 00EA                   .dbline 75
 00EA           ;   lcd_write(command,0x06);  //光标的移动方向
 00EA 26E0              ldi R18,6
 00EC 0027              clr R16
 00EE B2DF              xcall _lcd_write
 00F0                   .dbline 76
 00F0           ;   lcd_write(command,0x0c);  //开显示,关游标
 00F0 2CE0              ldi R18,12
 00F2 0027              clr R16
 00F4 AFDF              xcall _lcd_write
 00F6                   .dbline 77
 00F6           ;   delay_1ms(); //液晶初始化后延时
 00F6 95DF              xcall _delay_1ms
 00F8                   .dbline -2
 00F8           L36:
 00F8                   .dbline 0 ; func end
 00F8 0895              ret
 00FA                   .dbend
 00FA                   .dbfunc e lcd_display _lcd_display fV
 00FA           ;              i -> R20
 00FA           ;            chn -> R10,R11
                        .even
 00FA           _lcd_display::
 00FA 0E940000          xcall push_xgset300C
 00FE 5801              movw R10,R16
 0100                   .dbline -1
 0100                   .dbline 82
 0100           ; }
 0100           ; 
 0100           ; //LCD全屏显示字符
 0100           ; void lcd_display(unsigned char chn[30])
 0100           ; {
 0100                   .dbline 84
 0100           ;   unsigned char i;
 0100           ;   lcd_write(command,0x30);
 0100 20E3              ldi R18,48
 0102 0027              clr R16
 0104 A7DF              xcall _lcd_write
 0106                   .dbline 85
 0106           ;   lcd_write(command,x1);
 0106 20E8              ldi R18,128
 0108 0027              clr R16
 010A A4DF              xcall _lcd_write
 010C                   .dbline 86
 010C           ;   for(i=0;i<15;i++)
 010C 4427              clr R20
 010E 08C0              xjmp L41
 0110           L38:
 0110                   .dbline 87
 0110           ;   lcd_write(data,chn[i]);
 0110 E42F              mov R30,R20
 0112 FF27              clr R31
 0114 EA0D              add R30,R10
 0116 FB1D              adc R31,R11
 0118 2081              ldd R18,z+0
 011A 01E0              ldi R16,1
 011C 9BDF              xcall _lcd_write
 011E           L39:
 011E                   .dbline 86
 011E 4395              inc R20
 0120           L41:
 0120                   .dbline 86
 0120 4F30              cpi R20,15
 0122 B0F3              brlo L38
 0124           X9:
 0124                   .dbline 88
 0124           ;   lcd_write(command,x2);
 0124 20E9              ldi R18,144
 0126 0027              clr R16
 0128 95DF              xcall _lcd_write
 012A                   .dbline 89
 012A           ;   for(i=0;i<15;i++)
 012A 4427              clr R20
 012C 08C0              xjmp L45
 012E           L42:
 012E                   .dbline 90
 012E           ;   lcd_write(data,chn[15+i]);
 012E E42F              mov R30,R20
 0130 FF27              clr R31
 0132 EA0D              add R30,R10
 0134 FB1D              adc R31,R11
 0136 2785              ldd R18,z+15
 0138 01E0              ldi R16,1
 013A 8CDF              xcall _lcd_write
 013C           L43:
 013C                   .dbline 89
 013C 4395              inc R20
 013E           L45:
 013E                   .dbline 89
 013E 4F30              cpi R20,15
 0140 B0F3              brlo L42
 0142           X10:
 0142                   .dbline -2
 0142           L37:
 0142                   .dbline 0 ; func end
 0142 0C940000          xjmp pop_xgset300C
 0146                   .dbsym r i 20 c
 0146                   .dbsym r chn 10 pc
 0146                   .dbend
 0146                   .dbfunc e line1_display _line1_display fV
 0146           ;              i -> R20
 0146           ;            chn -> R10,R11
                        .even
 0146           _line1_display::
 0146 0E940000          xcall push_xgset300C
 014A 5801              movw R10,R16
 014C                   .dbline -1
 014C                   .dbline 95
 014C           ; }
 014C           ; 
 014C           ; //LCD第一行显示字符
 014C           ; void line1_display(unsigned char chn[15])
 014C           ; {
 014C                   .dbline 97
 014C           ;   unsigned char i;
 014C           ;   lcd_write(command,0x30);
 014C 20E3              ldi R18,48
 014E 0027              clr R16
 0150 81DF              xcall _lcd_write
 0152                   .dbline 98
 0152           ;   lcd_write(command,x1);
 0152 20E8              ldi R18,128
 0154 0027              clr R16
 0156 7EDF              xcall _lcd_write
 0158                   .dbline 99
 0158           ;   for (i=0;i<15;i++)
 0158 4427              clr R20
 015A 08C0              xjmp L50
 015C           L47:
 015C                   .dbline 100
 015C           ;    lcd_write(data,chn[i]);
 015C E42F              mov R30,R20
 015E FF27              clr R31
 0160 EA0D              add R30,R10
 0162 FB1D              adc R31,R11
 0164 2081              ldd R18,z+0
 0166 01E0              ldi R16,1
 0168 75DF              xcall _lcd_write
 016A           L48:
 016A                   .dbline 99
 016A 4395              inc R20
 016C           L50:
 016C                   .dbline 99
 016C 4F30              cpi R20,15
 016E B0F3              brlo L47
 0170           X11:
 0170                   .dbline -2
 0170           L46:
 0170                   .dbline 0 ; func end
 0170 0C940000          xjmp pop_xgset300C
 0174                   .dbsym r i 20 c
 0174                   .dbsym r chn 10 pc
 0174                   .dbend
 0174                   .dbfunc e line2_display _line2_display fV
 0174           ;              i -> R20
 0174           ;            chn -> R10,R11
                        .even
 0174           _line2_display::
 0174 0E940000          xcall push_xgset300C
 0178 5801              movw R10,R16
 017A                   .dbline -1
 017A                   .dbline 105
 017A           ; }
 017A           ; 
 017A           ; //LCD第二行显示字符
 017A           ; void line2_display(unsigned char chn[15])
 017A           ; {
 017A                   .dbline 107
 017A           ;   unsigned char i;
 017A           ;   lcd_write(command,0x30);
 017A 20E3              ldi R18,48
 017C 0027              clr R16
 017E 6ADF              xcall _lcd_write
 0180                   .dbline 108
 0180           ;   lcd_write(command,x2);
 0180 20E9              ldi R18,144
 0182 0027              clr R16
 0184 67DF              xcall _lcd_write
 0186                   .dbline 109
 0186           ;   for (i=0;i<15;i++)
 0186 4427              clr R20
 0188 08C0              xjmp L55
 018A           L52:
 018A                   .dbline 110
 018A           ;   lcd_write(data,chn[i]);
 018A E42F              mov R30,R20
 018C FF27              clr R31
 018E EA0D              add R30,R10
 0190 FB1D              adc R31,R11
 0192 2081              ldd R18,z+0
 0194 01E0              ldi R16,1
 0196 5EDF              xcall _lcd_write
 0198           L53:
 0198                   .dbline 109
 0198 4395              inc R20
 019A           L55:
 019A                   .dbline 109
 019A 4F30              cpi R20,15
 019C B0F3              brlo L52
 019E           X12:
 019E                   .dbline -2
 019E           L51:
 019E                   .dbline 0 ; func end
 019E 0C940000          xjmp pop_xgset300C
 01A2                   .dbsym r i 20 c
 01A2                   .dbsym r chn 10 pc
 01A2                   .dbend
 01A2                   .dbfunc e int_disp _int_disp fV
 01A2           ;              i -> R22
 01A2           ;          dispi -> y+0
 01A2           ;              j -> R20
 01A2           ;            adc -> R12,R13
 01A2           ;             wz -> R10
                        .even
 01A2           _int_disp::
 01A2 0E940000          xcall push_xgsetF03C
 01A6 6901              movw R12,R18
 01A8 A02E              mov R10,R16
 01AA 2397              sbiw R28,3
 01AC                   .dbline -1
 01AC                   .dbline 115
 01AC           ; }
 01AC           ; 
 01AC           ; //////////////////////////////////////////////////////最前面的零不显示
 01AC           ; void int_disp(unsigned char wz,unsigned int adc)
 01AC           ; {
 01AC                   .dbline 116
 01AC           ;  unsigned char dispi[3],j=3;
 01AC 43E0              ldi R20,3
 01AE                   .dbline 117
 01AE           ;  unsigned char i=1;
 01AE 61E0              ldi R22,1
 01B0                   .dbline 118
 01B0           ;  adc=adc%1000;
 01B0 28EE              ldi R18,1000
 01B2 33E0              ldi R19,3
 01B4 8601              movw R16,R12
 01B6 0E940000          xcall mod16u
 01BA 6801              movw R12,R16
 01BC                   .dbline 119
 01BC           ;  dispi[2]=adc/100; adc=adc%100;
 01BC 24E6              ldi R18,100
 01BE 30E0              ldi R19,0
 01C0 0E940000          xcall div16u
 01C4 0A83              std y+2,R16
 01C6                   .dbline 119
 01C6 24E6              ldi R18,100
 01C8 30E0              ldi R19,0
 01CA 8601              movw R16,R12
 01CC 0E940000          xcall mod16u
 01D0 6801              movw R12,R16
 01D2                   .dbline 120
 01D2           ;  dispi[1]=adc/10; adc=adc%10;
 01D2 2AE0              ldi R18,10

⌨️ 快捷键说明

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