📄 leson3.lis
字号:
008E .dbend
008E .dbfunc e senddata _senddata fV
008E ; i -> R20
008E ; data -> R16,R17
.even
008E _senddata::
008E 00D0 rcall push_gset1
0090 .dbline -1
0090 .dbline 110
0090 ; {
0090 ; NOP();NOP();NOP();NOP();
0090 ; }
0090 ; }
0090 ; void senddata(uint data) // dm13a(led 驱动子程序)
0090 ; {
0090 .dbline 112
0090 ; uchar i;
0090 ; for(i=0;i<16;i++)
0090 4427 clr R20
0092 0DC0 rjmp L29
0094 L26:
0094 .dbline 113
0094 ; {
0094 .dbline 114
0094 ; PORTD&=~0x10;
0094 9498 cbi 0x12,4
0096 .dbline 115
0096 ; NOP();
0096 0000 nop
0098 .dbline 116
0098 ; if(data&0x8000)
0098 17FF sbrs R17,7
009A 02C0 rjmp L30
009C .dbline 117
009C ; PORTD|=0x20; //置位操作
009C 959A sbi 0x12,5
009E 01C0 rjmp L31
00A0 L30:
00A0 .dbline 119
00A0 ; else
00A0 ; PORTD&=~0x20; //清零操作
00A0 9598 cbi 0x12,5
00A2 L31:
00A2 .dbline 120
00A2 0000 nop
00A4 .dbline 121
00A4 949A sbi 0x12,4
00A6 .dbline 122
00A6 0000 nop
00A8 .dbline 123
00A8 000F lsl R16
00AA 111F rol R17
00AC .dbline 124
00AC L27:
00AC .dbline 112
00AC 4395 inc R20
00AE L29:
00AE .dbline 112
00AE 4031 cpi R20,16
00B0 88F3 brlo L26
00B2 .dbline 125
00B2 ; NOP();
00B2 ; PORTD|=0x10;
00B2 ; NOP();
00B2 ; data=data<<1;
00B2 ; }
00B2 ; PORTD|=0x08;
00B2 939A sbi 0x12,3
00B4 .dbline 126
00B4 ; NOP();
00B4 0000 nop
00B6 .dbline 127
00B6 ; PORTD&=~0x08;
00B6 9398 cbi 0x12,3
00B8 .dbline -2
00B8 L25:
00B8 00D0 rcall pop_gset1
00BA .dbline 0 ; func end
00BA 0895 ret
00BC .dbsym r i 20 c
00BC .dbsym r data 16 i
00BC .dbend
00BC .dbfunc e main _main fV
00BC ; m -> R20,R21
00BC ; j -> y+0
00BC ; n -> R10,R11
00BC ; k -> R12,R13
00BC ; i -> R14
00BC ; h -> R22
.even
00BC _main::
00BC 2297 sbiw R28,2
00BE .dbline -1
00BE .dbline 134
00BE ;
00BE ; //PORTD|=(1<<PORTD5); //置位操作
00BE ; //PORTD&=~(1<<PORTD5); //清零操作
00BE ; }
00BE ;
00BE ; void main()
00BE ; {
00BE .dbline 136
00BE ;
00BE ; DDRD|=0x38;
00BE 81B3 in R24,0x11
00C0 8863 ori R24,56
00C2 81BB out 0x11,R24
00C4 .dbline 137
00C4 ; DDRB|=0x40;
00C4 BE9A sbi 0x17,6
00C6 .dbline 141
00C6 ;
00C6 ;
00C6 ;
00C6 ; WDT_off();
00C6 9CDF rcall _WDT_off
00C8 .dbline 143
00C8 ;
00C8 ; USART_Init(9600);
00C8 00E8 ldi R16,9600
00CA 15E2 ldi R17,37
00CC A4DF rcall _USART_Init
00CE .dbline 144
00CE ; PORTB|=0x40;
00CE C69A sbi 0x18,6
00D0 .dbline 145
00D0 ; delayms(20);
00D0 04E1 ldi R16,20
00D2 10E0 ldi R17,0
00D4 B9DF rcall _delayms
00D6 .dbline 146
00D6 ; delayms(20);
00D6 04E1 ldi R16,20
00D8 10E0 ldi R17,0
00DA B6DF rcall _delayms
00DC .dbline 147
00DC ; delayms(20);
00DC 04E1 ldi R16,20
00DE 10E0 ldi R17,0
00E0 B3DF rcall _delayms
00E2 BBC0 rjmp L34
00E4 L33:
00E4 .dbline 149
00E4 ; while(1)
00E4 ; {
00E4 .dbline 152
00E4 ; uchar i;
00E4 ; uchar h;
00E4 ; uint j=0x0001;
00E4 81E0 ldi R24,1
00E6 90E0 ldi R25,0
00E8 9983 std y+1,R25
00EA 8883 std y+0,R24
00EC .dbline 153
00EC ; uint k=0xffff;
00EC 8FEF ldi R24,65535
00EE 9FEF ldi R25,255
00F0 C82E mov R12,R24
00F2 D92E mov R13,R25
00F4 .dbline 154
00F4 ; uint m=0x4000;
00F4 40E0 ldi R20,16384
00F6 50E4 ldi R21,64
00F8 .dbline 155
00F8 ; uint n=0xffff;
00F8 A82E mov R10,R24
00FA B92E mov R11,R25
00FC .dbline 159
00FC ;
00FC ;
00FC ;
00FC ; USART_Transmit(0x55);
00FC 05E5 ldi R16,85
00FE 96DF rcall _USART_Transmit
0100 .dbline 163
0100 ;
0100 ;
0100 ;
0100 ; for(i=0;i<16;i++)
0100 EE24 clr R14
0102 12C0 rjmp L39
0104 L36:
0104 .dbline 164
0104 .dbline 165
0104 0881 ldd R16,y+0
0106 1981 ldd R17,y+1
0108 C2DF rcall _senddata
010A .dbline 166
010A 04E1 ldi R16,20
010C 10E0 ldi R17,0
010E 9CDF rcall _delayms
0110 .dbline 167
0110 0880 ldd R0,y+0
0112 1980 ldd R1,y+1
0114 000C lsl R0
0116 111C rol R1
0118 1982 std y+1,R1
011A 0882 std y+0,R0
011C .dbline 168
011C 802D mov R24,R0
011E 912D mov R25,R1
0120 0196 adiw R24,1
0122 9983 std y+1,R25
0124 8883 std y+0,R24
0126 .dbline 169
0126 L37:
0126 .dbline 163
0126 E394 inc R14
0128 L39:
0128 .dbline 163
0128 8E2D mov R24,R14
012A 8031 cpi R24,16
012C 58F3 brlo L36
012E .dbline 171
012E ; {
012E ; senddata(j);
012E ; delayms(20); //左到右逐渐亮
012E ; j=j<<1;
012E ; j=j+1;
012E ; }
012E ;
012E ; USART_Transmit(0x66);
012E 06E6 ldi R16,102
0130 7DDF rcall _USART_Transmit
0132 .dbline 173
0132 ;
0132 ; for(i=0;i<15;i++) //左到右逐渐灭
0132 EE24 clr R14
0134 3AC0 rjmp L43
0136 L40:
0136 .dbline 174
0136 ; {
0136 .dbline 175
0136 ; if((i>5)&&(i<10))
0136 85E0 ldi R24,5
0138 8E15 cp R24,R14
013A B8F4 brsh L44
013C 8E2D mov R24,R14
013E 8A30 cpi R24,10
0140 A0F4 brsh L44
0142 .dbline 176
0142 ; {
0142 .dbline 177
0142 ; for(h=0;h<20;h++)
0142 6627 clr R22
0144 0DC0 rjmp L49
0146 L46:
0146 .dbline 178
0146 .dbline 179
0146 0C2D mov R16,R12
0148 1D2D mov R17,R13
014A A1DF rcall _senddata
014C .dbline 180
014C 00E2 ldi R16,800
014E 13E0 ldi R17,3
0150 8FDF rcall _delayus
0152 .dbline 181
0152 0027 clr R16
0154 1127 clr R17
0156 9BDF rcall _senddata
0158 .dbline 182
0158 08EC ldi R16,200
015A 10E0 ldi R17,0
015C 89DF rcall _delayus
015E .dbline 183
015E L47:
015E .dbline 177
015E 6395 inc R22
0160 L49:
0160 .dbline 177
0160 6431 cpi R22,20
0162 88F3 brlo L46
0164 .dbline 184
0164 ; {
0164 ; senddata(k);
0164 ; delayus(800);
0164 ; senddata(0x00);
0164 ; delayus(200);
0164 ; }
0164 ; k=k<<1;
0164 CC0C lsl R12
0166 DD1C rol R13
0168 .dbline 185
0168 ; }
0168 1FC0 rjmp L45
016A L44:
016A .dbline 186
016A ; else if(i>10)
016A 8AE0 ldi R24,10
016C 8E15 cp R24,R14
016E A0F4 brsh L50
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -