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

📄 ls.s

📁 本人编写的mega16单片机控制的 八种花样流水灯源代码
💻 S
📖 第 1 页 / 共 2 页
字号:
	.even
_main::
	.dbline -1
	.dbline 89
;  }
;    }
; 
; void main()
;     {
	.dbline 91
;     int l,m,n,o,p,q,r,s,i,j;
;  DDRA =0X00;                         //端口上拉输入
	clr R2
	out 0x1a,R2
	.dbline 92
;  PORTA=0XFF;
	ldi R24,255
	out 0x1b,R24
	.dbline 93
;     DDRB =0x00;                         //端口输出
	out 0x17,R2
	.dbline 94
;     PORTB=0xFF;                         //输出高电平,LED熄灭
	out 0x18,R24
	.dbline 95
;  DDRC =0XFF;
	out 0x14,R24
	.dbline 96
;  PORTC=0XFF;
	out 0x15,R24
	.dbline 97
;  DDRD =0X00;
	out 0x11,R2
	.dbline 98
;  PORTD=0XFF;
	out 0x12,R24
	.dbline 100
; 
;     for (r=0;r<5;r++)
	clr R20
	clr R21
L47:
	.dbline 101
;      {
	.dbline 102
;     for(l=0;l<5;l++)               //模式1:顺序点亮
	clr R22
	clr R23
L51:
	.dbline 103
;           {
	.dbline 104
;        for (i = 0; i < 8; i++)     //顺序单个点亮LED
	clr R10
	clr R11
L55:
	.dbline 105
;                 LED_01(i);
	movw R16,R10
	xcall _LED_01
L56:
	.dbline 104
	movw R24,R10
	adiw R24,1
	movw R10,R24
	.dbline 104
	cpi R24,8
	ldi R30,0
	cpc R25,R30
	brlt L55
X15:
	.dbline 106
;              for (i = 6; i > 0; i--)     //逆序单个点亮LED
	ldi R24,6
	ldi R25,0
	movw R10,R24
L59:
	.dbline 107
;                 LED_01(i);
	movw R16,R10
	xcall _LED_01
L60:
	.dbline 106
	movw R24,R10
	sbiw R24,1
	movw R10,R24
	.dbline 106
	clr R2
	clr R3
	cp R2,R24
	cpc R3,R25
	brlt L59
X16:
	.dbline 108
;     }
L52:
	.dbline 102
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 102
	cpi R22,5
	ldi R30,0
	cpc R23,R30
	brlt L51
X17:
	.dbline 109
;     LED_off(); 
	xcall _LED_off
	.dbline 111
;     
;     for(m=0;m<5;m++)               //模式2:顺序单个间隔点亮
	clr R22
	clr R23
L63:
	.dbline 112
;     {
	.dbline 113
;              for (i = 0; i < 8; i += 2)  //顺序间隔点亮LED
	clr R10
	clr R11
L67:
	.dbline 114
;               LED_01(i);
	movw R16,R10
	xcall _LED_01
L68:
	.dbline 113
	movw R24,R10
	adiw R24,2
	movw R10,R24
	.dbline 113
	cpi R24,8
	ldi R30,0
	cpc R25,R30
	brlt L67
X18:
	.dbline 115
;              for (i = 7; i > 0; i -= 2)  //逆序间隔点亮LED
	ldi R24,7
	ldi R25,0
	movw R10,R24
L71:
	.dbline 116
;               LED_01(i);
	movw R16,R10
	xcall _LED_01
L72:
	.dbline 115
	movw R24,R10
	sbiw R24,2
	movw R10,R24
	.dbline 115
	clr R2
	clr R3
	cp R2,R24
	cpc R3,R25
	brlt L71
X19:
	.dbline 117
;     }
L64:
	.dbline 111
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 111
	cpi R22,5
	ldi R30,0
	cpc R23,R30
	brlt L63
X20:
	.dbline 118
;     LED_off(); 
	xcall _LED_off
	.dbline 120
;      
;     for(n=0;n<5;n++)               //模式3:间隔点亮
	clr R22
	clr R23
L75:
	.dbline 121
;     {
	.dbline 122
;        for (i = 2; i < 8; i++)     //间隔顺序同时点亮
	ldi R24,2
	ldi R25,0
	movw R10,R24
L79:
	.dbline 123
;        LED_02(i);
	movw R16,R10
	xcall _LED_02
L80:
	.dbline 122
	movw R24,R10
	adiw R24,1
	movw R10,R24
	.dbline 122
	cpi R24,8
	ldi R30,0
	cpc R25,R30
	brlt L79
X21:
	.dbline 124
;     for (i = 6; i > 2; i--)  //间隔逆序同时点亮
	ldi R24,6
	ldi R25,0
	movw R10,R24
L83:
	.dbline 125
;        LED_02(i);
	movw R16,R10
	xcall _LED_02
L84:
	.dbline 124
	movw R24,R10
	sbiw R24,1
	movw R10,R24
	.dbline 124
	ldi R24,2
	ldi R25,0
	cp R24,R10
	cpc R25,R11
	brlt L83
X22:
	.dbline 126
;     }
L76:
	.dbline 120
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 120
	cpi R22,5
	ldi R30,0
	cpc R23,R30
	brlt L75
X23:
	.dbline 127
;     LED_off(); 
	xcall _LED_off
	.dbline 129
;     
;     for(o=0;o<5;o++)               //模式4:相临点亮
	clr R22
	clr R23
L87:
	.dbline 130
;     {
	.dbline 131
;        for (i = 1; i < 8; i++)     //相临顺序同时点亮
	ldi R24,1
	ldi R25,0
	movw R10,R24
L91:
	.dbline 132
;        LED_03(i);
	movw R16,R10
	xcall _LED_03
L92:
	.dbline 131
	movw R24,R10
	adiw R24,1
	movw R10,R24
	.dbline 131
	cpi R24,8
	ldi R30,0
	cpc R25,R30
	brlt L91
X24:
	.dbline 133
;     for (i = 6; i > 1; i--)  //相临逆序同时点亮
	ldi R24,6
	ldi R25,0
	movw R10,R24
L95:
	.dbline 134
;        LED_03(i);
	movw R16,R10
	xcall _LED_03
L96:
	.dbline 133
	movw R24,R10
	sbiw R24,1
	movw R10,R24
	.dbline 133
	ldi R24,1
	ldi R25,0
	cp R24,R10
	cpc R25,R11
	brlt L95
X25:
	.dbline 135
;     }
L88:
	.dbline 129
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 129
	cpi R22,5
	ldi R30,0
	cpc R23,R30
	brlt L87
X26:
	.dbline 136
;     LED_off();    
	xcall _LED_off
	.dbline 138
; 
;     for(p=0;p<5;p++)               //模式5:发散聚集点亮
	clr R22
	clr R23
L99:
	.dbline 139
;     {
	.dbline 140
;        for(i=0;i<4;i++)            //发散点亮
	clr R10
	clr R11
L103:
	.dbline 141
;       LED_04(i);
	movw R16,R10
	xcall _LED_04
L104:
	.dbline 140
	movw R24,R10
	adiw R24,1
	movw R10,R24
	.dbline 140
	cpi R24,4
	ldi R30,0
	cpc R25,R30
	brlt L103
X27:
	.dbline 142
;        for(i=2;i>0;i--)            //聚集点亮
	ldi R24,2
	ldi R25,0
	movw R10,R24
L107:
	.dbline 143
;       LED_04(i);     
	movw R16,R10
	xcall _LED_04
L108:
	.dbline 142
	movw R24,R10
	sbiw R24,1
	movw R10,R24
	.dbline 142
	clr R2
	clr R3
	cp R2,R24
	cpc R3,R25
	brlt L107
X28:
	.dbline 144
;     }
L100:
	.dbline 138
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 138
	cpi R22,5
	ldi R30,0
	cpc R23,R30
	brlt L99
X29:
	.dbline 145
;     LED_off();
	xcall _LED_off
	.dbline 147
; 
;     for(q=0;q<5;q++)               //模式6:四四点亮
	clr R22
	clr R23
L111:
	.dbline 148
;     {
	.dbline 149
;        for(i=0;i<4;i++)            //四四顺序点亮
	clr R10
	clr R11
L115:
	.dbline 150
;       LED_05(i);
	movw R16,R10
	xcall _LED_05
L116:
	.dbline 149
	movw R24,R10
	adiw R24,1
	movw R10,R24
	.dbline 149
	cpi R24,4
	ldi R30,0
	cpc R25,R30
	brlt L115
X30:
	.dbline 151
;        for(i=2;i>0;i--)            //四四逆序点亮
	ldi R24,2
	ldi R25,0
	movw R10,R24
L119:
	.dbline 152
;       LED_05(i);     
	movw R16,R10
	xcall _LED_05
L120:
	.dbline 151
	movw R24,R10
	sbiw R24,1
	movw R10,R24
	.dbline 151
	clr R2
	clr R3
	cp R2,R24
	cpc R3,R25
	brlt L119
X31:
	.dbline 153
;     }
L112:
	.dbline 147
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 147
	cpi R22,5
	ldi R30,0
	cpc R23,R30
	brlt L111
X32:
	.dbline 154
;     LED_off();
	xcall _LED_off
	.dbline 156
;     
;     for(s=0;s<5;s++)               //模式7:四四点亮
	clr R22
	clr R23
L123:
	.dbline 157
;     {
	.dbline 158
;        for(i=0;i<2;i++)            //四四顺序点亮
	clr R10
	clr R11
L127:
	.dbline 159
;       LED_06(i);    
	movw R16,R10
	xcall _LED_06
L128:
	.dbline 158
	movw R24,R10
	adiw R24,1
	movw R10,R24
	.dbline 158
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	brlt L127
X33:
	.dbline 160
;     }
L124:
	.dbline 156
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 156
	cpi R22,5
	ldi R30,0
	cpc R23,R30
	brlt L123
X34:
	.dbline 161
;     LED_off();
	xcall _LED_off
	.dbline 163
;     
;     for(j=0;j<10;j++)              //模式8:全部点亮熄灭
	clr R22
	clr R23
L131:
	.dbline 164
;     {
	.dbline 165
;       LED_on();
	xcall _LED_on
	.dbline 166
;    LED_off();
	xcall _LED_off
	.dbline 167
;     }
L132:
	.dbline 163
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 163
	cpi R22,10
	ldi R30,0
	cpc R23,R30
	brlt L131
X35:
	.dbline 168
;      }
L48:
	.dbline 100
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 100
	cpi R20,5
	ldi R30,0
	cpc R21,R30
	brge X37
	xjmp L47
X37:
X36:
	.dbline 174
;   //MCUCR=0x40;          //空闲模式,CPU占用100%
;   //MCUCR=0x50;          //ADC噪声抑制模式,CPU占用100%
;   //MCUCR=0x60;          //掉电模式,CPU占用80%
;   //MCUCR=0x70;          //省电模式,CPU占用4%
;   //MCUCR=0xE0;          //Standby模式,CPU占用80%
;   MCUCR=0xF0;            //扩展Standby模式,CPU占用4%
	ldi R24,240
	out 0x35,R24
	.dbline 175
;   asm("sleep");          //CPU休眠指令
	sleep
	.dbline -2
L46:
	.dbline 0 ; func end
	ret
	.dbsym r r 20 I
	.dbsym r j 22 I
	.dbsym r s 22 I
	.dbsym r q 22 I
	.dbsym r p 22 I
	.dbsym r o 22 I
	.dbsym r n 22 I
	.dbsym r m 22 I
	.dbsym r l 22 I
	.dbsym r i 10 I
	.dbend
;     }
; 

⌨️ 快捷键说明

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