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

📄 display.lis

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

⌨️ 快捷键说明

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