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

📄 1602test.lis

📁 三星公司的一款1602vfd显示屏
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 029C 18F4              brsh L40
 029E                   .dbline 171
 029E           ;       *g+=0x30;
 029E 805D              subi R24,208    ; addi 48
 02A0 8083              std z+0,R24
 02A2 04C0              xjmp L41
 02A4           L40:
 02A4                   .dbline 172
 02A4 FA01              movw R30,R20
 02A6 8081              ldd R24,z+0
 02A8 895C              subi R24,201    ; addi 55
 02AA 8083              std z+0,R24
 02AC           L41:
 02AC                   .dbline -2
 02AC                   .dbline 173
 02AC           ;       else *g+=0x37;
 02AC           ; }
 02AC           L33:
 02AC 0E940000          xcall pop_gset2
 02B0                   .dbline 0 ; func end
 02B0 0895              ret
 02B2                   .dbsym r g 20 pc
 02B2                   .dbsym r dt_meas 22 i
 02B2                   .dbend
 02B2                   .dbfunc e filter _filter fV
 02B2           ;              q -> <dead>
 02B2           ;          wendu -> R20
 02B2           ;         phillp -> R10,R11
 02B2           ;        ad_temp -> y+0
 02B2           ;              y -> R12
 02B2           ;            maj -> R22
                        .even
 02B2           _filter::
 02B2 0E940000          xcall push_gset4
 02B6 602F              mov R22,R16
 02B8 A497              sbiw R28,36
 02BA                   .dbline -1
 02BA                   .dbline 176
 02BA           ; 
 02BA           ; void filter(unsigned char maj)
 02BA           ;  {       unsigned char *q,y,wendu;
 02BA                   .dbline 177
 02BA           ;          unsigned int ad_temp[18],phillp=0;
 02BA AA24              clr R10
 02BC BB24              clr R11
 02BE                   .dbline 178
 02BE           ;          if(maj!=8)
 02BE 6830              cpi R22,8
 02C0 09F4              brne X1
 02C2 3CC0              xjmp L43
 02C4           X1:
 02C4                   .dbline 179
 02C4           ;          {
 02C4                   .dbline 180
 02C4           ;                       ADMUX=0x40+maj;
 02C4 862F              mov R24,R22
 02C6 805C              subi R24,192    ; addi 64
 02C8 87B9              out 0x7,R24
 02CA                   .dbline 181
 02CA           ;                       ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1) ;//64分频        
 02CA 86EC              ldi R24,198
 02CC 86B9              out 0x6,R24
 02CE                   .dbline 182
 02CE           ;                       for(y=0;y<=16;y++)
 02CE CC24              clr R12
 02D0 0FC0              xjmp L48
 02D2           L45:
 02D2                   .dbline 183
 02D2           ;                     { ADCSRA |= 0x40;                      // Start a new A/D conversion
 02D2                   .dbline 183
 02D2 369A              sbi 0x6,6
 02D4           L49:
 02D4                   .dbline 184
 02D4           L50:
 02D4                   .dbline 184
 02D4 349B              sbis 0x6,4
 02D6 FECF              rjmp L49
 02D8                   .dbline 185
 02D8 82E0              ldi R24,2
 02DA 8C9D              mul R24,R12
 02DC F001              movw R30,R0
 02DE CE01              movw R24,R28
 02E0 E80F              add R30,R24
 02E2 F91F              adc R31,R25
 02E4 84B1              in R24,0x4
 02E6 95B1              in R25,0x5
 02E8 9370              andi R25,3
 02EA 9183              std z+1,R25
 02EC 8083              std z+0,R24
 02EE                   .dbline 186
 02EE           L46:
 02EE                   .dbline 182
 02EE C394              inc R12
 02F0           L48:
 02F0                   .dbline 182
 02F0 80E1              ldi R24,16
 02F2 8C15              cp R24,R12
 02F4 70F7              brsh L45
 02F6                   .dbline 187
 02F6           ;                               while (!(ADCSRA & (1<<ADIF)));       // wait until ADC is ready  
 02F6           ;                               ad_temp[y]=ADC&0X3FF;
 02F6           ;                         }
 02F6           ;                       for(y=6;y<=13;y++)
 02F6 86E0              ldi R24,6
 02F8 C82E              mov R12,R24
 02FA 0BC0              xjmp L55
 02FC           L52:
 02FC                   .dbline 188
 02FC 82E0              ldi R24,2
 02FE 8C9D              mul R24,R12
 0300 F001              movw R30,R0
 0302 CE01              movw R24,R28
 0304 E80F              add R30,R24
 0306 F91F              adc R31,R25
 0308 2080              ldd R2,z+0
 030A 3180              ldd R3,z+1
 030C A20C              add R10,R2
 030E B31C              adc R11,R3
 0310           L53:
 0310                   .dbline 187
 0310 C394              inc R12
 0312           L55:
 0312                   .dbline 187
 0312 8DE0              ldi R24,13
 0314 8C15              cp R24,R12
 0316 90F7              brsh L52
 0318                   .dbline 189
 0318           ;                               phillp+=ad_temp[y];
 0318           ;                               adc_rel=phillp/32;
 0318 25E0              ldi R18,5
 031A 30E0              ldi R19,0
 031C 8501              movw R16,R10
 031E 0E940000          xcall lsr16
 0322 10932300          sts _adc_rel+1,R17
 0326 00932200          sts _adc_rel,R16
 032A                   .dbline 190
 032A           ;                               y=adc_rel;                              
 032A C02E              mov R12,R16
 032C                   .dbline 191
 032C           ;                               wendu=t_per[y];
 032C 80E0              ldi R24,<_t_per
 032E 90E0              ldi R25,>_t_per
 0330 EC2D              mov R30,R12
 0332 FF27              clr R31
 0334 E80F              add R30,R24
 0336 F91F              adc R31,R25
 0338 4491              lpm R20,Z
 033A                   .dbline 193
 033A           ;                               //y=dypass[maj].ad_samp;
 033A           ;               }
 033A 15C0              xjmp L44
 033C           L43:
 033C                   .dbline 194
 033C           ;                else {
 033C                   .dbline 195
 033C           ;                          channel=PORTD;
 033C 22B2              in R2,0x12
 033E 20920000          sts _channel,R2
 0342                   .dbline 196
 0342           ;                          adc_rel=(unsigned int)channel;
 0342 3324              clr R3
 0344 30922300          sts _adc_rel+1,R3
 0348 20922200          sts _adc_rel,R2
 034C                   .dbline 197
 034C           ;                          dypass[maj].ad_samp=adc_rel;
 034C 8FE0              ldi R24,15
 034E 869F              mul R24,R22
 0350 F001              movw R30,R0
 0352 80E0              ldi R24,<_dypass
 0354 90E0              ldi R25,>_dypass
 0356 E80F              add R30,R24
 0358 F91F              adc R31,R25
 035A 20902200          lds R2,_adc_rel
 035E 30902300          lds R3,_adc_rel+1
 0362 3182              std z+1,R3
 0364 2082              std z+0,R2
 0366                   .dbline 198
 0366           ;                         }
 0366           L44:
 0366                   .dbline 201
 0366           ;          //   dypass[maj].class_data[0]=" ";
 0366           ;               //dypass[maj].class_data[1]=" ";
 0366           ;               dypass[maj].class_data[2]=0x30+wendu/16;
 0366 8FE0              ldi R24,15
 0368 869F              mul R24,R22
 036A F001              movw R30,R0
 036C 80E0              ldi R24,<_dypass+8+2
 036E 90E0              ldi R25,>_dypass+8+2
 0370 E80F              add R30,R24
 0372 F91F              adc R31,R25
 0374 842F              mov R24,R20
 0376 8295              swap R24
 0378 8F70              andi R24,#0x0F
 037A 805D              subi R24,208    ; addi 48
 037C 8083              std z+0,R24
 037E                   .dbline 202
 037E           ;               dypass[maj].class_data[3]=0x30+wendu%16;
 037E 8FE0              ldi R24,15
 0380 869F              mul R24,R22
 0382 F001              movw R30,R0
 0384 80E0              ldi R24,<_dypass+8+3
 0386 90E0              ldi R25,>_dypass+8+3
 0388 E80F              add R30,R24
 038A F91F              adc R31,R25
 038C 10E1              ldi R17,16
 038E 042F              mov R16,R20
 0390 0E940000          xcall mod8u
 0394 802F              mov R24,R16
 0396 805D              subi R24,208    ; addi 48
 0398 8083              std z+0,R24
 039A                   .dbline -2
 039A                   .dbline 204
 039A           ;                         
 039A           ;  }
 039A           L42:
 039A A496              adiw R28,36
 039C 0E940000          xcall pop_gset4
 03A0                   .dbline 0 ; func end
 03A0 0895              ret
 03A2                   .dbsym l q 1 pc
 03A2                   .dbsym r wendu 20 c
 03A2                   .dbsym r phillp 10 i
 03A2                   .dbsym l ad_temp 0 A[36:18]i
 03A2                   .dbsym r y 12 c
 03A2                   .dbsym r maj 22 c
 03A2                   .dbend
 03A2                   .dbfunc e vfd_init _vfd_init fV
                        .even
 03A2           _vfd_init::
 03A2                   .dbline -1
 03A2                   .dbline 208
 03A2           ; /*------------------------------------液晶驱动函数-------------------------------------*/
 03A2           ; //液晶初始化
 03A2           ; void vfd_init(void)
 03A2           ; {
 03A2                   .dbline 209
 03A2           ;  delay_nms(15);
 03A2 0FE0              ldi R16,15
 03A4 10E0              ldi R17,0
 03A6 98D0              xcall _delay_nms
 03A8                   .dbline 210
 03A8           ;  vfd_write_command(0x38,0);//显示模式设置三次(此时不管vfd空闲与否)
 03A8 2227              clr R18
 03AA 08E3              ldi R16,56
 03AC 1ED0              xcall _vfd_write_command
 03AE                   .dbline 211
 03AE           ;  delay_nms(5);
 03AE 05E0              ldi R16,5
 03B0 10E0              ldi R17,0
 03B2 92D0              xcall _delay_nms
 03B4                   .dbline 212
 03B4           ;  vfd_write_command(0x38,0);
 03B4 2227              clr R18
 03B6 08E3              ldi R16,56
 03B8 18D0              xcall _vfd_write_command
 03BA                   .dbline 213
 03BA           ;  delay_nms(5);
 03BA 05E0              ldi R16,5
 03BC 10E0              ldi R17,0
 03BE 8CD0              xcall _delay_nms
 03C0                   .dbline 214
 03C0           ;  vfd_write_command(0x38,0);
 03C0 2227              clr R18
 03C2 08E3              ldi R16,56
 03C4 12D0              xcall _vfd_write_command
 03C6                   .dbline 215
 03C6           ;  delay_nms(5);
 03C6 05E0              ldi R16,5
 03C8 10E0              ldi R17,0
 03CA 86D0              xcall _delay_nms
 03CC                   .dbline 217
 03CC           ;  
 03CC           ;  vfd_write_command(0x38,1);//显示模式设置(从此之后均需vfd空闲)
 03CC 21E0              ldi R18,1
 03CE 08E3              ldi R16,56
 03D0 0CD0              xcall _vfd_write_command
 03D2                   .dbline 218
 03D2           ;  vfd_write_command(0x08,1);//显示关闭
 03D2 21E0              ldi R18,1
 03D4 08E0              ldi R16,8
 03D6 09D0              xcall _vfd_write_command
 03D8                   .dbline 219
 03D8           ;  vfd_write_command(0x01,1);//显示清屏
 03D8 21E0              ldi R18,1
 03DA 01E0              ldi R16,1
 03DC 06D0              xcall _vfd_write_command
 03DE                   .dbline 220
 03DE           ;  vfd_write_command(0x06,1);//显示光标移动设置
 03DE 21E0              ldi R18,1
 03E0 06E0              ldi R16,6
 03E2 03D0              xcall _vfd_write_command
 03E4                   .dbline 221
 03E4           ;  vfd_write_command(0x0c,1);//显示开及光标设置
 03E4 21E0              ldi R18,1
 03E6 0CE0              ldi R16,12
 03E8                   .dbline -2
 03E8                   .dbline 222
 03E8           ; }
 03E8           L60:
 03E8                   .dbline 0 ; func end
 03E8 00C0              xjmp _vfd_write_command
 03EA                   .dbend
 03EA                   .dbfunc e vfd_write_command _vfd_write_command fV
 03EA           ;        wait_en -> R22
 03EA           ;        command -> R20
                        .even
 03EA           _vfd_write_command::
 03EA 0E940000          xcall push_gset2
 03EE 622F              mov R22,R18
 03F0 402F              mov R20,R16
 03F2                   .dbline -1
 03F2                   .dbline 225
 03F2           ; //写指令函数: E=高脉冲 RS=0 RW=0
 03F2           ; void vfd_write_command(unsigned char command,unsigned char wait_en)//command为指令,wait_en指定是否要检测VFD忙信号
 03F2           ; {
 03F2                   .dbline 226
 03F2           ;  if(wait_en)wait_enable();//若wait_en为1,则要检测VFD忙信号,等待其空闲
 03F2 6623              tst R22
 03F4 09F0              breq L62
 03F6                   .dbline 226
 03F6 18D0              xcall _wait_enable
 03F8           L62:
 03F8                   .dbline 227
 03F8           ;  vfd_control_port&=~vfd_RS;//RS=0
 03F8 9598              cbi 0x12,5
 03FA                   .dbline 228
 03FA           ;  vfd_control_port&=~vfd_RW;//RW=0
 03FA 9798              cbi 0x12,7
 03FC                   .dbline 229
 03FC           ;  vfd_control_port&=~vfd_EN;//E=0,下面给VFD一个高脉冲
 03FC 9698              cbi 0x12,6
 03FE                   .dbline 230
 03FE           ;  NOP();
 03FE 0000              nop
 0400                   .dbline 231
 0400           ;  vfd_control_port|=vfd_EN;//E=1
 0400 969A              sbi 0x12,6
 0402                   .dbline 232
 0402           ;  vfd_data_port=command;
 0402 48BB              out 0x18,R20
 0404                   .dbline 233
 0404           ;  vfd_control_port&=~vfd_EN;//重设E=0
 0404 9698              cbi 0x12,6
 0406                   .dbline -2
 0406                   .dbline 234
 0406           ; }
 0406           L61:
 0406 0E940000          xcall pop_gset2
 040A                   .dbline 0 ; func end
 040A 0895              ret
 040C                   .dbsym r wait_en 22 c
 040C                   .dbsym r command 20 c
 040C                   .dbend
 040C                   .dbfunc e vfd_write_data _vfd_write_data fV
 040C           ;      char_data -> R20
                        .even
 040C           _vfd_write_data::
 040C 0E940000          xcall push_gset1
 0410 402F              mov R20,R16
 0412                   .dbline -1
 0412                   .dbline 237
 0412           ; //写数据函数: E =高脉冲 RS=1 RW=0
 0412           ; void vfd_write_data(unsigned char char_data)
 0412           ; {

⌨️ 快捷键说明

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