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

📄 app.s

📁 用于单白色144颗LED8段追光
💻 S
📖 第 1 页 / 共 2 页
字号:
	clr R3
	ldi R30,7
	ldi R31,0
	sub R30,R2
	sbc R31,R3
	ldi R24,<_redata
	ldi R25,>_redata
	add R30,R24
	adc R31,R25
	in R2,0xc
	std z+0,R2
	.dbline 133
L20:
	.dbline 129
	inc R16
L22:
	.dbline 129
	cpi R16,8
	brlo L24
	.dbline 134
	sbi 0xb,0
	.dbline 135
	ldi R24,1
	sts _fg_rin,R24
	.dbline 136
L15:
	.dbline -2
	.dbline 137
;                 while(!(UCSRA&0x80))WDR();				;			
;                 redata[7-i]=UDR;//读UDR时RXC将自动清除
;                }
; 			UCSRA|=BIT(MPCM);//允许地址接收
; 			fg_rin=0x01;//设置接收数据标志
; 		  }
; }
L14:
	ld R2,y+
	out 0x3f,R2
	ld R31,y+
	ld R30,y+
	ld R25,y+
	ld R24,y+
	ld R18,y+
	ld R16,y+
	ld R3,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbsym r addr 18 c
	.dbsym r temp 16 c
	.dbsym r i 16 c
	.dbend
	.dbfunc e port_init _port_init fV
	.even
_port_init::
	.dbline -1
	.dbline 139
; void port_init(void)
; {
	.dbline 140
;  PORTB = 0xff;
	ldi R24,255
	out 0x18,R24
	.dbline 141
;  DDRB  = 0x00; 
	clr R2
	out 0x17,R2
	.dbline 142
;  PORTD = 0x00;
	out 0x12,R2
	.dbline 143
;  DDRD  = 0xff; 
	out 0x11,R24
	.dbline -2
	.dbline 144
; }
L26:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e watchdog_init _watchdog_init fV
	.even
_watchdog_init::
	.dbline -1
	.dbline 147
; 
; void watchdog_init(void)
; {
	.dbline 148
;  WDR(); //this prevents a timout on enabling
	wdr
	.dbline 149
;  WDTCR|=(1<<WDCE)|(1<<WDE); 
	in R24,0x21
	ori R24,24
	out 0x21,R24
	.dbline 150
;  WDTCR = (1<<WDE)|(1<<WDP2)|(1<<WDP0); //WATCHDOG ENABLED - dont forget WDR
	ldi R24,13
	out 0x21,R24
	.dbline -2
	.dbline 151
; }
L27:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e uart0_init _uart0_init fV
	.even
_uart0_init::
	.dbline -1
	.dbline 153
; void uart0_init(void)
; {
	.dbline 154
;  UBRRH = 0x00; //set baud rate
	clr R2
	out 0x2,R2
	.dbline 155
;  UBRRL = 0x01; //set baud rate
	ldi R24,1
	out 0x9,R24
	.dbline 156
;  UCSRA|=BIT(MPCM);
	sbi 0xb,0
	.dbline 157
;  UCSRB = 0X94;
	ldi R24,148
	out 0xa,R24
	.dbline 158
;  UCSRC = 0x06; //enable
	ldi R24,6
	out 0x3,R24
	.dbline -2
	.dbline 159
; }
L28:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e init_devices _init_devices fV
	.even
_init_devices::
	.dbline -1
	.dbline 161
; void init_devices(void)
; {
	.dbline 162
;  CLI(); //disable all interrupts
	cli
	.dbline 163
;  port_init();
	rcall _port_init
	.dbline 164
;  watchdog_init();
	rcall _watchdog_init
	.dbline 165
;  MCUCR = 0x00;//禁止休眠(disable sleep)//
	clr R2
	out 0x35,R2
	.dbline 166
;  GIMSK = 0x00;//屏蔽两个外部中断disable exit interrupts//
	out 0x3b,R2
	.dbline 167
;  TIMSK = 0x00;//屏蔽定时器中断 disable timer interrupts//
	out 0x39,R2
	.dbline -2
	.dbline 168
; }
L29:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e delay _delay fV
;            dd1 -> R20
;            dd2 -> R22
;            dd3 -> R10
;          count -> R16
	.even
_delay::
	rcall push_gset3
	.dbline -1
	.dbline 173
; /*******************************
; **delay
; ********************************/
; void delay(uchar count )
; {
	.dbline 175
; uchar dd1,dd2,dd3;
; for(dd1=0;dd1<count;dd1++)
	clr R20
	rjmp L34
L31:
	.dbline 176
;    for(dd2=0;dd2<30;dd2++)
	clr R22
	rjmp L38
L35:
	.dbline 177
;       for(dd3=0;dd3<250;dd3++)
	clr R10
	rjmp L42
L39:
	.dbline 178
	wdr
L40:
	.dbline 177
	inc R10
L42:
	.dbline 177
	mov R24,R10
	cpi R24,250
	brlo L39
L36:
	.dbline 176
	inc R22
L38:
	.dbline 176
	cpi R22,30
	brlo L35
L32:
	.dbline 175
	inc R20
L34:
	.dbline 175
	cp R20,R16
	brlo L31
	.dbline -2
	.dbline 179
;         WDR();
; }
L30:
	rcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r dd1 20 c
	.dbsym r dd2 22 c
	.dbsym r dd3 10 c
	.dbsym r count 16 c
	.dbend
	.dbfunc e send _send fV
;              i -> R16
	.even
_send::
	.dbline -1
	.dbline 184
