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

📄 leson4.s

📁 rewtr y vruutuyukyuj
💻 S
字号:
	.module leson4.c
	.area text(rom, con, rel)
	.dbfile F:\lesson\leson4.c
	.dbfunc e WDT_off _WDT_off fV
	.even
_WDT_off::
	.dbline -1
	.dbline 10
; #include  <io2313v.h>
; #include  <macros.h>
; #define  uint   unsigned int 
; #define  uchar  unsigned char
; uchar   rdata;
; 
; 
; 
; void WDT_off(void)
; {
	.dbline 14
; //__disable_interrupt();
; //__watchdog_reset();
; //#asm("cli");
; SREG &= ~0x80;
	bclr 7
	.dbline 16
; // Clear WDRF in MCUSR 
; MCUSR &= ~0x08;
	in R24,0x34
	andi R24,247
	out 0x34,R24
	.dbline 19
; // Write logical one to WDCE and WDE
; // Keep old prescaler setting to prevent unintentional time-out
; WDTCSR |= 0x18;
	in R24,0x21
	ori R24,24
	out 0x21,R24
	.dbline 21
; // Turn off WDT 
; WDTCSR = 0x00;
	clr R2
	out 0x21,R2
	.dbline 22
; SREG |= 0x80;
	bset 7
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e USART_Init _USART_Init fV
;           baud -> R16,R17
	.even
_USART_Init::
	.dbline -1
	.dbline 28
; //#asm("sei");
; //__enable_interrupt();
; }    
; 
; void USART_Init(unsigned int  baud)
; {
	.dbline 30
; /* Set baud rate */
; UBRRH = (unsigned char)(baud>>8);
	mov R2,R16
	mov R3,R17
	mov R2,R3
	clr R3
	out 0x2,R2
	.dbline 31
; UBRRL = (unsigned char)baud;
	out 0x9,R16
	.dbline 33
; /* Enable receiver and transmitter */
; UCSRB = 0x18;
	ldi R24,24
	out 0xa,R24
	.dbline 35
; /* Set frame format: 8data, 2stop bit */
; UCSRC = 0x0E;
	ldi R24,14
	out 0x3,R24
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbsym r baud 16 i
	.dbend
	.dbfunc e USART_Transmit _USART_Transmit fV
;           data -> R16
	.even
_USART_Transmit::
	.dbline -1
	.dbline 41
; //U2X=0;
; }
; 
; 
; void USART_Transmit( unsigned char data )
; {
L4:
	.dbline 43
L5:
	.dbline 43
; /* Wait for empty transmit buffer */
; while ( !( UCSRA & (UCSRA&0x20)) );
	in R24,0xb
	andi R24,32
	in R2,0xb
	and R2,R24
	breq L4
	.dbline 45
; /* Put data into buffer, sends the data */
; UDR = data;		 		 	   	   		  			 //Transmit 8  data  bits
	out 0xc,R16
	.dbline -2
L3:
	.dbline 0 ; func end
	ret
	.dbsym r data 16 c
	.dbend
	.dbfunc e USART_Receive _USART_Receive fc
	.even
_USART_Receive::
	.dbline -1
	.dbline 64
; }
; 
; /*
; void USART_Transmit( unsigned int data )
; {
; //Wait for empty transmit buffer 
; while (!( UCSRA & (1<<UDRE)));
; // Copy 9th bit to TXB8 
; UCSRB &= ~(1<<TXB8);
; if ( data & 0x0100 )
; UCSRB |= (1<<TXB8);
; // Put data into buffer, sends the data 
; UDR = data;		 		 	   	   		  			//Transmit 9  data  bits
; }
; */
; 
; 
; unsigned char USART_Receive( void )
; {
L8:
	.dbline 66
L9:
	.dbline 66
; // Wait for data to be received 
; while ( !(UCSRA & (UCSRA&0x80)) );
	in R24,0xb
	andi R24,128
	in R2,0xb
	and R2,R24
	breq L8
	.dbline 68
; //Get and return received data from buffer 
; return UDR;		 		  	   			   			//Receive  8  data  bits
	in R16,0xc
	.dbline -2
L7:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e delayms _delayms fV
;              i -> R20,R21
;              j -> R22,R23
;             ms -> R16,R17
	.even
_delayms::
	rcall push_gset2
	.dbline -1
	.dbline 92
; }
; 
; /*
; unsigned int USART_Receive( void )
; {
; unsigned char status, resh, resl;
; // Wait for data to be received 
; while ( !(UCSRA & (1<<RXC)) );
; // Get status and 9th bit, then data 
; // from buffer 
; status = UCSRA;
; resh = UCSRB;
; resl = UDR;
; // If error, return -1 
; if ( status & (1<<FE)|(1<<DOR)|(1<<UPE) )
; return -1;
; // Filter the 9th bit, then return 
; resh = (resh >> 1) & 0x01;
; return ((resh << 8) | resl);	   		//Receive   9 data bits
; }
; */
; 
; void  delayms(uint ms)
; {
	.dbline 94
; uint i,j;
; for(i=0;i<ms;i++)
	clr R20
	clr R21
	rjmp L15
L12:
	.dbline 95
;   {
	.dbline 96
	clr R22
	clr R23
	rjmp L19
L16:
	.dbline 96
L17:
	.dbline 96
	subi R22,255  ; offset = 1
	sbci R23,255
L19:
	.dbline 96
	cpi R22,117
	ldi R30,4
	cpc R23,R30
	brlo L16
	.dbline 97
L13:
	.dbline 94
	subi R20,255  ; offset = 1
	sbci R21,255
L15:
	.dbline 94
	cp R20,R16
	cpc R21,R17
	brlo L12
	.dbline -2
L11:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r j 22 i
	.dbsym r ms 16 i
	.dbend
	.dbfunc e delayus _delayus fV
;              i -> R20,R21
;             us -> R16,R17
	.even
_delayus::
	rcall push_gset1
	.dbline -1
	.dbline 100
;   for(j=0;j<1141;j++);
;   }
; }
; void  delayus(uint us)
; {
	.dbline 104
; 
; uint i;
;  
;   for(i=0;i<us;i++)
	clr R20
	clr R21
	rjmp L24
L21:
	.dbline 105
	.dbline 106
	nop
	.dbline 106
	nop
	.dbline 106
	nop
	.dbline 106
	nop
	.dbline 107
L22:
	.dbline 104
	subi R20,255  ; offset = 1
	sbci R21,255
L24:
	.dbline 104
	cp R20,R16
	cpc R21,R17
	brlo L21
	.dbline -2
L20:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r us 16 i
	.dbend
	.dbfunc e senddata _senddata fV
;              i -> R20
;           data -> R16,R17
	.even
_senddata::
	rcall push_gset1
	.dbline -1
	.dbline 110
;   {
;   NOP();NOP();NOP();NOP();
;   }
; }
; void  senddata(uint data)               //  dm13a(led 驱动子程序)
; {
	.dbline 112
; uchar i;
; for(i=0;i<16;i++)
	clr R20
	rjmp L29
L26:
	.dbline 113
; {
	.dbline 114
; PORTD&=~0x10;	
	cbi 0x12,4
	.dbline 115
; NOP();
	nop
	.dbline 116
; if(data&0x8000)
	sbrs R17,7
	rjmp L30
	.dbline 117
; PORTD|=0x20; 	 	  					        //置位操作
	sbi 0x12,5
	rjmp L31
L30:
	.dbline 119
; else	
; PORTD&=~0x20;									//清零操作
	cbi 0x12,5
L31:
	.dbline 120
	nop
	.dbline 121
	sbi 0x12,4
	.dbline 122
	nop
	.dbline 123
	lsl R16
	rol R17
	.dbline 124
L27:
	.dbline 112
	inc R20
L29:
	.dbline 112
	cpi R20,16
	brlo L26
	.dbline 125
; NOP();
; PORTD|=0x10;
; NOP();
; data=data<<1;
; }		 		   	 	  				
; PORTD|=0x08;
	sbi 0x12,3
	.dbline 126
; NOP();
	nop
	.dbline 127
; PORTD&=~0x08;
	cbi 0x12,3
	.dbline -2
L25:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r data 16 i
	.dbend
	.dbfunc e main _main fV
;              m -> R20,R21
;              j -> y+0
;              n -> R10,R11
;              k -> R12,R13
;              i -> R14
;              h -> R22
	.even
_main::
	sbiw R28,2
	.dbline -1
	.dbline 134
; 
; //PORTD|=(1<<PORTD5);		 		   	 	  					//置位操作
; //PORTD&=~(1<<PORTD5);		 	   	 		   			  		//清零操作
; }
; 
; void main() 
; {
	.dbline 136
; 
; DDRD|=0x38;
	in R24,0x11
	ori R24,56
	out 0x11,R24
	.dbline 137
; DDRB|=0x40;
	sbi 0x17,6
	.dbline 139
; 
; WDT_off();
	rcall _WDT_off
	.dbline 141
; 
; USART_Init(9600);
	ldi R16,9600
	ldi R17,37
	rcall _USART_Init
	.dbline 143
; 
; PORTB&=0xBF;
	in R24,0x18
	andi R24,191
	out 0x18,R24
	.dbline 145
; 
; delayms(20);
	ldi R16,20
	ldi R17,0
	rcall _delayms
	.dbline 146
; delayms(20);
	ldi R16,20
	ldi R17,0
	rcall _delayms
	.dbline 147
; delayms(20);
	ldi R16,20
	ldi R17,0
	rcall _delayms
	.dbline 149
; 
; 	  USART_Receive();
	rcall _USART_Receive
	.dbline 150
; 	  rdata=UDR;
	in R2,0xc
	sts _rdata,R2
	.dbline 151
; 	  switch(rdata)
	mov R20,R2
	clr R21
	cpi R20,66
	ldi R30,0
	cpc R21,R30
	brne X2
	rjmp L39
X2:
	ldi R24,66
	ldi R25,0
	cp R24,R20
	cpc R25,R21
	brlt L45
L44:
	cpi R20,55
	ldi R30,0
	cpc R21,R30
	breq L37
	rjmp L48
L45:
	cpi R20,77
	ldi R30,0
	cpc R21,R30
	brne X3
	rjmp L41
X3:
	cpi R20,77
	ldi R30,0
	cpc R21,R30
	brge X4
	rjmp L48
X4:
L46:
	cpi R20,88
	ldi R30,0
	cpc R21,R30
	brne X5
	rjmp L43
X5:
	rjmp L48
X0:
	.dbline 152
; 	  {
	.dbline 153
; 	  case 55:goto start1;break;
	.dbline 153
	.dbline 154
; 	  case 66:goto start2;break;
	.dbline 154
	.dbline 155
; 	  case 77:goto start3;break;
	.dbline 155
	.dbline 156
; 	  case 88:goto start4;break;
	.dbline 156
L47:
	.dbline 159
; 	  }
; while(1)
; {      
	.dbline 162
; uchar i;
; uchar h;
; uint  j=0x0001;
	ldi R24,1
	ldi R25,0
	std y+1,R25
	std y+0,R24
	.dbline 163
; uint  k=0xffff;
	ldi R24,65535
	ldi R25,255
	mov R12,R24
	mov R13,R25
	.dbline 164
; uint  m=0x4000;
	ldi R20,16384
	ldi R21,64
	.dbline 165
; uint  n=0xffff;
	mov R10,R24
	mov R11,R25
L37:
	.dbline 171
; 
; 
; 
; 
; start1:		
; 		for(i=0;i<16;i++)
	clr R14
	rjmp L53
L50:
	.dbline 172
	.dbline 173
	ldd R16,y+0
	ldd R17,y+1
	rcall _senddata
	.dbline 174
	ldi R16,20
	ldi R17,0
	rcall _delayms
	.dbline 175
	ldd R0,y+0
	ldd R1,y+1
	lsl R0
	rol R1
	std y+1,R1
	std y+0,R0
	.dbline 176
	mov R24,R0
	mov R25,R1
	adiw R24,1
	std y+1,R25
	std y+0,R24
	.dbline 177
L51:
	.dbline 171
	inc R14
L53:
	.dbline 171
	mov R24,R14
	cpi R24,16
	brlo L50
L39:
	.dbline 181
; 		{
; 		senddata(j);
; 		delayms(20);                    //左到右逐渐亮
; 		j=j<<1;
; 		j=j+1;
; 		}
; 
; 
; start2:		
;     	for(i=0;i<15;i++)               //左到右逐渐灭
	clr R14
	rjmp L57
L54:
	.dbline 182
; 		{
	.dbline 183
; 		if((i>5)&&(i<10))
	ldi R24,5
	cp R24,R14
	brsh L58
	mov R24,R14
	cpi R24,10
	brsh L58
	.dbline 184
; 		{
	.dbline 185
; 		for(h=0;h<20;h++)
	clr R22
	rjmp L63
L60:
	.dbline 186
	.dbline 187
	mov R16,R12
	mov R17,R13
	rcall _senddata
	.dbline 188
	ldi R16,800
	ldi R17,3
	rcall _delayus
	.dbline 189
	clr R16
	clr R17
	rcall _senddata
	.dbline 190
	ldi R16,200
	ldi R17,0
	rcall _delayus
	.dbline 191
L61:
	.dbline 185
	inc R22
L63:
	.dbline 185
	cpi R22,20
	brlo L60
	.dbline 192
; 		{
; 		senddata(k);
; 		delayus(800);
; 		senddata(0x00);
; 		delayus(200);
; 		}
; 		k=k<<1;
	lsl R12
	rol R13
	.dbline 193
; 		}
	rjmp L59
L58:
	.dbline 194
; 		else if(i>10)
	ldi R24,10
	cp R24,R14
	brsh L64
	.dbline 195
; 		{
	.dbline 196
; 		for(h=0;h<20;h++)
	clr R22
	rjmp L69
L66:
	.dbline 197
	.dbline 198
	mov R16,R12
	mov R17,R13
	rcall _senddata
	.dbline 199
	ldi R16,600
	ldi R17,2
	rcall _delayus
	.dbline 200
	clr R16
	clr R17
	rcall _senddata
	.dbline 201
	ldi R16,400
	ldi R17,1
	rcall _delayus
	.dbline 202
L67:
	.dbline 196
	inc R22
L69:
	.dbline 196
	cpi R22,20
	brlo L66
	.dbline 203
; 		{
; 		senddata(k);
; 		delayus(600);
; 		senddata(0x00);
; 		delayus(400);
; 		}
; 		k=k<<1;
	lsl R12
	rol R13
	.dbline 205
; 		
; 		}
	rjmp L65
L64:
	.dbline 207
; 		else
; 		{
	.dbline 208
; 		senddata(k);
	mov R16,R12
	mov R17,R13
	rcall _senddata
	.dbline 209
; 		delayms(20);
	ldi R16,20
	ldi R17,0
	rcall _delayms
	.dbline 210
; 		k=k<<1;
	lsl R12
	rol R13
	.dbline 211
; 		}
L65:
L59:
	.dbline 212
L55:
	.dbline 181
	inc R14
L57:
	.dbline 181
	mov R24,R14
	cpi R24,15
	brsh X6
	rjmp L54
X6:
L41:
	.dbline 216
; 		}
; 		
; 
; start3:		
; 		for(i=0;i<16;i++)                //右到左逐渐亮
	clr R14
	rjmp L73
L70:
	.dbline 217
	.dbline 218
	mov R16,R20
	mov R17,R21
	rcall _senddata
	.dbline 219
	ldi R16,20
	ldi R17,0
	rcall _delayms
	.dbline 220
	lsr R21
	ror R20
	.dbline 221
	subi R20,0  ; offset = 16384
	sbci R21,192
	.dbline 222
L71:
	.dbline 216
	inc R14
L73:
	.dbline 216
	mov R24,R14
	cpi R24,16
	brlo L70
L43:
	.dbline 227
; 		{
; 		senddata(m);
; 		delayms(20);
; 		m=m>>1;
; 		m=m+0x4000;
; 		}
; 		
; 	
; start4:
; 		
; 		for(i=0;i<16;i++)                //右到左逐渐灭
	clr R14
	rjmp L77
L74:
	.dbline 228
; 		{
	.dbline 229
; 		if((i>5)&&(i<10))
	ldi R24,5
	cp R24,R14
	brsh L78
	mov R24,R14
	cpi R24,10
	brsh L78
	.dbline 230
; 		{
	.dbline 231
; 		for(h=0;h<20;h++)
	clr R22
	rjmp L83
L80:
	.dbline 232
	.dbline 233
	mov R16,R10
	mov R17,R11
	rcall _senddata
	.dbline 234
	ldi R16,800
	ldi R17,3
	rcall _delayus
	.dbline 235
	clr R16
	clr R17
	rcall _senddata
	.dbline 236
	ldi R16,200
	ldi R17,0
	rcall _delayus
	.dbline 237
L81:
	.dbline 231
	inc R22
L83:
	.dbline 231
	cpi R22,20
	brlo L80
	.dbline 238
; 		{
; 		senddata(n);
; 		delayus(800);
; 		senddata(0x00);
; 		delayus(200);
; 		}
; 		n=n>>1;
	lsr R11
	ror R10
	.dbline 239
; 		}
	rjmp L79
L78:
	.dbline 240
; 		else if(i>10)
	ldi R24,10
	cp R24,R14
	brsh L84
	.dbline 241
; 		{
	.dbline 242
; 		for(h=0;h<20;h++)
	clr R22
	rjmp L89
L86:
	.dbline 243
	.dbline 244
	mov R16,R10
	mov R17,R11
	rcall _senddata
	.dbline 245
	ldi R16,600
	ldi R17,2
	rcall _delayus
	.dbline 246
	clr R16
	clr R17
	rcall _senddata
	.dbline 247
	ldi R16,400
	ldi R17,1
	rcall _delayus
	.dbline 248
L87:
	.dbline 242
	inc R22
L89:
	.dbline 242
	cpi R22,20
	brlo L86
	.dbline 249
; 		{
; 		senddata(n);
; 		delayus(600);
; 		senddata(0x00);
; 		delayus(400);
; 		}
; 		n=n>>1;
	lsr R11
	ror R10
	.dbline 251
; 		
; 		}
	rjmp L85
L84:
	.dbline 253
; 		else
; 		{
	.dbline 254
; 		senddata(n);
	mov R16,R10
	mov R17,R11
	rcall _senddata
	.dbline 255
; 		delayms(20);
	ldi R16,20
	ldi R17,0
	rcall _delayms
	.dbline 256
; 		n=n>>1;
	lsr R11
	ror R10
	.dbline 257
; 		}
L85:
L79:
	.dbline 259
L75:
	.dbline 227
	inc R14
L77:
	.dbline 227
	mov R24,R14
	cpi R24,16
	brsh X7
	rjmp L74
X7:
	.dbline 261
L48:
	.dbline 158
	rjmp L47
X1:
	.dbline -2
L32:
	adiw R28,2
	.dbline 0 ; func end
	ret
	.dbsym r m 20 i
	.dbsym l j 0 i
	.dbsym r n 10 i
	.dbsym r k 12 i
	.dbsym r i 14 c
	.dbsym r h 22 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile F:\lesson\leson4.c
_rdata::
	.blkb 1
	.dbsym e rdata _rdata c

⌨️ 快捷键说明

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