📄 segdisp-16sm.lis
字号:
0078 33E0 ldi R19,3
007A 8A01 movw R16,R20
007C 0E940000 xcall mod16s
0080 A801 movw R20,R16
0082 .dbline 67
0082 ; }
0082 L14:
0082 .dbline 68
0082 ; if(data>=100)
0082 4436 cpi R20,100
0084 E0E0 ldi R30,0
0086 5E07 cpc R21,R30
0088 6CF0 brlt L16
008A X4:
008A .dbline 69
008A ; {
008A .dbline 70
008A ; BCD2=data/100;
008A 24E6 ldi R18,100
008C 30E0 ldi R19,0
008E 8A01 movw R16,R20
0090 0E940000 xcall div16s
0094 00930300 sts _BCD2,R16
0098 .dbline 71
0098 ; data=data%100;
0098 24E6 ldi R18,100
009A 30E0 ldi R19,0
009C 8A01 movw R16,R20
009E 0E940000 xcall mod16s
00A2 A801 movw R20,R16
00A4 .dbline 72
00A4 ; }
00A4 L16:
00A4 .dbline 74
00A4 ;
00A4 ; if(data>=10)
00A4 4A30 cpi R20,10
00A6 E0E0 ldi R30,0
00A8 5E07 cpc R21,R30
00AA 6CF0 brlt L18
00AC X5:
00AC .dbline 75
00AC ; {
00AC .dbline 76
00AC ; BCD1=data/10;
00AC 2AE0 ldi R18,10
00AE 30E0 ldi R19,0
00B0 8A01 movw R16,R20
00B2 0E940000 xcall div16s
00B6 00930400 sts _BCD1,R16
00BA .dbline 77
00BA ; data=data%10;
00BA 2AE0 ldi R18,10
00BC 30E0 ldi R19,0
00BE 8A01 movw R16,R20
00C0 0E940000 xcall mod16s
00C4 A801 movw R20,R16
00C6 .dbline 78
00C6 ; }
00C6 L18:
00C6 .dbline 79
00C6 ; BCD0=data;
00C6 40930500 sts _BCD0,R20
00CA .dbline -2
00CA L11:
00CA .dbline 0 ; func end
00CA 5991 ld R21,y+
00CC 4991 ld R20,y+
00CE 0895 ret
00D0 .dbsym r data 20 I
00D0 .dbend
00D0 .dbfunc e dispseg _dispseg fV
.even
00D0 _dispseg::
00D0 .dbline -1
00D0 .dbline 83
00D0 ; }
00D0 ;
00D0 ; void dispseg(void)
00D0 ; {
00D0 .dbline 84
00D0 ; PORTB=~segconv[BCD0];
00D0 80E0 ldi R24,<_segconv
00D2 90E0 ldi R25,>_segconv
00D4 E0910500 lds R30,_BCD0
00D8 FF27 clr R31
00DA E80F add R30,R24
00DC F91F adc R31,R25
00DE 2080 ldd R2,z+0
00E0 2094 com R2
00E2 28BA out 0x18,R2
00E4 .dbline 85
00E4 ; PORTA=dig0;
00E4 E0E0 ldi R30,<_dig0
00E6 F0E0 ldi R31,>_dig0
00E8 2690 elpm R2,Z
00EA 2BBA out 0x1b,R2
00EC .dbline 86
00EC ; delay(20);
00EC 04E1 ldi R16,20
00EE 10E0 ldi R17,0
00F0 8FDF xcall _delay
00F2 .dbline 87
00F2 ; PORTB=~segconv[BCD1];
00F2 80E0 ldi R24,<_segconv
00F4 90E0 ldi R25,>_segconv
00F6 E0910400 lds R30,_BCD1
00FA FF27 clr R31
00FC E80F add R30,R24
00FE F91F adc R31,R25
0100 2080 ldd R2,z+0
0102 2094 com R2
0104 28BA out 0x18,R2
0106 .dbline 88
0106 ; PORTA=dig1;
0106 E0E0 ldi R30,<_dig1
0108 F0E0 ldi R31,>_dig1
010A 2690 elpm R2,Z
010C 2BBA out 0x1b,R2
010E .dbline 89
010E ; delay(20);
010E 04E1 ldi R16,20
0110 10E0 ldi R17,0
0112 7EDF xcall _delay
0114 .dbline 90
0114 ; PORTB=~segconv[BCD2];
0114 80E0 ldi R24,<_segconv
0116 90E0 ldi R25,>_segconv
0118 E0910300 lds R30,_BCD2
011C FF27 clr R31
011E E80F add R30,R24
0120 F91F adc R31,R25
0122 2080 ldd R2,z+0
0124 2094 com R2
0126 28BA out 0x18,R2
0128 .dbline 91
0128 ; PORTA=dig2;
0128 E0E0 ldi R30,<_dig2
012A F0E0 ldi R31,>_dig2
012C 2690 elpm R2,Z
012E 2BBA out 0x1b,R2
0130 .dbline 92
0130 ; delay(20);
0130 04E1 ldi R16,20
0132 10E0 ldi R17,0
0134 6DDF xcall _delay
0136 .dbline 93
0136 ; PORTB=~segconv[BCD3];
0136 80E0 ldi R24,<_segconv
0138 90E0 ldi R25,>_segconv
013A E0910200 lds R30,_BCD3
013E FF27 clr R31
0140 E80F add R30,R24
0142 F91F adc R31,R25
0144 2080 ldd R2,z+0
0146 2094 com R2
0148 28BA out 0x18,R2
014A .dbline 94
014A ; PORTA=dig3;
014A E0E0 ldi R30,<_dig3
014C F0E0 ldi R31,>_dig3
014E 2690 elpm R2,Z
0150 2BBA out 0x1b,R2
0152 .dbline 95
0152 ; delay(20);
0152 04E1 ldi R16,20
0154 10E0 ldi R17,0
0156 5CDF xcall _delay
0158 .dbline -2
0158 L20:
0158 .dbline 0 ; func end
0158 0895 ret
015A .dbend
015A .dbfunc e dot_on _dot_on fV
.even
015A _dot_on::
015A .dbline -1
015A .dbline 99
015A ; }
015A ;
015A ; void dot_on(void)
015A ; {
015A .dbline 100
015A ; PORTB=~0x80;
015A 8FE7 ldi R24,-129
015C 9FEF ldi R25,-1
015E 88BB out 0x18,R24
0160 .dbline 101
0160 ; PORTA=dot;
0160 E0E0 ldi R30,<_dot
0162 F0E0 ldi R31,>_dot
0164 2690 elpm R2,Z
0166 2BBA out 0x1b,R2
0168 .dbline 102
0168 ; delay(20);
0168 04E1 ldi R16,20
016A 10E0 ldi R17,0
016C 51DF xcall _delay
016E .dbline -2
016E L21:
016E .dbline 0 ; func end
016E 0895 ret
0170 .dbend
0170 .dbfunc e main _main fV
0170 ; outd -> R10
0170 ; outc -> R10
0170 ; outb -> R10
0170 ; outa -> R10
0170 ; dswin -> R10
.even
0170 _main::
0170 .dbline -1
0170 .dbline 108
0170 ; }
0170 ;
0170 ;
0170 ; //*****************************************************************
0170 ; void main(void)
0170 ; {
0170 .dbline 109
0170 ; unsigned char outa=0x00, outb=0x00, outc=0x00, outd=0x00;
0170 AA24 clr R10
0172 .dbline 109
0172 .dbline 109
0172 .dbline 109
0172 .dbline 111
0172 ; unsigned char dswin;
0172 ; port_init();
0172 46DF xcall _port_init
0174 0CC0 xjmp L24
0176 L23:
0176 .dbline 113
0176 ; while(1)
0176 ; {
0176 .dbline 114
0176 ; WDR(); //Watchdog reset
0176 A895 wdr
0178 .dbline 115
0178 ; dswin=PINC;
0178 A3B2 in R10,0x13
017A .dbline 116
017A ; BinToBCD(dswin);
017A 0A2D mov R16,R10
017C 1127 clr R17
017E 5EDF xcall _BinToBCD
0180 .dbline 117
0180 ; dispseg();
0180 A7DF xcall _dispseg
0182 .dbline 118
0182 ; dot_on();
0182 EBDF xcall _dot_on
0184 .dbline 119
0184 ; PORTD=0x55;
0184 85E5 ldi R24,85
0186 82BB out 0x12,R24
0188 .dbline 120
0188 ; delay(5);
0188 05E0 ldi R16,5
018A 10E0 ldi R17,0
018C 41DF xcall _delay
018E .dbline 121
018E ; }
018E L24:
018E .dbline 112
018E F3CF xjmp L23
0190 X6:
0190 .dbline -2
0190 L22:
0190 .dbline 0 ; func end
0190 0895 ret
0192 .dbsym r outd 10 c
0192 .dbsym r outc 10 c
0192 .dbsym r outb 10 c
0192 .dbsym r outa 10 c
0192 .dbsym r dswin 10 c
0192 .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\+samples-16small\SegDisp-16sm\SegDisp-16sm.c
0000 _count::
0000 .blkb 2
0002 .dbsym e count _count I
0002 _BCD3::
0002 .blkb 1
0003 .dbsym e BCD3 _BCD3 c
0003 _BCD2::
0003 .blkb 1
0004 .dbsym e BCD2 _BCD2 c
0004 _BCD1::
0004 .blkb 1
0005 .dbsym e BCD1 _BCD1 c
0005 _BCD0::
0005 .blkb 1
0006 .dbsym e BCD0 _BCD0 c
0006 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -