📄 ports-16sm.lis
字号:
0064 5E07 cpc R21,R30
0066 6CF0 brlt L14
0068 X3:
0068 .dbline 65
0068 ; {
0068 .dbline 66
0068 ; BCD3=data/1000;
0068 28EE ldi R18,1000
006A 33E0 ldi R19,3
006C 8A01 movw R16,R20
006E 0E940000 xcall div16s
0072 00930200 sts _BCD3,R16
0076 .dbline 67
0076 ; data=data%1000;
0076 28EE ldi R18,1000
0078 33E0 ldi R19,3
007A 8A01 movw R16,R20
007C 0E940000 xcall mod16s
0080 A801 movw R20,R16
0082 .dbline 68
0082 ; }
0082 L14:
0082 .dbline 69
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 70
008A ; {
008A .dbline 71
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 72
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 73
00A4 ; }
00A4 L16:
00A4 .dbline 75
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 76
00AC ; {
00AC .dbline 77
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 78
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 79
00C6 ; }
00C6 L18:
00C6 .dbline 80
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 84
00D0 ; }
00D0 ;
00D0 ; void dispseg(void)
00D0 ; {
00D0 .dbline 85
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 86
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 87
00EC ; delay(20);
00EC 04E1 ldi R16,20
00EE 10E0 ldi R17,0
00F0 8FDF xcall _delay
00F2 .dbline 88
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 89
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 90
010E ; delay(20);
010E 04E1 ldi R16,20
0110 10E0 ldi R17,0
0112 7EDF xcall _delay
0114 .dbline 91
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 92
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 93
0130 ; delay(20);
0130 04E1 ldi R16,20
0132 10E0 ldi R17,0
0134 6DDF xcall _delay
0136 .dbline 94
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 95
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 96
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 main _main fV
015A ; outd -> R10
015A ; outc -> R10
015A ; outb -> R10
015A ; outa -> R10
015A ; dswin -> R20,R21
.even
015A _main::
015A .dbline -1
015A .dbline 101
015A ; }
015A ;
015A ; //*****************************************************************
015A ; void main(void)
015A ; {
015A .dbline 102
015A ; unsigned char outa=0x00, outb=0x00, outc=0x00, outd=0x00;
015A AA24 clr R10
015C .dbline 102
015C .dbline 102
015C .dbline 102
015C .dbline 104
015C ; int dswin;
015C ; port_init();
015C 51DF xcall _port_init
015E 0EC0 xjmp L23
0160 L22:
0160 .dbline 106
0160 ; while(1)
0160 ; {
0160 .dbline 107
0160 ; WDR(); //Watchdog reset
0160 A895 wdr
0162 .dbline 108
0162 ; dswin=PINC&0xff;
0162 43B3 in R20,0x13
0164 5527 clr R21
0166 5070 andi R21,0
0168 .dbline 109
0168 ; dswin=1234;
0168 42ED ldi R20,1234
016A 54E0 ldi R21,4
016C .dbline 110
016C ; BinToBCD(dswin);
016C 8A01 movw R16,R20
016E 66DF xcall _BinToBCD
0170 .dbline 111
0170 ; dispseg();
0170 AFDF xcall _dispseg
0172 .dbline 112
0172 ; PORTD=PINC;
0172 23B2 in R2,0x13
0174 22BA out 0x12,R2
0176 .dbline 113
0176 ; delay(5);
0176 05E0 ldi R16,5
0178 10E0 ldi R17,0
017A 4ADF xcall _delay
017C .dbline 114
017C ; }
017C L23:
017C .dbline 105
017C F1CF xjmp L22
017E X6:
017E .dbline -2
017E L21:
017E .dbline 0 ; func end
017E 0895 ret
0180 .dbsym r outd 10 c
0180 .dbsym r outc 10 c
0180 .dbsym r outb 10 c
0180 .dbsym r outa 10 c
0180 .dbsym r dswin 20 I
0180 .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\+samples-16small\PORTS-16sm\PORTS-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 + -