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

📄 display_led.lis

📁 AVR开发板例子源代码
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0060                   .dbsym r mid 20 c
 0060                   .dbsym r i 22 c
 0060                   .dbsym r hang_no 18 c
 0060                   .dbsym r lie_qishi 16 i
 0060                   .dbend
 0060                   .dbfunc e switch_hang _switch_hang fV
 0060           ;         byTemp -> R20
 0060           ;           hang -> R16
                        .even
 0060           _switch_hang::
 0060 00D0              rcall push_gset1
 0062                   .dbline -1
 0062                   .dbline 149
 0062           ;          PORTD |= (1<<PD6);             //时钟置高,产生下降沿。
 0062           ;          NOP();
 0062           ;          PORTD &= ~(1<<PD6);            //时钟置低
 0062           ;        }
 0062           ; }
 0062           ; /************************************************
 0062           ; 函 数 名:    switch_hang ()
 0062           ; 功    能:    选行操作,控制138的输入
 0062           ; 输入参数:     /
 0062           ; 输出参数:    /
 0062           ; 描    述:    /
 0062           ; ***********************************************/
 0062           ; void switch_hang (uchar hang)   //选行操作
 0062           ; {
 0062                   .dbline 151
 0062           ;    uchar byTemp; 
 0062           ;    byTemp = PORTD & 0xF0;
 0062 42B3              in R20,0x12
 0064 407F              andi R20,240
 0066                   .dbline 152
 0066           ;    if (hang < 8)
 0066 0830              cpi R16,8
 0068 28F4              brsh L19
 006A                   .dbline 153
 006A           ;    {
 006A                   .dbline 154
 006A           ;         PORTD = byTemp + 0x08 + hang;  //D=1
 006A 842F              mov R24,R20
 006C 885F              subi R24,248    ; addi 8
 006E 800F              add R24,R16
 0070 82BB              out 0x12,R24
 0072                   .dbline 155
 0072           ;    }
 0072 04C0              rjmp L20
 0074           L19:
 0074                   .dbline 157
 0074                   .dbline 158
 0074 842F              mov R24,R20
 0076 800F              add R24,R16
 0078 8850              subi R24,8
 007A 82BB              out 0x12,R24
 007C                   .dbline 159
 007C           L20:
 007C                   .dbline -2
 007C           L18:
 007C 00D0              rcall pop_gset1
 007E                   .dbline 0 ; func end
 007E 0895              ret
 0080                   .dbsym r byTemp 20 c
 0080                   .dbsym r hang 16 c
 0080                   .dbend
 0080                   .dbfunc e Display _Display fV
 0080           ;              i -> R20
 0080           ;         mov_no -> R22,R23
                        .even
 0080           _Display::
 0080 00D0              rcall push_gset2
 0082 B801              movw R22,R16
 0084                   .dbline -1
 0084                   .dbline 169
 0084           ;    else
 0084           ;    {
 0084           ;       PORTD = byTemp + hang - 0x08;  //D=0
 0084           ;    }
 0084           ; }
 0084           ; /************************************************
 0084           ; 函 数 名:    Display()
 0084           ; 功    能:    动态扫描LED显示函数
 0084           ; 输入参数:     /
 0084           ; 输出参数:    /
 0084           ; 描    述:    共16行,每行连续送4个字节的数据,两个字节为第2个汉字,后两个为第1个汉字。
 0084           ; ***********************************************/
 0084           ; void Display (uint mov_no)               //动态显示函数
 0084           ; {
 0084                   .dbline 171
 0084           ;     uchar i;
 0084           ;       for(i=0;i<8;i++)    //上面8行
 0084 4427              clr R20
 0086 15C0              rjmp L25
 0088           L22:
 0088                   .dbline 172
 0088                   .dbline 173
 0088 979A              sbi 0x12,7
 008A                   .dbline 174
 008A 042F              mov R16,R20
 008C E9DF              rcall _switch_hang
 008E                   .dbline 176
 008E 242F              mov R18,R20
 0090 3327              clr R19
 0092 00E8              ldi R16,128
 0094 10E0              ldi R17,0
 0096 00D0              rcall asr16
 0098 202F              mov R18,R16
 009A 8B01              movw R16,R22
 009C 060F              add R16,R22
 009E 171F              adc R17,R23
 00A0 C2DF              rcall _InputByte
 00A2                   .dbline 178
 00A2 959A              sbi 0x12,5
 00A4                   .dbline 179
 00A4 0000              nop
 00A6                   .dbline 180
 00A6 9598              cbi 0x12,5
 00A8                   .dbline 182
 00A8 9798              cbi 0x12,7
 00AA                   .dbline 183
 00AA 02E0              ldi R16,2
 00AC 10E0              ldi R17,0
 00AE A8DF              rcall _DelaymS
 00B0                   .dbline 184
 00B0           L23:
 00B0                   .dbline 171
 00B0 4395              inc R20
 00B2           L25:
 00B2                   .dbline 171
 00B2 4830              cpi R20,8
 00B4 48F3              brlo L22
 00B6                   .dbline 185
 00B6           ;       {
 00B6           ;          PORTD |= (1<<PD7);      //OE=1,关闭输出,消隐
 00B6           ;          switch_hang (i);        //选行操作
 00B6           ;          
 00B6           ;          InputByte ((mov_no+mov_no),(0b10000000>>i));  //起始列和需要送显示的行
 00B6           ;          
 00B6           ;          PORTD |= (1<<PD5);             //RCLK=1,并行输出锁存器
 00B6           ;          NOP();
 00B6           ;          PORTD &= ~(1<<PD5);            //RCLK=0
 00B6           ;          //DelaymS(1);                 //消隐的时间,调节亮度用
 00B6           ;          PORTD &= ~(1<<PD7);      //OE=0,数据输出
 00B6           ;          DelaymS(2);              //行显示的时间
 00B6           ;       }
 00B6           ;       for(i=0;i<8;i++)    //下面8行
 00B6 4427              clr R20
 00B8 18C0              rjmp L29
 00BA           L26:
 00BA                   .dbline 186
 00BA                   .dbline 187
 00BA 979A              sbi 0x12,7
 00BC                   .dbline 188
 00BC 042F              mov R16,R20
 00BE 095F              subi R16,249    ; addi 7
 00C0 CFDF              rcall _switch_hang
 00C2                   .dbline 190
 00C2 242F              mov R18,R20
 00C4 3327              clr R19
 00C6 00E8              ldi R16,128
 00C8 10E0              ldi R17,0
 00CA 00D0              rcall asr16
 00CC 202F              mov R18,R16
 00CE 8B01              movw R16,R22
 00D0 060F              add R16,R22
 00D2 171F              adc R17,R23
 00D4 0F5F              subi R16,255  ; offset = 1
 00D6 1F4F              sbci R17,255
 00D8 A6DF              rcall _InputByte
 00DA                   .dbline 192
 00DA 959A              sbi 0x12,5
 00DC                   .dbline 193
 00DC 0000              nop
 00DE                   .dbline 194
 00DE 9598              cbi 0x12,5
 00E0                   .dbline 196
 00E0 9798              cbi 0x12,7
 00E2                   .dbline 197
 00E2 02E0              ldi R16,2
 00E4 10E0              ldi R17,0
 00E6 8CDF              rcall _DelaymS
 00E8                   .dbline 198
 00E8           L27:
 00E8                   .dbline 185
 00E8 4395              inc R20
 00EA           L29:
 00EA                   .dbline 185
 00EA 4830              cpi R20,8
 00EC 30F3              brlo L26
 00EE                   .dbline -2
 00EE           L21:
 00EE 00D0              rcall pop_gset2
 00F0                   .dbline 0 ; func end
 00F0 0895              ret
 00F2                   .dbsym r i 20 c
 00F2                   .dbsym r mov_no 22 i
 00F2                   .dbend
 00F2                   .dbfunc e main _main fV
 00F2           ;              i -> R20,R21
 00F2           ;              j -> R22
                        .even
 00F2           _main::
 00F2                   .dbline -1
 00F2                   .dbline 202
 00F2           ;       {
 00F2           ;          PORTD |= (1<<PD7);      //OE=1,关闭输出,消隐
 00F2           ;          switch_hang (i+7);        //选行操作
 00F2           ;          
 00F2           ;          InputByte ((mov_no+mov_no+1),(0b10000000>>i));  //起始列和需要送显示的行
 00F2           ;          
 00F2           ;          PORTD |= (1<<PD5);             //RCLK=1,并行输出锁存器
 00F2           ;          NOP();
 00F2           ;          PORTD &= ~(1<<PD5);            //RCLK=0
 00F2           ;          //DelaymS(1);                 //消隐的时间,调节亮度用
 00F2           ;          PORTD &= ~(1<<PD7);      //OE=0,数据输出
 00F2           ;          DelaymS(2);              //行显示的时间
 00F2           ;       }
 00F2           ; }
 00F2           ; //*****************主程序**********************************
 00F2           ; void main (void)
 00F2           ; {
 00F2                   .dbline 205
 00F2           ;      uint i;
 00F2           ;        uchar j;
 00F2           ;        DelaymS(100);   
 00F2 04E6              ldi R16,100
 00F4 10E0              ldi R17,0
 00F6 84DF              rcall _DelaymS
 00F8                   .dbline 206
 00F8           ;      Init_Port();      //初始化
 00F8 91DF              rcall _Init_Port
 00FA 10C0              rjmp L32
 00FC           L31:
 00FC                   .dbline 210
 00FC           ;        
 00FC           ;        while (1)
 00FC           ;        
 00FC           ;        for (i=0;i<272;i++)
 00FC 4427              clr R20
 00FE 5527              clr R21
 0100 09C0              rjmp L37
 0102           L34:
 0102                   .dbline 211
 0102           ;        {
 0102                   .dbline 212
 0102           ;                 for (j=0;j<7;j++)         //移动的速度
 0102 6627              clr R22
 0104 03C0              rjmp L41
 0106           L38:
 0106                   .dbline 213
 0106 8A01              movw R16,R20
 0108 BBDF              rcall _Display
 010A           L39:
 010A                   .dbline 212
 010A 6395              inc R22
 010C           L41:
 010C                   .dbline 212
 010C 6730              cpi R22,7
 010E D8F3              brlo L38
 0110                   .dbline 214
 0110           L35:
 0110                   .dbline 210
 0110 4F5F              subi R20,255  ; offset = 1
 0112 5F4F              sbci R21,255
 0114           L37:
 0114                   .dbline 210
 0114 4031              cpi R20,16
 0116 E1E0              ldi R30,1
 0118 5E07              cpc R21,R30
 011A 98F3              brlo L34
 011C           L32:
 011C                   .dbline 208
 011C EFCF              rjmp L31
 011E           X1:
 011E                   .dbline -2
 011E           L30:
 011E                   .dbline 0 ; func end
 011E 0895              ret
 0120                   .dbsym r i 20 i
 0120                   .dbsym r j 22 c
 0120                   .dbend

⌨️ 快捷键说明

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