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

📄 display.lis

📁 iccavr的一个实例
💻 LIS
字号:
                        .module Display.c
                        .area lit(rom, con, rel)
 0000           _DisTab::
 0000 3F06              .byte 63,6
 0002 5B4F              .byte 91,'O
 0004 666D              .byte 'f,'m
 0006 7D07              .byte 125,7
 0008 7F6F              .byte 127,'o
 000A 7940              .byte 'y,64
 000C 00                .byte 0
 000D                   .dbfile F:\应用\拷贝应用\icc-avr-lcd\Display.c
 000D                   .dbsym e DisTab _DisTab A[13:13]kc
                        .area text(rom, con, rel)
 0000                   .dbfile F:\应用\拷贝应用\icc-avr-lcd\Display.c
 0000                   .dbfunc e Display _Display fV
 0000           ;           Disi -> R20
 0000           ;         DisTem -> R22
 0000           ;         DisNum -> R10
                        .even
 0000           _Display::
 0000 00D0              rcall push_gset3
 0002 A02E              mov R10,R16
 0004                   .dbline -1
 0004                   .dbline 29
 0004           ; #include<io8515.h> 
 0004           ; //***************************************************
 0004           ; //显示子程序,用于显示一个数字,小数点在最高位。
 0004           ; //传递一个0-9的数字  
 0004           ; //DisPort——显示的端口。DisPortD——端口方向。
 0004           ; //DisTab[10]——显示码(const unsigned char)
 0004           ; //74ls4093三个输入口 str,dada,clock  
 0004           ; //and3=str+data+clock. 
 0004           ; //**************************************************
 0004           ; //P0  data
 0004           ; //P1  clock
 0004           ; //P2   TRO
 0004           ; //STR-PB0   CLOCK-PB1   DATA-PB2
 0004           ; #define  DisPort   PORTB
 0004           ; #define  DisDdr    DDRB
 0004           ; #define  str       0b00000100
 0004           ; #define  data      0b00000001
 0004           ; #define  clock     0b00000010
 0004           ; #define  and3      0b00000111
 0004           ; 
 0004           ; //===============================================================
 0004           ; unsigned char num[4];
 0004           ; //最后三条为"E""-""全灭"
 0004           ; const unsigned char DisTab[13]={ 0x3f,0x6,0x5b,0x4f,0x66,
 0004           ;                                   0x6d,0x7d,0x7,0x7f,0x6f,0x79,0x40,0x00};
 0004           ;                                    
 0004           ; //=============================================================== 
 0004           ; void Display(unsigned char DisNum)
 0004           ; {  unsigned char DisTem;
 0004                   .dbline 30
 0004           ;    unsigned char Disi=8;
 0004 48E0              ldi R20,8
 0006                   .dbline 31
 0006           ;    DisTem= DisNum;
 0006 6A2D              mov R22,R10
 0008                   .dbline 32
 0008           ;    DisTem=DisTem&0b01111111;
 0008 6F77              andi R22,127
 000A                   .dbline 33
 000A           ;    DisTem=DisTab[DisTem];
 000A 80E0              ldi R24,<_DisTab
 000C 90E0              ldi R25,>_DisTab
 000E E62F              mov R30,R22
 0010 FF27              clr R31
 0012 E80F              add R30,R24
 0014 F91F              adc R31,R25
 0016 6491              lpm R22,Z
 0018                   .dbline 34
 0018           ;    DisNum=DisNum&0b10000000;
 0018 8A2D              mov R24,R10
 001A 8078              andi R24,128
 001C A82E              mov R10,R24
 001E                   .dbline 35
 001E           ;    DisNum=DisNum|DisTem;
 001E A62A              or R10,R22
 0020                   .dbline 36
 0020           ;    DisNum=~DisNum;
 0020 A094              com R10
 0022                   .dbline 37
 0022           ;    DisDdr=and3;
 0022 87E0              ldi R24,7
 0024 87BB              out 0x17,R24
 0026                   .dbline 38
 0026           ;    DisPort=DisPort|str;//set str=1    
 0026 C29A              sbi 0x18,2
 0028 10C0              rjmp L3
 002A           L2:
 002A                   .dbline 40
 002A           ;       while(Disi)
 002A           ;          {DisTem=DisNum;
 002A                   .dbline 40
 002A 6A2D              mov R22,R10
 002C                   .dbline 41
 002C           ;           DisPort=DisPort&~clock;//clock=0
 002C C198              cbi 0x18,1
 002E                   .dbline 42
 002E           ;           DisTem=DisTem>>(Disi-1);
 002E 142F              mov R17,R20
 0030 1150              subi R17,1
 0032 062F              mov R16,R22
 0034 00D0              rcall lsr8
 0036 602F              mov R22,R16
 0038                   .dbline 43
 0038           ;           DisTem=DisTem&0b00000001;
 0038 6170              andi R22,1
 003A                   .dbline 44
 003A           ;           if(DisTem==1)
 003A 6130              cpi R22,1
 003C 19F4              brne L5
 003E                   .dbline 45
 003E           ;                     {DisPort=DisPort|data;
 003E                   .dbline 45
 003E C09A              sbi 0x18,0
 0040                   .dbline 46
 0040           ;                          DisPort=DisPort|clock;}
 0040 C19A              sbi 0x18,1
 0042                   .dbline 46
 0042 02C0              rjmp L6
 0044           L5:
 0044                   .dbline 48
 0044           ;               else
 0044           ;                     {DisPort=DisPort&~data;
 0044                   .dbline 48
 0044 C098              cbi 0x18,0
 0046                   .dbline 49
 0046           ;                          DisPort=DisPort|clock;}                
 0046 C19A              sbi 0x18,1
 0048                   .dbline 49
 0048           L6:
 0048                   .dbline 50
 0048 4A95              dec R20
 004A                   .dbline 51
 004A           L3:
 004A                   .dbline 39
 004A 4423              tst R20
 004C 71F7              brne L2
 004E                   .dbline -2
 004E           L1:
 004E 00D0              rcall pop_gset3
 0050                   .dbline 0 ; func end
 0050 0895              ret
 0052                   .dbsym r Disi 20 c
 0052                   .dbsym r DisTem 22 c
 0052                   .dbsym r DisNum 10 c
 0052                   .dbend
                        .area lit(rom, con, rel)
 000D           L8:
 000D 0000              .byte 0,0
 000F 00                .byte 0
                        .area text(rom, con, rel)
 0052                   .dbfile F:\应用\拷贝应用\icc-avr-lcd\Display.c
 0052                   .dbfunc e Cacu_Display _Cacu_Display fV
 0052           ;            num -> y+0
 0052           ;           temp -> R20
                        .even
 0052           _Cacu_Display::
 0052 00D0              rcall push_gset1
 0054 402F              mov R20,R16
 0056 2397              sbiw R28,3
 0058                   .dbline -1
 0058                   .dbline 57
 0058           ;           Disi--;
 0058           ;           }   
 0058           ; }     
 0058           ; //=============================================================
 0058           ; //***************************************************************
 0058           ; //计算显示一个不带小数点的四位数
 0058           ; void Cacu_Display(unsigned char temp)
 0058           ; {  unsigned char num[3]={0,0,0};
 0058                   .dbline 57
 0058 80E0              ldi R24,<L8
 005A 90E0              ldi R25,>L8
 005C FE01              movw R30,R28
 005E 03E0              ldi R16,3
 0060 10E0              ldi R17,0
 0062 FA93              st -y,R31
 0064 EA93              st -y,R30
 0066 9A93              st -y,R25
 0068 8A93              st -y,R24
 006A 00D0              rcall asgncblk
 006C 04C0              rjmp L10
 006E           L9:
 006E                   .dbline 60
 006E                   .dbline 61
 006E 485E              subi R20,232
 0070                   .dbline 62
 0070 8A81              ldd R24,y+2
 0072 8F5F              subi R24,255    ; addi 1
 0074 8A83              std y+2,R24
 0076                   .dbline 63
 0076           L10:
 0076                   .dbline 59
 0076           ;    
 0076           ;     while(temp>=1000)
 0076 483E              cpi R20,232
 0078 D4F7              brge L9
 007A 04C0              rjmp L15
 007C           L14:
 007C                   .dbline 65
 007C                   .dbline 66
 007C 4456              subi R20,100
 007E                   .dbline 67
 007E 8981              ldd R24,y+1
 0080 8F5F              subi R24,255    ; addi 1
 0082 8983              std y+1,R24
 0084                   .dbline 68
 0084           L15:
 0084                   .dbline 64
 0084           ;                        {
 0084           ;                          temp=temp-1000;                                                               
 0084           ;                          num[2]=num[2]+1;
 0084           ;                        }
 0084           ;    while(temp>=100)
 0084 4436              cpi R20,100
 0086 D0F7              brsh L14
 0088 04C0              rjmp L20
 008A           L19:
 008A                   .dbline 70
 008A                   .dbline 71
 008A 4A50              subi R20,10
 008C                   .dbline 72
 008C 8881              ldd R24,y+0
 008E 8F5F              subi R24,255    ; addi 1
 0090 8883              std y+0,R24
 0092                   .dbline 73
 0092           L20:
 0092                   .dbline 69
 0092           ;                    {
 0092           ;                         temp=temp-100;
 0092           ;                         num[1]=num[1]+1;
 0092           ;                    }
 0092           ;    while(temp>=10)
 0092 4A30              cpi R20,10
 0094 D0F7              brsh L19
 0096                   .dbline 74
 0096           ;                        {
 0096           ;                          temp=temp-10;
 0096           ;                      num[0]=num[0]+1;
 0096           ;                        } 
 0096           ;    Display(temp); 
 0096 042F              mov R16,R20
 0098 B3DF              rcall _Display
 009A                   .dbline 75
 009A           ;    Display(num[0]);
 009A 0881              ldd R16,y+0
 009C B1DF              rcall _Display
 009E                   .dbline 76
 009E           ;    Display(num[1]);                     
 009E 0981              ldd R16,y+1
 00A0 AFDF              rcall _Display
 00A2                   .dbline 77
 00A2           ;    Display(num[2]);
 00A2 0A81              ldd R16,y+2
 00A4 ADDF              rcall _Display
 00A6                   .dbline -2
 00A6           L7:
 00A6 2396              adiw R28,3
 00A8 00D0              rcall pop_gset1
 00AA                   .dbline 0 ; func end
 00AA 0895              ret
 00AC                   .dbsym l num 0 A[3:3]c
 00AC                   .dbsym r temp 20 c
 00AC                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile F:\应用\拷贝应用\icc-avr-lcd\Display.c
 0000           _num::
 0000                   .blkb 4
 0004                   .dbsym e num _num A[4:4]c

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -