📄 1602test.lis
字号:
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 + -