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

📄 feedis_uart.s

📁 AVR系列单片机ATMEGA64开发的LED显示屏程序 内容包括ATMEGA64大部分资源的初始化程序
💻 S
📖 第 1 页 / 共 2 页
字号:
L64:
	.dbline 178
L65:
	.dbline 178
; 	}	
; }
; 
; 
; void uart0_txd(uchar x)
; { while((UCSR0A&0X20)==0);
	sbis 0xb,5
	rjmp L64
	.dbline 179
;   UDR0=x;
	out 0xc,R16
	.dbline -2
L63:
	.dbline 0 ; func end
	ret
	.dbsym r x 16 c
	.dbend
	.dbfunc e init_USART _init_USART fV
	.even
_init_USART::
	.dbline -1
	.dbline 183
; 
; }
; void init_USART(void)//USART 初始化
; {
	.dbline 185
;     //USART 9600 8, n,1  PC上位机软件(超级终端等)也要设成同样的设置才能通讯
; 	UCSR0B = 0x00;   //disable while setting baud rate
	clr R2
	out 0xa,R2
	.dbline 186
; 	UCSR0A = 0x00;
	out 0xb,R2
	.dbline 187
; 	UCSR0C =  0x06;
	ldi R24,6
	sts 149,R24
	.dbline 189
;     //异步,8位数据,无奇偶校验,一个停止位,无倍速
;     UBRR0L= (F_CPU/BAUDRATE/16-1)%256;
	ldi R24,95
	out 0x9,R24
	.dbline 190
;     UBRR0H= (F_CPU/BAUDRATE/16-1)/256;
	sts 144,R2
	.dbline 191
;     UCSR0B = (1<<RXCIE0)|(1<<RXEN0)|(1<<TXEN0);
	ldi R24,152
	out 0xa,R24
	.dbline -2
L67:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e port_init _port_init fV
	.even
_port_init::
	.dbline -1
	.dbline 196
;     //使能接收中断,使能接收,使能发送
; }
; 
; void port_init(void)
; {
	.dbline 197
; PORTA = 0x00;
	clr R2
	out 0x1b,R2
	.dbline 198
;  DDRA  = 0xff;
	ldi R24,255
	out 0x1a,R24
	.dbline 199
;  PORTB = 0xAD;
	ldi R24,173
	out 0x18,R24
	.dbline 200
;  DDRB  = 0xF7;
	ldi R24,247
	out 0x17,R24
	.dbline 201
;  PORTC = 0xFF; //m103 output only
	ldi R24,255
	out 0x15,R24
	.dbline 202
;  DDRC  = 0xFF;
	out 0x14,R24
	.dbline 203
;  PORTD = 0x05;
	ldi R24,5
	out 0x12,R24
	.dbline 204
;  DDRD  = 0xFA;
	ldi R24,250
	out 0x11,R24
	.dbline 205
;  PORTE = 0xFE;
	ldi R24,254
	out 0x3,R24
	.dbline 206
;  DDRE  = 0xFE;
	out 0x2,R24
	.dbline 207
;  PORTF = 0x0F;
	ldi R24,15
	sts 98,R24
	.dbline 208
;  DDRF  = 0x0F;
	sts 97,R24
	.dbline 209
;  PORTG = 0x1F;
	ldi R24,31
	sts 101,R24
	.dbline 210
;  DDRG  = 0x0F;
	ldi R24,15
	sts 100,R24
	.dbline -2
L68:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e timer1_init _timer1_init fV
	.even
_timer1_init::
	.dbline -1
	.dbline 215
; }
; 
; 
; void timer1_init(void)
; {
	.dbline 216
;  TCCR1B = 0x00; //stop
	clr R2
	out 0x2e,R2
	.dbline 217
;  TCNT1H = 0xFF; //setup
	ldi R24,255
	out 0x2d,R24
	.dbline 218
;  TCNT1L = 0x0C;
	ldi R24,12
	out 0x2c,R24
	.dbline 219
;  OCR1AH = 0x00;
	out 0x2b,R2
	.dbline 220
;  OCR1AL = 0xF4;
	ldi R24,244
	out 0x2a,R24
	.dbline 221
;  OCR1BH = 0x00;
	out 0x29,R2
	.dbline 222
;  OCR1BL = 0xF4;
	out 0x28,R24
	.dbline 223
;  OCR1CH = 0x00;
	sts 121,R2
	.dbline 224
;  OCR1CL = 0xF4;
	sts 120,R24
	.dbline 225
;  ICR1H  = 0x00;
	out 0x27,R2
	.dbline 226
;  ICR1L  = 0xF4;
	out 0x26,R24
	.dbline 227
;  TCCR1A = 0x00;
	out 0x2f,R2
	.dbline 228
;  TCCR1B = 0x05; //start Timer
	ldi R24,5
	out 0x2e,R24
	.dbline -2
L69:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e spi_inith _spi_inith fV
	.even
_spi_inith::
	.dbline -1
	.dbline 232
; }
; 
; void spi_inith(void)
; {// DDRB|=(1<<0)|(1<<1)|(1<<2);//ss sck mosi
	.dbline 235
;   // PORTB|=(1<<0)|(1<<1)|(1<<2);
;    
;   DDRB|=(1<<0)|(1<<1)|(1<<2);
	in R24,0x17
	ori R24,7
	out 0x17,R24
	.dbline 236
;    PORTB|=(1<<0)|(1<<1)|(1<<2);
	in R24,0x18
	ori R24,7
	out 0x18,R24
	.dbline 238
;    
;   SPCR=0X70; //低先发
	ldi R24,112
	out 0xd,R24
	.dbline 240
;    // SPCR=0X50; //164高先发
;   SPSR|=(1<<SPI2X);//倍速度
	sbi 0xe,0
	.dbline -2
L70:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fI
;            ptr -> <dead>
;          temp1 -> <dead>
;           temp -> <dead>
;     discounthh -> R12,R13
;   flag_control -> R10
	.even
_main::
	.dbline -1
	.dbline 243
; }
; int main(void)
; {
	.dbline 246
; 	uchar temp;
; 	uint temp1;
; 	uint discounthh=0;
	clr R12
	clr R13
	.dbline 248
; 	uchar *ptr;
;     uchar flag_control=0;
	clr R10
	.dbline 249
; 	 CLI(); //disable all interrupts
	cli
	.dbline 250
; 	 port_init();
	xcall _port_init
	.dbline 251
; 	 spi_inith();
	xcall _spi_inith
	.dbline 252
;     FLAG=0;
	clr R2
	sts _FLAG,R2
	.dbline 253
; 	 ISDstatus = 0;
	sts _ISDstatus,R2
	.dbline 254
; 	 SPEAK = 1;
	ldi R24,1
	sts _SPEAK,R24
	.dbline 256
; //	 countwait = 0;
; 	init_USART();
	xcall _init_USART
	.dbline 257
; 	EICRA = 0x02; //extended ext ints   falling edge 
	ldi R24,2
	sts 106,R24
	.dbline 258
;  	EICRB = 0x00; //extended ext ints
	clr R2
	out 0x3a,R2
	.dbline 259
;  	EIMSK = 0x01;
	ldi R24,1
	out 0x39,R24
	.dbline 260
; 	SEI();	//使能全局中断
	sei
	.dbline 261
; 	waitms(10);	
	ldi R16,10
	ldi R17,0
	ldi R18,0
	ldi R19,0
	xcall _waitms
	.dbline 262
; 	light = RTEEPROMread(12);
	ldi R16,12
	ldi R17,0
	xcall _RTEEPROMread
	sts _light,R16
	.dbline 263
; 	if(light>56)light=56;
	ldi R24,56
	cp R24,R16
	brsh L72
	.dbline 263
	sts _light,R24
L72:
	.dbline 266
; 	//spi_init();
; 	///////////////////////////////////////
; 	FLAG=1;
	ldi R24,1
	sts _FLAG,R24
	.dbline 267
; 	receivebox[0]='A';
	ldi R24,65
	sts _receivebox,R24
	.dbline 269
; 	
; 	receivebox[1]=0XF0;
	ldi R24,240
	sts _receivebox+1,R24
	.dbline 270
; 	ISDstatus=0;
	clr R2
	sts _ISDstatus,R2
	.dbline 271
; 	SPEAK = 1;
	ldi R24,1
	sts _SPEAK,R24
	.dbline 276
; 	//for(temp1=0;temp1<3072;temp1++)
; 	//dis[temp1]=0xff;
; 	///////////////////////////////////////
; //	uart0_txd(0xaa);	
;    dip=0;
	sts _dip,R2
	xjmp L76
L75:
	.dbline 279
;    
; 	while (1)
;     { 
	.dbline 280
;       if(FLAG)//串口中断收到有效数据FLAG为1
	lds R2,_FLAG
	tst R2
	breq L78
	.dbline 281
;     	{
	.dbline 282
;           hanzi();    //为显示准备好点阵数据
	xcall _hanzi
	.dbline 283
; 	      FLAG = 0;
	clr R2
	sts _FLAG,R2
	.dbline 284
;     	}
L78:
	.dbline 285
; 	  ledscreendis(light);//显示屏扫描程序
	lds R16,_light
	xcall _ledscreendis
	.dbline 287
; 	   // ledscreendis(light);//显示屏扫描程序
; 	    if(flag_control==0)
	tst R10
	brne L80
	.dbline 288
; 		{dip++;
	.dbline 288
	lds R24,_dip
	subi R24,255    ; addi 1
	sts _dip,R24
	.dbline 289
; 		   if(dip==129)
	cpi R24,129
	brne L81
	.dbline 290
; 	       dip=128;
	ldi R24,128
	sts _dip,R24
	.dbline 291
; 		}
	xjmp L81
L80:
	.dbline 292
; 		 else if(flag_control==1)
	mov R24,R10
	cpi R24,1
	brne L84
	.dbline 293
; 		 {dip--;
	.dbline 293
	lds R24,_dip
	subi R24,1
	sts _dip,R24
	.dbline 294
; 		   if(dip==127)
	cpi R24,127
	brne L86
	.dbline 295
; 	       dip=128;
	ldi R24,128
	sts _dip,R24
L86:
	.dbline 296
; 		 }
L84:
L81:
	.dbline 300
; 	    
; 	 
; 	  
; 	   discounthh++;
	movw R24,R12
	adiw R24,1
	movw R12,R24
	.dbline 301
; 	   if(discounthh==700)
	cpi R24,188
	ldi R30,2
	cpc R25,R30
	brne L88
	.dbline 302
; 	   {uart0_txd(light);
	.dbline 302
	lds R16,_light
	xcall _uart0_txd
	.dbline 304
; 	    //u
; 		dip=0;
	clr R2
	sts _dip,R2
	.dbline 305
; 		 discounthh=0;
	clr R12
	clr R13
	.dbline 306
; 		 if(flag_control==0)flag_control=1;
	tst R10
	brne L90
	.dbline 306
	clr R10
	inc R10
	xjmp L91
L90:
	.dbline 307
; 		 else if(flag_control==1)flag_control=0;
	mov R24,R10
	cpi R24,1
	brne L92
	.dbline 307
	clr R10
L92:
L91:
	.dbline 308
; 	   }
L88:
	.dbline 310
; 	 
; 	  if(ISDstatus>0)
	clr R2
	lds R3,_ISDstatus
	cp R2,R3
	brlo X11
	xjmp L94
X11:
	.dbline 311
; 	  {
	.dbline 312
; 	  if(SPEAK==1)
	lds R24,_SPEAK
	cpi R24,1
	breq X12
	xjmp L96
X12:
	.dbline 313
; 	    { switch (ISDstatus)
	.dbline 313
	lds R14,_ISDstatus
	clr R15
	movw R24,R14
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	brne X13
	xjmp L133
X13:
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	brne X14
	xjmp L121
X14:
	cpi R24,3
	ldi R30,0
	cpc R25,R30
	breq L108
	cpi R24,4
	ldi R30,0
	cpc R25,R30
	breq L103
	cpi R24,5
	ldi R30,0
	cpc R25,R30
	breq L102
	cpi R24,6
	ldi R30,0
	cpc R25,R30
	breq L101
	xjmp L99
X9:
	.dbline 314
; 		  { case 0x06: 
L101:
	.dbline 315
; 		      ISDplay(34+ISDmoney[0]-0x30);
	lds R16,_ISDmoney
	subi R16,222    ; addi 34
	subi R16,48
	xcall _ISDplay
	.dbline 316
; 		      SPEAK=0;
	clr R2
	sts _SPEAK,R2
	.dbline 317
; 		     break;
	xjmp L99
L102:
	.dbline 319
; 		    case 0x05:
; 			ISDplay(20);
	ldi R16,20
	xcall _ISDplay
	.dbline 320
; 		      SPEAK=0;
	clr R2
	sts _SPEAK,R2
	.dbline 321
; 			 break;
	xjmp L99
L103:
	.dbline 323
; 			case 0x04:
; 			 if(ISDmoney[1]!=0x20)
	lds R24,_ISDmoney+1
	cpi R24,32
	brne X15
	xjmp L99
X15:
	.dbline 324
; 			 {ISDplay(82+ISDmoney[1]-0x30);
	.dbline 324
	mov R16,R24
	subi R16,174    ; addi 82
	subi R16,48
	xcall _ISDplay
	.dbline 325
; 		      SPEAK=0; 
	clr R2
	sts _SPEAK,R2
	.dbline 326
; 			  }
	.dbline 327
; 			  break;
	xjmp L99
L108:
	.dbline 329
; 			case 0x03:
; 			 if(ISDmoney[2]!=0x20)
	lds R24,_ISDmoney+2
	cpi R24,32
	brne X16
	xjmp L99
X16:
	.dbline 330
; 			 {if(ISDmoney[2]!=0x30)
	.dbline 330
	cpi R24,48
	breq L112
	.dbline 331
; 			  {ISDplay(73+ISDmoney[2]-0x30);SPEAK=0;}
	.dbline 331
	mov R16,R24
	subi R16,183    ; addi 73
	subi R16,48
	xcall _ISDplay
	.dbline 331
	clr R2
	sts _SPEAK,R2
	.dbline 331
	xjmp L99
L112:
	.dbline 333
; 			  else 
; 			  {if((ISDmoney[3]!=0x30)||(ISDmoney[4]!=0x30))
	.dbline 333
	lds R24,_ISDmoney+3
	cpi R24,48
	brne L120
	lds R24,_ISDmoney+4
	cpi R24,48
	breq L99
L120:
	.dbline 334
; 			   {ISDplay(54);SPEAK=0;}
	.dbline 334
	ldi R16,54
	xcall _ISDplay
	.dbline 334
	clr R2
	sts _SPEAK,R2
	.dbline 334
	.dbline 335
; 			  }
	.dbline 337
; 		       
; 			 }break;
	.dbline 337
	xjmp L99
L121:
	.dbline 339
; 			case 0x02:
; 			if(ISDmoney[3]!=0x20)
	lds R24,_ISDmoney+3
	cpi R24,32
	breq L99
	.dbline 340
; 			 {if(ISDmoney[3]!=0x30)
	.dbline 340
	cpi R24,48
	breq L125
	.dbline 341
; 			  {ISDplay(64+ISDmoney[3]-0x30); SPEAK=0;}
	.dbline 341
	mov R16,R24
	subi R16,192    ; addi 64
	subi R16,48
	xcall _ISDplay
	.dbline 341
	clr R2
	sts _SPEAK,R2
	.dbline 341
	xjmp L99
L125:
	.dbline 343
; 			  else 
; 			  {
	.dbline 344
; 			    if((ISDmoney[4]!=0x30)&&(ISDmoney[2]!=0x30))//hou mian  bu wei  0
	lds R24,_ISDmoney+4
	cpi R24,48
	breq L99
	lds R24,_ISDmoney+2
	cpi R24,48
	breq L99
	.dbline 345
; 			    {ISDplay(54); SPEAK=0;} // bo fang 0 
	.dbline 345
	ldi R16,54
	xcall _ISDplay
	.dbline 345
	clr R2
	sts _SPEAK,R2
	.dbline 345
	.dbline 346
; 			  }
	.dbline 348
; 		      
; 			 }
	.dbline 349
; 			 break;
	xjmp L99
L133:
	.dbline 351
; 			case 0x01:
; 			ISDplay(44+ISDmoney[4]-0x30);
	lds R16,_ISDmoney+4
	subi R16,212    ; addi 44
	subi R16,48
	xcall _ISDplay
	.dbline 352
; 		      SPEAK=0; break;
	clr R2
	sts _SPEAK,R2
	.dbline 352
	.dbline 353
; 			default : break;
L99:
	.dbline 355
; 		  }
; 	     ISDstatus--;
	lds R24,_ISDstatus
	subi R24,1
	sts _ISDstatus,R24
	.dbline 360
; 		  
; 	    
; 	    
; 	   
; 	     }
L96:
	.dbline 362
; 
;       }
L94:
	.dbline 363
L76:
	.dbline 278
	xjmp L75
X10:
	.dbline -2
L71:
	.dbline 0 ; func end
	ret
	.dbsym l ptr 1 pc
	.dbsym l temp1 1 i
	.dbsym l temp 1 c
	.dbsym r discounthh 12 i
	.dbsym r flag_control 10 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_uart.c
_flg::
	.blkb 1
	.dbsym e flg _flg c
_SPEAK::
	.blkb 1
	.dbsym e SPEAK _SPEAK c
_light::
	.blkb 1
	.dbsym e light _light c
_receivebox::
	.blkb 70
	.dbsym e receivebox _receivebox A[70:70]c
_RX_index::
	.blkb 1
	.dbsym e RX_index _RX_index c

⌨️ 快捷键说明

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