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

📄 segdisp-16sm.lis

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