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

📄 ac15-1.s

📁 AVR学习资料
💻 S
📖 第 1 页 / 共 2 页
字号:
	nop
	.dbline 176
	nop
	.dbline 176
	nop
	.dbline 176
	nop
	.dbline 176
	nop
	.dbline 176
	nop
	.dbline 176
	nop
	.dbline 176
	nop
	.dbline 176
	.dbline 177
; SCL_0;Some_NOP();
	cbi 0x15,0
	.dbline 177
	.dbline 177
	nop
	.dbline 177
	nop
	.dbline 177
	nop
	.dbline 177
	nop
	.dbline 177
	nop
	.dbline 177
	nop
	.dbline 177
	nop
	.dbline 177
	nop
	.dbline 177
	.dbline -2
L46:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e shift8 _shift8 fV
;              j -> R20
;              i -> R22
;              a -> R16
	.even
_shift8::
	xcall push_gset2
	.dbline -1
	.dbline 181
; }					
; //*************写入8位子函数*************
; void shift8(char a)		
; {					
	.dbline 183
; uchar i,j;			
; DDRC=0x03;
	ldi R24,3
	out 0x14,R24
	.dbline 184
; com_data=a;			
	sts _com_data,R16
	.dbline 185
; for(i=0;i<8;i++)	
	clr R22
	xjmp L51
L48:
	.dbline 186
; {	
	.dbline 187
; j=com_data&0x80;
	lds R20,_com_data
	andi R20,128
	.dbline 188
; if(j==0)SDA_0;
	brne L52
	.dbline 188
	cbi 0x15,1
	xjmp L53
L52:
	.dbline 189
; else SDA_1;
	sbi 0x15,1
L53:
	.dbline 191
	sbi 0x15,0
	.dbline 191
	.dbline 191
	nop
	.dbline 191
	nop
	.dbline 191
	nop
	.dbline 191
	nop
	.dbline 191
	nop
	.dbline 191
	nop
	.dbline 191
	nop
	.dbline 191
	nop
	.dbline 191
	.dbline 192
	cbi 0x15,0
	.dbline 192
	.dbline 192
	nop
	.dbline 192
	nop
	.dbline 192
	nop
	.dbline 192
	nop
	.dbline 192
	nop
	.dbline 192
	nop
	.dbline 192
	nop
	.dbline 192
	nop
	.dbline 192
	.dbline 193
	lds R2,_com_data
	lsl R2
	sts _com_data,R2
	.dbline 194
L49:
	.dbline 185
	inc R22
L51:
	.dbline 185
	cpi R22,8
	brlo L48
	.dbline -2
L47:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r j 20 c
	.dbsym r i 22 c
	.dbsym r a 16 c
	.dbend
	.dbfunc e rd_24c01 _rd_24c01 fc
;        command -> R20
;              i -> R20
;              a -> R22
	.even
_rd_24c01::
	xcall push_gset2
	mov R22,R16
	.dbline -1
	.dbline 198
; 
; SCL_1;Some_NOP();
; SCL_0;Some_NOP();
; com_data=com_data<<1;		
; }					
; }					
; //**************读24C01A中a地址单元的数据************
; uchar rd_24c01(char a)		
; {					
	.dbline 200
; uchar i,command;		
; DDRC=0x03;
	ldi R24,3
	out 0x14,R24
	.dbline 201
; SDA_1;Some_NOP();
	sbi 0x15,1
	.dbline 201
	.dbline 201
	nop
	.dbline 201
	nop
	.dbline 201
	nop
	.dbline 201
	nop
	.dbline 201
	nop
	.dbline 201
	nop
	.dbline 201
	nop
	.dbline 201
	nop
	.dbline 201
	.dbline 202
; SCL_0;Some_NOP();
	cbi 0x15,0
	.dbline 202
	.dbline 202
	nop
	.dbline 202
	nop
	.dbline 202
	nop
	.dbline 202
	nop
	.dbline 202
	nop
	.dbline 202
	nop
	.dbline 202
	nop
	.dbline 202
	nop
	.dbline 202
	.dbline 203
; start();				
	xcall _start
	.dbline 204
; command=160;			
	ldi R20,160
	.dbline 205
; shift8(command);		
	mov R16,R20
	xcall _shift8
	.dbline 206
; ack();				
	xcall _ack
	.dbline 207
; shift8(a);			
	mov R16,R22
	xcall _shift8
	.dbline 208
; ack();				
	xcall _ack
	.dbline 209
; start();				
	xcall _start
	.dbline 210
; command=161;			
	ldi R20,161
	.dbline 211
; shift8(command);		
	mov R16,R20
	xcall _shift8
	.dbline 212
; ack();				
	xcall _ack
	.dbline 214
; 
; SDA_1;Some_NOP();	
	sbi 0x15,1
	.dbline 214
	.dbline 214
	nop
	.dbline 214
	nop
	.dbline 214
	nop
	.dbline 214
	nop
	.dbline 214
	nop
	.dbline 214
	nop
	.dbline 214
	nop
	.dbline 214
	nop
	.dbline 214
	.dbline 215
; for(i=0;i<8;i++)			
	clr R20
	xjmp L58
L55:
	.dbline 216
; {
	.dbline 217
; DDRC=0x01;				
	ldi R24,1
	out 0x14,R24
	.dbline 218
; com_data=com_data<<1;		
	lds R2,_com_data
	lsl R2
	sts _com_data,R2
	.dbline 219
; SCL_1;Some_NOP();	
	sbi 0x15,0
	.dbline 219
	.dbline 219
	nop
	.dbline 219
	nop
	.dbline 219
	nop
	.dbline 219
	nop
	.dbline 219
	nop
	.dbline 219
	nop
	.dbline 219
	nop
	.dbline 219
	nop
	.dbline 219
	.dbline 220
; if(PIN_SDA==0)com_data&=0xfe;
	sbic 0x13,1
	rjmp L59
	.dbline 220
	mov R24,R2
	andi R24,254
	sts _com_data,R24
	xjmp L60
L59:
	.dbline 221
; else com_data|=0x01;
	lds R24,_com_data
	ori R24,1
	sts _com_data,R24
L60:
	.dbline 222
	cbi 0x15,0
	.dbline 222
	.dbline 222
	nop
	.dbline 222
	nop
	.dbline 222
	nop
	.dbline 222
	nop
	.dbline 222
	nop
	.dbline 222
	nop
	.dbline 222
	nop
	.dbline 222
	nop
	.dbline 222
	.dbline 223
L56:
	.dbline 215
	inc R20
L58:
	.dbline 215
	cpi R20,8
	brlo L55
	.dbline 224
; SCL_0;Some_NOP();
; }					
; stop();				
	xcall _stop
	.dbline 225
; return(com_data);	
	lds R16,_com_data
	.dbline -2
L54:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r command 20 c
	.dbsym r i 20 c
	.dbsym r a 22 c
	.dbend
	.dbfunc e wr_24c01 _wr_24c01 fV
;        command -> R10
;              b -> R20
;              a -> R22
	.even
_wr_24c01::
	xcall push_gset3
	mov R20,R18
	mov R22,R16
	.dbline -1
	.dbline 229
; }					
; //********将RAM中b地址单元的数据写入24C01A中a地址单元中***********
; void wr_24c01(char a,char b)	
; {					
	.dbline 231
; uchar command;		
; DDRC=0x03;
	ldi R24,3
	out 0x14,R24
	.dbline 232
; SDA_1;Some_NOP();
	sbi 0x15,1
	.dbline 232
	.dbline 232
	nop
	.dbline 232
	nop
	.dbline 232
	nop
	.dbline 232
	nop
	.dbline 232
	nop
	.dbline 232
	nop
	.dbline 232
	nop
	.dbline 232
	nop
	.dbline 232
	.dbline 233
; SCL_0;Some_NOP();
	cbi 0x15,0
	.dbline 233
	.dbline 233
	nop
	.dbline 233
	nop
	.dbline 233
	nop
	.dbline 233
	nop
	.dbline 233
	nop
	.dbline 233
	nop
	.dbline 233
	nop
	.dbline 233
	nop
	.dbline 233
	.dbline 234
; start();				
	xcall _start
	.dbline 235
; command=160;			
	ldi R24,160
	mov R10,R24
	.dbline 236
; shift8(command);		
	mov R16,R24
	xcall _shift8
	.dbline 237
; ack();				
	xcall _ack
	.dbline 238
; shift8(a);				
	mov R16,R22
	xcall _shift8
	.dbline 239
; ack();				
	xcall _ack
	.dbline 240
; shift8(b);				
	mov R16,R20
	xcall _shift8
	.dbline 241
; ack();				
	xcall _ack
	.dbline 242
; stop();				
	xcall _stop
	.dbline 243
; Some_NOP();
	.dbline 243
	nop
	.dbline 243
	nop
	.dbline 243
	nop
	.dbline 243
	nop
	.dbline 243
	nop
	.dbline 243
	nop
	.dbline 243
	nop
	.dbline 243
	nop
	.dbline 243
	.dbline -2
L61:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r command 10 c
	.dbsym r b 20 c
	.dbsym r a 22 c
	.dbend
	.dbfunc e delay_iic _delay_iic fV
;              i -> R20,R21
;              n -> R16,R17
	.even
_delay_iic::
	xcall push_gset1
	.dbline -1
	.dbline 247
; }					
; //**************延时子函数***********
; void delay_iic(int n)		
; {					
	.dbline 249
	ldi R20,1
	ldi R21,0
	xjmp L66
L63:
	.dbline 249
	.dbline 249
	.dbline 249
L64:
	.dbline 249
	subi R20,255  ; offset = 1
	sbci R21,255
L66:
	.dbline 249
; int i;				
; for(i=1;i<n;i++){;}		
	cp R20,R16
	cpc R21,R17
	brlt L63
	.dbline -2
L62:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 I
	.dbsym r n 16 I
	.dbend
	.dbfunc e main _main fV
;        key_val -> R10
;         rd_val -> R22
;         wr_val -> R20
	.even
_main::
	sbiw R28,2
	.dbline -1
	.dbline 253
; }					
; //******************************************
; void main(void)				
; {
	.dbline 254
;  	 uchar key_val,wr_val=0,rd_val=0;	
	clr R20
	.dbline 254
	clr R22
	.dbline 255
; 	 port_init();
	xcall _port_init
	.dbline 256
;     Delay_nms(400);			
	ldi R16,400
	ldi R17,1
	xcall _Delay_nms
	.dbline 257
; 	InitLcd();				
	xcall _InitLcd
	.dbline 258
; 	LcdWriteCommand(0x01,1); 
	ldi R18,1
	ldi R16,1
	xcall _LcdWriteCommand
	.dbline 259
; 	LcdWriteCommand(0x0c,1);	
	ldi R18,1
	ldi R16,12
	xcall _LcdWriteCommand
	.dbline 260
; 	ePutstr(0,0,str0);  
	ldi R24,<_str0
	ldi R25,>_str0
	std y+1,R25
	std y+0,R24
	clr R18
	clr R16
	xcall _ePutstr
	.dbline 261
; 	Delay_nms(10);
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 262
; 	ePutstr(0,1,str1);   
	ldi R24,<_str1
	ldi R25,>_str1
	std y+1,R25
	std y+0,R24
	ldi R18,1
	clr R16
	xcall _ePutstr
	.dbline 263
; 	Delay_nms(10);
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	xjmp L69
L68:
	.dbline 266
; 	/********************************************/
; 		while(1)           
; 		{
	.dbline 267
; 		  DisplayOneChar(9,0,wr_val/100+0x30);
	ldi R17,100
	mov R16,R20
	xcall div8u
	mov R24,R16
	subi R24,208    ; addi 48
	std y+0,R24
	clr R18
	ldi R16,9
	xcall _DisplayOneChar
	.dbline 268
; 		   Delay_nms(10);
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 269
; 		   DisplayOneChar(10,0,(wr_val/10)%10+0x30); 
	ldi R17,10
	mov R16,R20
	xcall div8u
	ldi R17,10
	xcall mod8u
	mov R24,R16
	subi R24,208    ; addi 48
	std y+0,R24
	clr R18
	ldi R16,10
	xcall _DisplayOneChar
	.dbline 270
; 		   Delay_nms(10); 
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 271
; 		   DisplayOneChar(11,0,wr_val%10+0x30);	  
	ldi R17,10
	mov R16,R20
	xcall mod8u
	mov R24,R16
	subi R24,208    ; addi 48
	std y+0,R24
	clr R18
	ldi R16,11
	xcall _DisplayOneChar
	.dbline 272
; 		   Delay_nms(10); 
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 274
; 	   
; 		   DisplayOneChar(8,1,rd_val/100+0x30);	  
	ldi R17,100
	mov R16,R22
	xcall div8u
	mov R24,R16
	subi R24,208    ; addi 48
	std y+0,R24
	ldi R18,1
	ldi R16,8
	xcall _DisplayOneChar
	.dbline 275
; 		   Delay_nms(10); 
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 276
; 		   DisplayOneChar(9,1,(rd_val/10%10)+0x30);	 
	ldi R17,10
	mov R16,R22
	xcall div8u
	ldi R17,10
	xcall mod8u
	mov R24,R16
	subi R24,208    ; addi 48
	std y+0,R24
	ldi R18,1
	ldi R16,9
	xcall _DisplayOneChar
	.dbline 277
; 		   Delay_nms(10); 
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 278
; 		   DisplayOneChar(10,1,rd_val%10+0x30);	 
	ldi R17,10
	mov R16,R22
	xcall mod8u
	mov R24,R16
	subi R24,208    ; addi 48
	std y+0,R24
	ldi R18,1
	ldi R16,10
	xcall _DisplayOneChar
	.dbline 279
; 		   Delay_nms(10); 
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 281
; 		   
; 		   key_val=scan_key();
	xcall _scan_key
	mov R10,R16
	.dbline 282
; 		   switch(key_val)
	mov R12,R10
	clr R13
	movw R24,R12
	cpi R24,191
	ldi R30,0
	cpc R25,R30
	breq L80
	ldi R24,191
	cp R24,R12
	cpc R25,R13
	brlt L83
L82:
	movw R24,R12
	cpi R24,127
	ldi R30,0
	cpc R25,R30
	breq L81
	xjmp L72
L83:
	movw R24,R12
	cpi R24,223
	ldi R30,0
	cpc R25,R30
	breq L77
	cpi R24,223
	ldi R30,0
	cpc R25,R30
	brlt L72
L84:
	movw R24,R12
	cpi R24,239
	ldi R30,0
	cpc R25,R30
	breq L74
	xjmp L72
X0:
	.dbline 283
; 	   	   {				
L74:
	.dbline 284
; 	   	   	case 0xef:if(wr_val<255)wr_val++;break;
	cpi R20,255
	brsh L72
	.dbline 284
	inc R20
	.dbline 284
	xjmp L72
L77:
	.dbline 285
; 	   		case 0xdf:if(wr_val>0)wr_val--;break;
	clr R2
	cp R2,R20
	brsh L72
	.dbline 285
	dec R20
	.dbline 285
	xjmp L72
L80:
	.dbline 286
; 	   		case 0xbf:wr_24c01(10,wr_val);delay_iic(2500);
	mov R18,R20
	ldi R16,10
	xcall _wr_24c01
	.dbline 286
	ldi R16,2500
	ldi R17,9
	xcall _delay_iic
	.dbline 287
; 				 DisplayOneChar(15,0,0xef);break;	
	ldi R24,239
	std y+0,R24
	clr R18
	ldi R16,15
	xcall _DisplayOneChar
	.dbline 287
	xjmp L72
L81:
	.dbline 288
; 	   		case 0x7f:rd_val=rd_24c01(10);delay_iic(2500);
	ldi R16,10
	xcall _rd_24c01
	mov R22,R16
	.dbline 288
	ldi R16,2500
	ldi R17,9
	xcall _delay_iic
	.dbline 289
; 			     DisplayOneChar(15,1,0xef);break;	
	ldi R24,239
	std y+0,R24
	ldi R18,1
	ldi R16,15
	xcall _DisplayOneChar
	.dbline 289
	.dbline 290
; 	   		default:break;		
L72:
	.dbline 292
	ldi R16,200
	ldi R17,0
	xcall _Delay_nms
	.dbline 293
	ldi R24,32
	std y+0,R24
	clr R18
	ldi R16,15
	xcall _DisplayOneChar
	.dbline 293
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 294
	ldi R24,32
	std y+0,R24
	ldi R18,1
	ldi R16,15
	xcall _DisplayOneChar
	.dbline 294
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 296
L69:
	.dbline 265
	xjmp L68
X1:
	.dbline -2
L67:
	adiw R28,2
	.dbline 0 ; func end
	ret
	.dbsym r key_val 10 c
	.dbsym r rd_val 22 c
	.dbsym r wr_val 20 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile d:\MYDOCU~1\ac15-1\ac15-1.c
_cnt::
	.blkb 1
	.dbsym e cnt _cnt c
_com_data::
	.blkb 1
	.dbsym e com_data _com_data c

⌨️ 快捷键说明

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