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

📄 1602test.lis

📁 三星公司的一款1602vfd显示屏
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0412                   .dbline 238
 0412           ;  wait_enable();//等待VFD空闲
 0412 0AD0              xcall _wait_enable
 0414                   .dbline 239
 0414           ;  vfd_control_port|=vfd_RS;//RS=1
 0414 959A              sbi 0x12,5
 0416                   .dbline 240
 0416           ;  vfd_control_port&=~vfd_RW;//RW=0
 0416 9798              cbi 0x12,7
 0418                   .dbline 242
 0418           ; 
 0418           ;  vfd_control_port&=~vfd_EN;//E=0,下面给VFD一个高脉冲
 0418 9698              cbi 0x12,6
 041A                   .dbline 243
 041A           ;  NOP();
 041A 0000              nop
 041C                   .dbline 244
 041C           ;  vfd_control_port|=vfd_EN;//E=1
 041C 969A              sbi 0x12,6
 041E                   .dbline 245
 041E           ;  vfd_data_port=char_data;
 041E 48BB              out 0x18,R20
 0420                   .dbline 246
 0420           ;  vfd_control_port&=~vfd_EN;//重设E=0
 0420 9698              cbi 0x12,6
 0422                   .dbline -2
 0422                   .dbline 247
 0422           ; } 
 0422           L64:
 0422 0E940000          xcall pop_gset1
 0426                   .dbline 0 ; func end
 0426 0895              ret
 0428                   .dbsym r char_data 20 c
 0428                   .dbend
 0428                   .dbfunc e wait_enable _wait_enable fV
                        .even
 0428           _wait_enable::
 0428                   .dbline -1
 0428                   .dbline 251
 0428           ; //正常读写操作之前必须检测VFD控制器状态:E=1 RS=0 RW=1;DB7: 0 VFD控制器空闲,1 VFD控制器忙。
 0428           ; //检测忙信号,等待VFD空闲函数
 0428           ; void wait_enable(void)
 0428           ; {
 0428                   .dbline 253
 0428           ;  //delay_nms(10);
 0428           ;  vfd_busy_ddr&=~busy;//设置busy口为输入
 0428 BF98              cbi 0x17,7
 042A                   .dbline 254
 042A           ;  vfd_control_port&=~vfd_RS;//RS=0
 042A 9598              cbi 0x12,5
 042C                   .dbline 255
 042C           ;  vfd_control_port|=vfd_RW;//RW=1
 042C 979A              sbi 0x12,7
 042E                   .dbline 256
 042E           ;  NOP();
 042E 0000              nop
 0430                   .dbline 257
 0430           ;  vfd_control_port|=vfd_EN;//E=1
 0430 969A              sbi 0x12,6
 0432           L66:
 0432                   .dbline 258
 0432           L67:
 0432                   .dbline 258
 0432           ;  while(vfd_busy_pin&busy);//等待VFD_DB7为0
 0432 B799              sbic 0x16,7
 0434 FECF              rjmp L66
 0436                   .dbline 259
 0436           ;  vfd_control_port&=~vfd_EN;//重设E=0
 0436 9698              cbi 0x12,6
 0438                   .dbline 260
 0438           ;  vfd_busy_ddr|=busy;//设置busy口为输出
 0438 BF9A              sbi 0x17,7
 043A                   .dbline -2
 043A                   .dbline 261
 043A           ; }
 043A           L65:
 043A                   .dbline 0 ; func end
 043A 0895              ret
 043C                   .dbend
 043C                   .dbfunc e display_a_char _display_a_char fV
 043C           ;   position_tem -> R22
 043C           ;      char_data -> R20
 043C           ;       position -> R10
                        .even
 043C           _display_a_char::
 043C 0E940000          xcall push_gset3
 0440 422F              mov R20,R18
 0442 A02E              mov R10,R16
 0444                   .dbline -1
 0444                   .dbline 265
 0444           ; //指定位置显示一个字符:第一行位置0~15,第二行16~31
 0444           ; //显示一个字符函数
 0444           ; void display_a_char(unsigned char position,unsigned char char_data)//参数position指定位置0~31,char_data为要显示的字符
 0444           ; {
 0444                   .dbline 267
 0444           ;  unsigned char position_tem;
 0444           ;  if(position>=0x10)
 0444 8A2D              mov R24,R10
 0446 8031              cpi R24,16
 0448 18F0              brlo L70
 044A                   .dbline 268
 044A           ;  position_tem=position+0xb0;
 044A 682F              mov R22,R24
 044C 6055              subi R22,80    ; addi 176
 044E 02C0              xjmp L71
 0450           L70:
 0450                   .dbline 270
 0450           ;  else
 0450           ;  position_tem=position+0x80;
 0450 6A2D              mov R22,R10
 0452 6058              subi R22,128    ; addi 128
 0454           L71:
 0454                   .dbline 271
 0454           ;  vfd_write_command(position_tem,1);
 0454 21E0              ldi R18,1
 0456 062F              mov R16,R22
 0458 C8DF              xcall _vfd_write_command
 045A                   .dbline 272
 045A           ;  vfd_write_data(char_data);
 045A 042F              mov R16,R20
 045C D7DF              xcall _vfd_write_data
 045E                   .dbline -2
 045E                   .dbline 273
 045E           ; }
 045E           L69:
 045E 0E940000          xcall pop_gset3
 0462                   .dbline 0 ; func end
 0462 0895              ret
 0464                   .dbsym r position_tem 22 c
 0464                   .dbsym r char_data 20 c
 0464                   .dbsym r position 10 c
 0464                   .dbend
 0464                   .dbfunc e d_a_s _d_a_s fV
 0464           ;        col_tem -> R20
 0464           ;              i -> R22
 0464           ;            ptr -> R10,R11
 0464           ;            col -> R20
                        .even
 0464           _d_a_s::
 0464 0E940000          xcall push_gset3
 0468 5901              movw R10,R18
 046A 402F              mov R20,R16
 046C                   .dbline -1
 046C                   .dbline 277
 046C           ; //指定一行显示连续字符串:0显示在第一行,1显示在第二行,注字符串不能长于16个字符
 046C           ; //显示一行连续字符串函数
 046C           ; void d_a_s(unsigned char col,unsigned char *ptr)//参数col指定行,*ptr指字符串数组的首指针
 046C           ; {
 046C                   .dbline 279
 046C           ;  unsigned char col_tem,i;
 046C           ;  col_tem=col<<4;//若col为1(即在VFD第二行显示字符串),先把col左移4位,使显示字符的首位置改到第二行首位,即位置16
 046C 842F              mov R24,R20
 046E 8F70              andi R24,#0x0F
 0470 8295              swap R24
 0472 482F              mov R20,R24
 0474                   .dbline 280
 0474           ;  for(i=0;i<16;i++)
 0474 6627              clr R22
 0476 0AC0              xjmp L76
 0478           L73:
 0478                   .dbline 281
 0478 E62F              mov R30,R22
 047A FF27              clr R31
 047C EA0D              add R30,R10
 047E FB1D              adc R31,R11
 0480 2081              ldd R18,z+0
 0482 242E              mov R2,R20
 0484 4F5F              subi R20,255    ; addi 1
 0486 022D              mov R16,R2
 0488 D9DF              xcall _display_a_char
 048A           L74:
 048A                   .dbline 280
 048A 6395              inc R22
 048C           L76:
 048C                   .dbline 280
 048C 6031              cpi R22,16
 048E A0F3              brlo L73
 0490                   .dbline -2
 0490                   .dbline 282
 0490           ;  display_a_char(col_tem++,*(ptr+i));
 0490           ;  }
 0490           L72:
 0490 0E940000          xcall pop_gset3
 0494                   .dbline 0 ; func end
 0494 0895              ret
 0496                   .dbsym r col_tem 20 c
 0496                   .dbsym r i 22 c
 0496                   .dbsym r ptr 10 pc
 0496                   .dbsym r col 20 c
 0496                   .dbend
 0496                   .dbfunc e display_a_ch_r _display_a_ch_r fV
 0496           ;   position_tem -> R20
 0496           ;      char_data -> R22
 0496           ;       position -> R10
                        .even
 0496           _display_a_ch_r::
 0496 0E940000          xcall push_gset3
 049A 622F              mov R22,R18
 049C A02E              mov R10,R16
 049E                   .dbline -1
 049E                   .dbline 285
 049E           ; //光标定位子程序
 049E           ; void display_a_ch_r(unsigned char position,unsigned char char_data)//参数position指定位置0~31,char_data为要显示的字符
 049E           ; {
 049E                   .dbline 287
 049E           ;  unsigned char position_tem;
 049E           ;  if(position>=0x10)
 049E 8A2D              mov R24,R10
 04A0 8031              cpi R24,16
 04A2 18F0              brlo L78
 04A4                   .dbline 288
 04A4           ;  position_tem=position+0xb0;
 04A4 482F              mov R20,R24
 04A6 4055              subi R20,80    ; addi 176
 04A8 02C0              xjmp L79
 04AA           L78:
 04AA                   .dbline 290
 04AA           ;  else
 04AA           ;  position_tem=position+0x80;
 04AA 4A2D              mov R20,R10
 04AC 4058              subi R20,128    ; addi 128
 04AE           L79:
 04AE                   .dbline 291
 04AE           ;  vfd_write_command(position_tem,1);
 04AE 21E0              ldi R18,1
 04B0 042F              mov R16,R20
 04B2 9BDF              xcall _vfd_write_command
 04B4                   .dbline 292
 04B4           ;  vfd_write_data(char_data);
 04B4 062F              mov R16,R22
 04B6 AADF              xcall _vfd_write_data
 04B8                   .dbline 293
 04B8           ;  vfd_write_command(position_tem,1);
 04B8 21E0              ldi R18,1
 04BA 042F              mov R16,R20
 04BC 96DF              xcall _vfd_write_command
 04BE                   .dbline -2
 04BE                   .dbline 294
 04BE           ; }
 04BE           L77:
 04BE 0E940000          xcall pop_gset3
 04C2                   .dbline 0 ; func end
 04C2 0895              ret
 04C4                   .dbsym r position_tem 20 c
 04C4                   .dbsym r char_data 22 c
 04C4                   .dbsym r position 10 c
 04C4                   .dbend
 04C4                   .dbfunc e delay_1ms _delay_1ms fV
 04C4           ;              i -> R16,R17
                        .even
 04C4           _delay_1ms::
 04C4                   .dbline -1
 04C4                   .dbline 298
 04C4           ; /*---------------------------------------延时函数-------------------------------------*/
 04C4           ; //1ms延时函数
 04C4           ; void delay_1ms(void)
 04C4           ; {
 04C4                   .dbline 300
 04C4 0027              clr R16
 04C6 1127              clr R17
 04C8 02C0              xjmp L84
 04CA           L81:
 04CA                   .dbline 300
 04CA           L82:
 04CA                   .dbline 300
 04CA 0F5F              subi R16,255  ; offset = 1
 04CC 1F4F              sbci R17,255
 04CE           L84:
 04CE                   .dbline 300
 04CE           ;  unsigned int i;
 04CE           ;  for(i=0;i<600;i++);
 04CE 0835              cpi R16,88
 04D0 E2E0              ldi R30,2
 04D2 1E07              cpc R17,R30
 04D4 D0F3              brlo L81
 04D6                   .dbline -2
 04D6                   .dbline 301
 04D6           ; }
 04D6           L80:
 04D6                   .dbline 0 ; func end
 04D6 0895              ret
 04D8                   .dbsym r i 16 i
 04D8                   .dbend
 04D8                   .dbfunc e delay_nms _delay_nms fV
 04D8           ;              i -> R20,R21
 04D8           ;              n -> R22,R23
                        .even
 04D8           _delay_nms::
 04D8 0E940000          xcall push_gset2
 04DC B801              movw R22,R16
 04DE                   .dbline -1
 04DE                   .dbline 304
 04DE           ; //n ms延时函数
 04DE           ; void delay_nms(unsigned int n)
 04DE           ; {
 04DE                   .dbline 306
 04DE 4427              clr R20
 04E0 5527              clr R21
 04E2 03C0              xjmp L89
 04E4           L86:
 04E4                   .dbline 306
 04E4 EFDF              xcall _delay_1ms
 04E6           L87:
 04E6                   .dbline 306
 04E6 4F5F              subi R20,255  ; offset = 1
 04E8 5F4F              sbci R21,255
 04EA           L89:
 04EA                   .dbline 306
 04EA           ;  unsigned int i;
 04EA           ;  for(i=0;i<n;i++)delay_1ms();
 04EA 4617              cp R20,R22
 04EC 5707              cpc R21,R23
 04EE D0F3              brlo L86
 04F0                   .dbline -2
 04F0                   .dbline 307
 04F0           ; }
 04F0           L85:
 04F0 0E940000          xcall pop_gset2
 04F4                   .dbline 0 ; func end
 04F4 0895              ret
 04F6                   .dbsym r i 20 i
 04F6                   .dbsym r n 22 i
 04F6                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\医疗电子采样板\1602test\1602test.c
 0000           _channel::
 0000                   .blkb 1
 0001                   .dbsym e channel _channel c
 0001           _point::
 0001                   .blkb 2
 0003                   .dbsym e point _point pc
 0003           _meas_coun::
 0003                   .blkb 1
 0004                   .dbsym e meas_coun _meas_coun c
 0004           _rece_coun::
 0004                   .blkb 1
 0005                   .dbsym e rece_coun _rece_coun c
 0005           _hex_meas::
 0005                   .blkb 5
 000A                   .dbsym e hex_meas _hex_meas A[5:5]c
 000A           _adc_meas::
 000A                   .blkb 20
 001E                   .dbsym e adc_meas _adc_meas A[20:20]c
 001E           _sin::
 001E                   .blkb 2
 0020                   .dbsym e sin _sin i
 0020           _adc_old::
 0020                   .blkb 2
 0022                   .dbsym e adc_old _adc_old i
 0022           _adc_rel::
 0022                   .blkb 2
 0024                   .dbsym e adc_rel _adc_rel i
 0024           _i::
 0024                   .blkb 1
 0025                   .dbsym e i _i c
 0025           _adc_mux::
 0025                   .blkb 1
 0026                   .dbsym e adc_mux _adc_mux c
 0026           _dypass::
 0026                   .blkb 135
 00AD                   .dbsym e dypass _dypass A[135:9]X

⌨️ 快捷键说明

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