; /*******************************
; **发送数据
; ********************************/
; void send(void)
; {
	.dbline 187
;  signed char i;
;  
;  PORTD&=~BIT(RCK);
	cbi 0x12,5
	.dbline 188
;  PORTD&=~BIT(CLK);
	cbi 0x12,3
	.dbline 190
;  
;  for(i=48;i>=0;i--)
	ldi R16,48
	rjmp L47
L44:
	.dbline 191
;  {
	.dbline 193
;  //****************
;  if(redata[i]&0x40)//
	ldi R24,<_redata
	ldi R25,>_redata
	mov R30,R16
	clr R31
	sbrc R30,7
	com R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sbrs R2,6
	rjmp L48
	.dbline 194
;     PORTD|=BIT(DA);
	sbi 0x12,4
	rjmp L49
L48:
	.dbline 196
;  else
;     PORTD&=~BIT(DA);	
	cbi 0x12,4
L49:
	.dbline 197
;  PORTD|=BIT(CLK);
	sbi 0x12,3
	.dbline 198
; 		 NOP();
	nop
	.dbline 199
;  PORTD&=~BIT(CLK);
	cbi 0x12,3
	.dbline 201
;  //==============
;  if(redata[i]&0x20)//
	ldi R24,<_redata
	ldi R25,>_redata
	mov R30,R16
	clr R31
	sbrc R30,7
	com R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sbrs R2,5
	rjmp L50
	.dbline 202
;     PORTD|=BIT(DA);
	sbi 0x12,4
	rjmp L51
L50:
	.dbline 204
;  else
;     PORTD&=~BIT(DA);
	cbi 0x12,4
L51:
	.dbline 205
;  PORTD|=BIT(CLK);		
	sbi 0x12,3
	.dbline 206
; 		 NOP();
	nop
	.dbline 207
;  PORTD&=~BIT(CLK);
	cbi 0x12,3
	.dbline 209
;  //===============
;  if(redata[i]&0x10)//
	ldi R24,<_redata
	ldi R25,>_redata
	mov R30,R16
	clr R31
	sbrc R30,7
	com R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sbrs R2,4
	rjmp L52
	.dbline 210
;     PORTD|=BIT(DA);
	sbi 0x12,4
	rjmp L53
L52:
	.dbline 212
;  else
;     PORTD&=~BIT(DA);
	cbi 0x12,4
L53:
	.dbline 213
;  PORTD|=BIT(CLK);		
	sbi 0x12,3
	.dbline 214
; 		 NOP();
	nop
	.dbline 215
;  PORTD&=~BIT(CLK);
	cbi 0x12,3
	.dbline 217
;  //===============
;  if(redata[i]&0x04)//
	ldi R24,<_redata
	ldi R25,>_redata
	mov R30,R16
	clr R31
	sbrc R30,7
	com R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sbrs R2,2
	rjmp L54
	.dbline 218
;     PORTD|=BIT(DA);
	sbi 0x12,4
	rjmp L55
L54:
	.dbline 220
;  else
;     PORTD&=~BIT(DA);
	cbi 0x12,4
L55:
	.dbline 221
;  PORTD|=BIT(CLK);		
	sbi 0x12,3
	.dbline 222
; 		 NOP();
	nop
	.dbline 223
;  PORTD&=~BIT(CLK);
	cbi 0x12,3
	.dbline 225
;  //===============
;  if(redata[i]&0x02)//
	ldi R24,<_redata
	ldi R25,>_redata
	mov R30,R16
	clr R31
	sbrc R30,7
	com R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sbrs R2,1
	rjmp L56
	.dbline 226
;     PORTD|=BIT(DA);
	sbi 0x12,4
	rjmp L57
L56:
	.dbline 228
;  else
;     PORTD&=~BIT(DA);
	cbi 0x12,4
L57:
	.dbline 229
;  PORTD|=BIT(CLK);		
	sbi 0x12,3
	.dbline 230
; 		 NOP();
	nop
	.dbline 231
;  PORTD&=~BIT(CLK);
	cbi 0x12,3
	.dbline 233
;  //===============
;  if(redata[i]&0x01)//
	ldi R24,<_redata
	ldi R25,>_redata
	mov R30,R16
	clr R31
	sbrc R30,7
	com R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sbrs R2,0
	rjmp L58
	.dbline 234
;     PORTD|=BIT(DA);
	sbi 0x12,4
	rjmp L59
L58:
	.dbline 236
;  else
;     PORTD&=~BIT(DA);
	cbi 0x12,4
L59:
	.dbline 237
	sbi 0x12,3
	.dbline 238
	nop
	.dbline 239
	cbi 0x12,3
	.dbline 241
L45:
	.dbline 190
	dec R16
L47:
	.dbline 190
	cpi R16,0
	brlt X3
	rjmp L44
X3:
	.dbline 242
;  PORTD|=BIT(CLK);		
; 		 NOP();
;  PORTD&=~BIT(CLK);
;  //===============
;  }
; PORTD|=BIT(EN);//OFF DISPLAY
	sbi 0x12,6
	.dbline 243
; NOP();
	nop
	.dbline 244
; PORTD|=BIT(RCK);
	sbi 0x12,5
	.dbline 245
; NOP();
	nop
	.dbline 246
; PORTD&=~BIT(RCK);//LATCH DATA
	cbi 0x12,5
	.dbline 247
; NOP();
	nop
	.dbline 248
; PORTD&=~BIT(EN);//ON DISPLAY
	cbi 0x12,6
	.dbline -2
	.dbline 250
; 
; }
L43:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 C
	.dbend
	.area bss(ram, con, rel)
	.dbfile D:\单片机程序\AVR\LSAVR~1\LBT-FC8B暴光管TEST\APP.c
_fg_rin:
	.blkb 1
	.dbsym s fg_rin _fg_rin c

⌨️ 快捷键说明

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