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

📄 ports-16sm.lis

📁 大量ATMEGA16实例, 都可以运行,包括驱动LCD1602, 上位机显示等多功能
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 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 + -