io.lis

来自「这是关于AVR单片机学习的初步开发」· LIS 代码 · 共 393 行 · 第 1/2 页

LIS
393
字号
 0080                   .dbline 44
 0080           ;  init_devices();
 0080 CBDF              rcall _init_devices
 0082 51C0              rjmp L19
 0084           L18:
 0084                   .dbline 47
 0084           ;  
 0084           ;  while (1)
 0084           ;  {            if((PINB &0x10)==0)                                      //数码管任务;
 0084                   .dbline 47
 0084 B499              sbic 0x16,4
 0086 0CC0              rjmp L21
 0088                   .dbline 48
 0088           ;               {       PORTC &= ~0x20;                                          //PC5清零
 0088                   .dbline 48
 0088 AD98              cbi 0x15,5
 008A                   .dbline 49
 008A           ;                       data = (PINB & 0x0F)>>1;                         //取PB1~PB3的数据;
 008A 46B3              in R20,0x16
 008C 4F70              andi R20,15
 008E 4695              lsr R20
 0090                   .dbline 50
 0090           ;                       PORTD = led[data];                                       //查表输出数码管值;                   
 0090 CE01              movw R24,R28
 0092 E42F              mov R30,R20
 0094 FF27              clr R31
 0096 E80F              add R30,R24
 0098 F91F              adc R31,R25
 009A 2080              ldd R2,z+0
 009C 22BA              out 0x12,R2
 009E                   .dbline 51
 009E           ;               }
 009E 43C0              rjmp L22
 00A0           L21:
 00A0                   .dbline 53
 00A0           ;               else                                                                     //跑马灯任务;
 00A0           ;               {       if((PINB & 0x08) == 0 )                          //只亮一个灯
 00A0                   .dbline 53
 00A0 B399              sbic 0x16,3
 00A2 21C0              rjmp L23
 00A4                   .dbline 54
 00A4           ;                       {       data = (PINB & 0x06)>>1;                 //取PB1、PB2的数据;
 00A4                   .dbline 54
 00A4 46B3              in R20,0x16
 00A6 4670              andi R20,6
 00A8 4695              lsr R20
 00AA                   .dbline 55
 00AA           ;                               for(i=0;i<8;i++)                                 //低位到高位
 00AA 6627              clr R22
 00AC 09C0              rjmp L28
 00AE           L25:
 00AE                   .dbline 56
 00AE                   .dbline 56
 00AE 01E0              ldi R16,1
 00B0 162F              mov R17,R22
 00B2 00D0              rcall lsl8
 00B4 202E              mov R2,R16
 00B6 2094              com R2
 00B8 22BA              out 0x12,R2
 00BA                   .dbline 57
 00BA 042F              mov R16,R20
 00BC B5DF              rcall _delay
 00BE                   .dbline 58
 00BE           L26:
 00BE                   .dbline 55
 00BE 6395              inc R22
 00C0           L28:
 00C0                   .dbline 55
 00C0 6830              cpi R22,8
 00C2 A8F3              brlo L25
 00C4                   .dbline 59
 00C4           ;                               {       PORTD = ~(1<<i);
 00C4           ;                                       delay(data);                             //延时
 00C4           ;                               }
 00C4           ;                               for(i=0;i<8;i++)                                 //高位到低位
 00C4 6627              clr R22
 00C6 0CC0              rjmp L32
 00C8           L29:
 00C8                   .dbline 60
 00C8                   .dbline 60
 00C8 262F              mov R18,R22
 00CA 3327              clr R19
 00CC 00E8              ldi R16,128
 00CE 10E0              ldi R17,0
 00D0 00D0              rcall asr16
 00D2 1801              movw R2,R16
 00D4 2094              com R2
 00D6 3094              com R3
 00D8 22BA              out 0x12,R2
 00DA                   .dbline 61
 00DA 042F              mov R16,R20
 00DC A5DF              rcall _delay
 00DE                   .dbline 62
 00DE           L30:
 00DE                   .dbline 59
 00DE 6395              inc R22
 00E0           L32:
 00E0                   .dbline 59
 00E0 6830              cpi R22,8
 00E2 90F3              brlo L29
 00E4                   .dbline 63
 00E4           ;                               {       PORTD = ~(0x80>>i);
 00E4           ;                                               delay(data);
 00E4           ;                               }
 00E4           ;                       }
 00E4 20C0              rjmp L24
 00E6           L23:
 00E6                   .dbline 65
 00E6           ;                       else                                                             //亮两个灯
 00E6           ;                       {       data = (PINB & 0x06)>>1;                 //同上
 00E6                   .dbline 65
 00E6 46B3              in R20,0x16
 00E8 4670              andi R20,6
 00EA 4695              lsr R20
 00EC                   .dbline 67
 00EC           ;                               
 00EC           ;                               for(i=0;i<8;i++)
 00EC 6627              clr R22
 00EE 09C0              rjmp L36
 00F0           L33:
 00F0                   .dbline 68
 00F0                   .dbline 68
 00F0 03E0              ldi R16,3
 00F2 162F              mov R17,R22
 00F4 00D0              rcall lsl8
 00F6 202E              mov R2,R16
 00F8 2094              com R2
 00FA 22BA              out 0x12,R2
 00FC                   .dbline 69
 00FC 042F              mov R16,R20
 00FE 94DF              rcall _delay
 0100                   .dbline 70
 0100           L34:
 0100                   .dbline 67
 0100 6395              inc R22
 0102           L36:
 0102                   .dbline 67
 0102 6830              cpi R22,8
 0104 A8F3              brlo L33
 0106                   .dbline 71
 0106           ;                               {       PORTD = ~(3<<i);
 0106           ;                                               delay(data);
 0106           ;                               }
 0106           ;                               for(i=0;i<8;i++)
 0106 6627              clr R22
 0108 0CC0              rjmp L40
 010A           L37:
 010A                   .dbline 72
 010A                   .dbline 72
 010A 262F              mov R18,R22
 010C 3327              clr R19
 010E 00EC              ldi R16,192
 0110 10E0              ldi R17,0
 0112 00D0              rcall asr16
 0114 1801              movw R2,R16
 0116 2094              com R2
 0118 3094              com R3
 011A 22BA              out 0x12,R2
 011C                   .dbline 73
 011C 042F              mov R16,R20
 011E 84DF              rcall _delay
 0120                   .dbline 74
 0120           L38:
 0120                   .dbline 71
 0120 6395              inc R22
 0122           L40:
 0122                   .dbline 71
 0122 6830              cpi R22,8
 0124 90F3              brlo L37
 0126                   .dbline 75
 0126           ;                               {       PORTD = ~(0xC0>>i);
 0126           ;                                               delay(data);
 0126           ;                               }                                       
 0126           ;                       }                       
 0126           L24:
 0126                   .dbline 76
 0126           ;               }
 0126           L22:
 0126                   .dbline 77
 0126           L19:
 0126                   .dbline 46
 0126 AECF              rjmp L18
 0128           X0:
 0128                   .dbline -2
 0128                   .dbline 78
 0128           ;  }
 0128           ; }
 0128           L16:
 0128 2996              adiw R28,9
 012A                   .dbline 0 ; func end
 012A 0895              ret
 012C                   .dbsym l led 0 A[9:9]c
 012C                   .dbsym r data 20 c
 012C                   .dbsym r i 22 c
 012C                   .dbend

⌨️ 快捷键说明

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