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 + -
显示快捷键?