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

📄 jifeng_jieshou.s

📁 非常适合实用的无线射频芯片NRF905
💻 S
📖 第 1 页 / 共 4 页
字号:
	.dbline 374
	cbi 0x15,4
	.dbline 374
	.dbline 375
L52:
	.dbline 359
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 359
	cpi R20,8
	ldi R30,0
	cpc R21,R30
	brlt L51
	.dbline 376
; 		LCD_Delay(1);
; 		temp=temp<<1;
; 		Hign_LCD_SCL;
; 		LCD_Delay(1);
; 		Low_LCD_SCL;
; 	}
; 	Low_LCD_RS;
	cbi 0x15,5
	.dbline 376
	.dbline 377
; 	Hign_LCD_CS;    //先cs置0,然后把数据都送到口上准备好(产生上升沿),最后才置片选cs为1	
	sbi 0x15,7
	.dbline 377
	.dbline -2
L50:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 I
	.dbsym r temp 22 I
	.dbsym r DATA 20 c
	.dbend
	.dbfunc e Lcd_Write_command _Lcd_Write_command fV
;              i -> R20
;           temp -> R22
;        COMMAND -> R20
	.even
_Lcd_Write_command::
	rcall push_gset2
	mov R20,R16
	.dbline -1
	.dbline 381
; }
; //---------------------------------LCD写命令函数--------------------------------
; void Lcd_Write_command(uchar COMMAND)
; {
	.dbline 383
; 	uchar i,temp;
; 	temp = COMMAND;
	mov R22,R20
	.dbline 384
; 	Hign_LCD_RS;		
	sbi 0x15,5
	.dbline 384
	.dbline 385
; 	Hign_LCD_CS;
	sbi 0x15,7
	.dbline 385
	.dbline 386
; 	Hign_LCD_SCL;
	sbi 0x15,4
	.dbline 386
	.dbline 387
; 	LCD_Delay(1);
	ldi R16,1
	ldi R17,0
	rcall _LCD_Delay
	.dbline 388
; 	Low_LCD_RS;		//RS=0 为写命令
	cbi 0x15,5
	.dbline 388
	.dbline 389
; 	Low_LCD_CS;
	cbi 0x15,7
	.dbline 389
	.dbline 390
; 	Low_LCD_SCL;
	cbi 0x15,4
	.dbline 390
	.dbline 391
; 	LCD_Delay(1);
	ldi R16,1
	ldi R17,0
	rcall _LCD_Delay
	.dbline 392
; 	for(i=0;i<8;i++)
	clr R20
	rjmp L61
L58:
	.dbline 393
; 	{
	.dbline 394
; 		Low_LCD_SCL;
	cbi 0x15,4
	.dbline 394
	.dbline 395
; 		if(temp&0x80)
	sbrs R22,7
	rjmp L62
	.dbline 396
; 		{
	.dbline 397
; 		Hign_LCD_SI;
	sbi 0x15,3
	.dbline 397
	.dbline 398
; 		}
	rjmp L63
L62:
	.dbline 400
; 		else
; 		{
	.dbline 401
; 		Low_LCD_SI;
	cbi 0x15,3
	.dbline 401
	.dbline 402
; 		}
L63:
	.dbline 403
	lsl R22
	.dbline 404
	ldi R16,1
	ldi R17,0
	rcall _LCD_Delay
	.dbline 405
	sbi 0x15,4
	.dbline 405
	.dbline 406
	ldi R16,1
	ldi R17,0
	rcall _LCD_Delay
	.dbline 407
	cbi 0x15,4
	.dbline 407
	.dbline 408
L59:
	.dbline 392
	inc R20
L61:
	.dbline 392
	cpi R20,8
	brlo L58
	.dbline 409
; 		temp=temp<<1;	
; 		LCD_Delay(1);
; 		Hign_LCD_SCL;
; 		LCD_Delay(1);
; 		Low_LCD_SCL;
; 	}
; 	Hign_LCD_RS;
	sbi 0x15,5
	.dbline 409
	.dbline 410
; 	Hign_LCD_CS;      //用了temp后,原来的command的就不会变了
	sbi 0x15,7
	.dbline 410
	.dbline -2
L57:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r temp 22 c
	.dbsym r COMMAND 20 c
	.dbend
	.dbfunc e Lcd_CURSOR _Lcd_CURSOR fV
;        add_col -> R20
;       add_page -> R22
	.even
_Lcd_CURSOR::
	rcall push_gset2
	mov R20,R18
	mov R22,R16
	.dbline -1
	.dbline 414
; }
; //-------------------------------LCD光标函数------------------------------------
; void Lcd_CURSOR(uchar add_page,uchar add_col)               //光标定位	//8页(<0fh), 且128列(>0fh)
; {                                                           //每页8行
	.dbline 415
; 	Lcd_Write_command(0xB0+(add_page&0x0f));     //+号为合成为一个字节(其实就是或)B0+0x
	mov R16,R22
	andi R16,15
	subi R16,80    ; addi 176
	rcall _Lcd_Write_command
	.dbline 416
; 	Lcd_Write_command(0x10|(add_col>>4)); //Set column address MSB(10+xx)即Y7 Y6 Y5 Y4
	mov R16,R20
	swap R16
	andi R16,#0x0F
	ori R16,16
	rcall _Lcd_Write_command
	.dbline 417
; 	Lcd_Write_command(add_col&0x0f);      //Set column address LSB(00+xx)即Y3 Y2 Y1 Y0
	mov R16,R20
	andi R16,15
	rcall _Lcd_Write_command
	.dbline -2
L64:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r add_col 20 c
	.dbsym r add_page 22 c
	.dbend
	.dbfunc e Lcd_Clear _Lcd_Clear fV
;              i -> R20
;              j -> R22
	.even
_Lcd_Clear::
	rcall push_gset2
	.dbline -1
	.dbline 421
; }
; //-------------------------------LCD清屏函数------------------------------------
; void Lcd_Clear(void)                         //128x64字节,实际中一般要多
; {	
	.dbline 423
; 	uchar i,j;
; 	for(i=0;i<9;i++)                     //>8页
	clr R20
	rjmp L69
L66:
	.dbline 424
; 	{
	.dbline 425
; 		 Lcd_CURSOR(i,0);		
	clr R18
	mov R16,R20
	rcall _Lcd_CURSOR
	.dbline 426
; 		 for(j=0;j<132;j++)          //>128列
	clr R22
	rjmp L73
L70:
	.dbline 427
	.dbline 428
	mov R18,R22
	mov R16,R20
	rcall _Lcd_CURSOR
	.dbline 429
	clr R16
	rcall _Lcd_Write_Data
	.dbline 430
L71:
	.dbline 426
	inc R22
L73:
	.dbline 426
	cpi R22,132
	brlo L70
	.dbline 431
L67:
	.dbline 423
	inc R20
L69:
	.dbline 423
	cpi R20,9
	brlo L66
	.dbline -2
L65:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r j 22 c
	.dbend
	.dbfunc e Test_LCD _Test_LCD fV
;              i -> R20
;              j -> R22
	.even
_Test_LCD::
	rcall push_gset2
	.dbline -1
	.dbline 435
; 		 {	
; 		 	 Lcd_CURSOR(i,j);      //列在变,光标也在不停的换列
; 		 	 Lcd_Write_Data(0); //定好一页后,再一列一列的写00h,列在变
; 		 }		
; 	}
; }	
; //--------------------------------LCD测试---------------------------------------
; void Test_LCD(void)
; {	
	.dbline 437
; 	uchar i,j;
; 	for(i=0xB0;i<0xB8;i++)		//B0-B8共8页
	ldi R20,176
	rjmp L78
L75:
	.dbline 438
; 	{
	.dbline 439
; 		Lcd_Write_command(i);     //+号为合成为一个字节(其实就是或)B0+0x
	mov R16,R20
	rcall _Lcd_Write_command
	.dbline 440
; 		Lcd_Write_command(0x10); //Set column address MSB(10+xx)即Y7 Y6 Y5 Y4
	ldi R16,16
	rcall _Lcd_Write_command
	.dbline 441
; 		Lcd_Write_command(0x01); 
	ldi R16,1
	rcall _Lcd_Write_command
	.dbline 442
; 		 Lcd_CURSOR(i,0);
	clr R18
	mov R16,R20
	rcall _Lcd_CURSOR
	.dbline 443
; 		 for(j=0;j<132;j++)
	clr R22
	rjmp L82
L79:
	.dbline 444
	.dbline 445
	mov R18,R22
	mov R16,R20
	rcall _Lcd_CURSOR
	.dbline 446
	ldi R16,1
	rcall _Lcd_Write_Data
	.dbline 447
L80:
	.dbline 443
	inc R22
L82:
	.dbline 443
	cpi R22,132
	brlo L79
	.dbline 449
L76:
	.dbline 437
	inc R20
L78:
	.dbline 437
	cpi R20,184
	brlo L75
	.dbline -2
L74:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r j 22 c
	.dbend
	.dbfunc e dis_1616hz _dis_1616hz fV
;              i -> R20
;              j -> R14
;             hz -> R22,R23
;            row -> R10
;             x2 -> R12
;             x1 -> R14
	.even
_dis_1616hz::
	rcall push_gset5
	mov R12,R18
	mov R14,R16
	ldd R10,y+10
	ldd R22,y+12
	ldd R23,y+13
	.dbline -1
	.dbline 493
; 		 {	                        //每读写一次,列会自动加1
; 		 	 Lcd_CURSOR(i,j);       //列在变,光标也在不停的换列,重新进行定位
; 		 	 Lcd_Write_Data(0x01);  //检测写进f0h???4点亮4点暗
; 		 }
; 		 		
; 	}
; }
; /*
; //------------------------------------------------------------------------------
; void dis_biankuang()			//边框设计
; {	
; 	uchar i,j,k;
; 	for(i=0xB0;i<0xB8;i++)		//2页16行
; 	{
; 		Lcd_Write_command(i);     	//+号为合成为一个字节(其实就是或)B0+0x
; 		Lcd_Write_command(0x10); 	//Set column address MSB(10+xx)即Y7 Y6 Y5 Y4
; 		Lcd_Write_command(0x01); 
; 		Lcd_CURSOR(i,0);
; 		 for(j=0;j<132;j++)
; 		 {	                        //每读写一次,列会自动加1
; 		 	 Lcd_CURSOR(i,j);       //改变列位置,列在变,光标也在不停的换列,重新进行定位
; 		 	 Lcd_Write_Data(0x03);  //检测写进f0h???4点亮4点暗
; 		 }
; 		 for(k=0xB0;k<0xB7;k++)
; 		 {
; 		 for(j=2;j<6;j++)
; 		 {
; 		  Lcd_CURSOR(k,j);       //改变列位置,列在变,光标也在不停的换列,重新进行定位
; 		  Lcd_Write_Data(0xff);
; 		 }
; 		 for(j=130;j<132;j++)
; 		 {
; 		  Lcd_CURSOR(k,j);       //改变列位置,列在变,光标也在不停的换列,重新进行定位
; 		  Lcd_Write_Data(0xff);
; 		 }
; 		 }
; 		 i=i+7;
; 		 for(j=0;j<132;j++)      
; 		 {	                        //每读写一次,列会自动加1
; 		 	 Lcd_CURSOR(i,j);       //列在变,光标也在不停的换列,重新进行定位
; 		 	 Lcd_Write_Data(0x03);  //检测写进f0h???4点亮4点暗
; 		 }
; 
; 			
; 	}
; }
; */
; //------------------------------16*16汉字显示-----------------------------------
; void dis_1616hz(uchar x1,uchar x2,uchar row,const uchar hz[])			//16*16
; {	
	.dbline 495
; 	uchar i,j;
; 	for(i=x1;i<x2;i++)		//2页16行
	mov R20,R14
	rjmp L87
L84:
	.dbline 496
; 	{
	.dbline 497
; 		Lcd_Write_command(i);     	//+号为合成为一个字节(其实就是或)B0+0x
	mov R16,R20
	rcall _Lcd_Write_command
	.dbline 498
; 		Lcd_Write_command(0x10); 	//Set column address MSB(10+xx)即Y7 Y6 Y5 Y4
	ldi R16,16
	rcall _Lcd_Write_command
	.dbline 499
; 		Lcd_Write_command(0x01); 
	ldi R16,1
	rcall _Lcd_Write_command
	.dbline 500
; 		Lcd_CURSOR(i,0);
	clr R18
	mov R16,R20
	rcall _Lcd_CURSOR
	.dbline 501
; 		 for(j=0;j<16;j++)
	clr R14
	rjmp L91
L88:
	.dbline 502
	.dbline 503
	mov R18,R14
	add R18,R10
	mov R16,R20
	rcall _Lcd_CURSOR
	.dbline 504
	mov R2,R14
	clr R3
	add R2,R22
	adc R3,R23
	mov R30,R2
	mov R31,R3
	lpm
	mov R16,R0
	rcall _Lcd_Write_Data
	.dbline 505
L89:
	.dbline 501
	inc R14
L91:
	.dbline 501
	mov R24,R14
	cpi R24,16
	brlo L88
	.dbline 506
; 		 {	                        //每读写一次,列会自动加1
; 		 	 Lcd_CURSOR(i,j+row);       //改变列位置,列在变,光标也在不停的换列,重新进行定位
; 		 	 Lcd_Write_Data(hz[j]);  //检测写进f0h???4点亮4点暗
; 		 }
; 		 i++;
	inc R20
	.dbline 507
; 		 for(j=0;j<16;j++)      
	clr R14
	rjmp L95
L92:
	.dbline 508
	.dbline 509
	mov R18,R14
	add R18,R10
	mov R16,R20
	rcall _Lcd_CURSOR
	.dbline 510
	mov R24,R14
	clr R25
	add R24,R22
	adc R25,R23
	adiw R24,16
	mov R30,R24
	mov R31,R25
	lpm
	mov R16,R0
	rcall _Lcd_Write_Data
	.dbline 511
L93:
	.dbline 507
	inc R14
L95:
	.dbline 507
	mov R24,R14
	cpi R24,16
	brlo L92
	.dbline 512
L85:
	.dbline 495
	inc R20
L87:
	.dbline 495
	cp R20,R12
	brsh X2
	rjmp L84
X2:
	.dbline -2
L83:
	rcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r j 14 c
	.dbsym r hz 22 pkc
	.dbsym r row 10 c
	.dbsym r x2 12 c
	.dbsym r x1 14 c
	.dbend
	.dbfunc e dis_168hz _dis_168hz fV
;              b -> R20
;              a -> R22
;              j -> R10
;             hz -> R12,R13
;            row -> R14
;             x1 -> R20
	.even
_dis_168hz::
	rcall push_gset5
	mov R14,R18
	mov R20,R16
	ldd R12,y+10
	ldd R13,y+11
	.dbline -1
	.dbline 546
; 		 {	                        //每读写一次,列会自动加1
; 		 	 Lcd_CURSOR(i,j+row);       //列在变,光标也在不停的换列,重新进行定位
; 		 	 Lcd_Write_Data(hz[j+16]);  //检测写进f0h???4点亮4点暗
; 		 }		
; 	}
; }
; /*------------------------------------------------------------------------------
; void Dis16x16(uchar add_page, uchar add_col,const uchar *pHZ,uchar state)
; {
;     uchar i;
;     Lcd_CURSOR(add_page, add_col);
;     for(i=0;i<16;i++) 
;     {                                                //一个汉字2行,16列,32个字节
;     	if(state)                                    //state(选亮,黑)
;     	{
;     		Lcd_Write_Data(pHZ[i]);              //光标定位后沿着行开始写16列的字模数据??????
;     	}
;     //	else
;     //	{
;     	    	Lcd_Write_Data(~pHZ[i]);	    //如果列变,光标也会不停的换列,这里光标只换页不换列
;     //	}                                           //那还是一列一列的写吗????(写一次会自动加1列)
;      // }                                             //而清时在不停的换列
;     Lcd_CURSOR(add_page-1, add_col);                //加或减都行,只是取模方向不同
;     for(;i<32;i++)
;     {  
;     	if(state)
;     	{
;     		Lcd_Write_Data(pHZ[i]);
;     	}
;     //	else
;     //	{
;     	//	Lcd_Write_Data(~pHZ[i]);
;     	}
;     }
; }
; */
; //-----------------------------16*8点阵显示-------------------------------------
; void dis_168hz(uchar x1,uchar row,const uchar hz[])			//16*16
; {	
	.dbline 548
; 	uchar a,b,j;
; 	a=x1;
	mov R22,R20
	.dbline 549
; 	b=x1+1;
	subi R20,255    ; addi 1
	.dbline 550
; 		Lcd_Write_command(a);     	//+号为合成为一个字节(其实就是或)B0+0x
	mov R16,R22
	rcall _Lcd_Write_command
	.dbline 551
; 		Lcd_Write_command(0x10); 	//Set column address MSB(10+xx)即Y7 Y6 Y5 Y4
	ldi R16,16
	rcall _Lcd_Write_command
	.dbline 552
; 		Lcd_Write_command(0x01); 
	ldi R16,1
	rcall _Lcd_Write_command
	.dbline 553
; 		Lcd_CURSOR(a,0);
	clr R18
	mov R16,R22
	rcall _Lcd_CURSOR
	.dbline 554
; 		 for(j=0;j<8;j++)
	clr R10
	rjmp L100
L97:
	.dbline 555
	.dbline 556
	mov R18,R10
	add R18,R14
	mov R16,R22
	rcall _Lcd_CURSOR
	.dbline 557
	mov R2,R10
	clr R3
	add R2,R12
	adc R3,R13
	mov R30,R2
	mov R31,R3
	lpm
	mov R16,R0
	rcall _Lcd_Write_Data
	.dbline 558
L98:
	.dbline 554
	inc R10
L100:
	.dbline 554
	mov R24,R10
	cpi R24,8
	brlo L97
	.dbline 559
; 		 {	                        //每读写一次,列会自动加1
; 		 	 Lcd_CURSOR(a,j+row);       //改变列位置,列在变,光标也在不停的换列,重新进行定位
; 		 	 Lcd_Write_Data(hz[j]);  //检测写进f0h???4点亮4点暗
; 		 }
; 		 Lcd_Write_command(b);     	//+号为合成为一个字节(其实就是或)B0+0x
	mov R16,R20
	rcall _Lcd_Write_command
	.dbline 560
; 		Lcd_Write_command(0x10); 	//Set column address MSB(10+xx)即Y7 Y6 Y5 Y4
	ldi R16,16
	rcall _Lcd_Write_command
	.dbline 561
; 		Lcd_Write_command(0x01); 
	ldi R16,1
	rcall _Lcd_Write_command
	.dbline 562
; 		Lcd_CURSOR(b,0);
	clr R18
	mov R16,R20
	rcall _Lcd_CURSOR
	.dbline 563
; 		 for(j=0;j<8;j++)      
	clr R10
	rjmp L104
L101:
	.dbline 564
	.dbline 565
	mov R18,R10
	add R18,R14
	mov R16,R20
	rcall _Lcd_CURSOR
	.dbline 566
	mov R24,R10
	clr R25
	add R24,R12
	adc R25,R13
	adiw R24,8
	mov R30,R24

⌨️ 快捷键说明

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