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

📄 co0511.s

📁 用m128调试CO0511液晶的源代码!
💻 S
📖 第 1 页 / 共 3 页
字号:
L57:
	.dbline 359
;   {
	.dbline 360
;   w_com(page);   /*设置页*/
	mov R16,R20
	xcall _w_com
	.dbline 361
;   w_com(0x10);   /*设置列号*/
	ldi R16,16
	xcall _w_com
	.dbline 362
;   w_com(0x00);
	clr R16
	xcall _w_com
	.dbline 363
;   for(j=0;j<128;j++)
	clr R10
	xjmp L64
L61:
	.dbline 364
	.dbline 365
	clr R16
	xcall _w_data
	.dbline 366
L62:
	.dbline 363
	inc R10
L64:
	.dbline 363
	mov R24,R10
	cpi R24,128
	brlo L61
	.dbline 367
	inc R20
	.dbline 368
L58:
	.dbline 358
	inc R22
L60:
	.dbline 358
	cpi R22,8
	brlo L57
	.dbline -2
	.dbline 369
;   {
;   w_data(0x00);
;   }
;   page++;
;   }
; }
L56:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r page 20 c
	.dbsym r i 22 c
	.dbsym r j 10 c
	.dbend
	.dbfunc e init_lcd _init_lcd fV
;              i -> R20
	.even
_init_lcd::
	xcall push_gset1
	.dbline -1
	.dbline 374
; /************************************************/
; //液晶初始化
; /************************************************/
; void init_lcd (void)
; {
	.dbline 375
;   uchar i=0;
	clr R20
	.dbline 376
;   set_res(0);
	clr R16
	xcall _set_res
	.dbline 377
;   delay_nms(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_nms
	.dbline 378
;   set_res(1);
	ldi R16,1
	xcall _set_res
	.dbline 379
;   delay_nms(100);          /*复位液晶*/
	ldi R16,100
	ldi R17,0
	xcall _delay_nms
	.dbline 380
;   w_com(0xae);  /*Display ON/OFF 0xae:OFF 0xaf:ON*/
	ldi R16,174
	xcall _w_com
	.dbline 381
;   w_com(0xa2);  /*LCD bias set 0xa2:1/9 0xa3:1/7*/
	ldi R16,162
	xcall _w_com
	.dbline 382
;   w_com(0xa0);  /*ADC select 0xa0:0-127 0xa1:127-0*/
	ldi R16,160
	xcall _w_com
	.dbline 383
;   w_com(0xc8);
	ldi R16,200
	xcall _w_com
	.dbline 384
;   w_com(0xa6);  /*Display 0xa6:normal 0xa7:reverse*/
	ldi R16,166
	xcall _w_com
	.dbline 385
;   w_com(0x2a);  /* V0 Voltage Regulator Internal Resistor Ration Set*/
	ldi R16,42
	xcall _w_com
	.dbline 386
;   w_com(0x81);  /*Electronic Volume*/
	ldi R16,129
	xcall _w_com
	.dbline 387
;   w_com(0x2a);
	ldi R16,42
	xcall _w_com
	.dbline 388
;   w_com(0x2f);  /*power control*/
	ldi R16,47
	xcall _w_com
	.dbline 389
;   delay_nms(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_nms
	.dbline -2
	.dbline 390
; }
L65:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend
	.dbfunc e img_disp _img_disp fV
;           page -> R20
;              i -> R22
;              j -> R12
;          point -> R10,R11
	.even
_img_disp::
	xcall push_gset4
	movw R10,R16
	.dbline -1
	.dbline 395
; /**********************************************/
; //图形显示
; /*********************************************/
; void img_disp(const uchar *point)
; { uchar i,j,page;
	.dbline 396
;   page=0xb7;
	ldi R20,183
	.dbline 397
;   w_com(0xaf);
	ldi R16,175
	xcall _w_com
	.dbline 398
;   for(i=0;i<8;i++)
	clr R22
	xjmp L70
L67:
	.dbline 399
;   {
	.dbline 400
;   w_com(page);   /*设置页*/
	mov R16,R20
	xcall _w_com
	.dbline 401
;   w_com(0x10);   /*设置列号*/
	ldi R16,16
	xcall _w_com
	.dbline 402
;   w_com(0x10);
	ldi R16,16
	xcall _w_com
	.dbline 403
;   for(j=0;j<128;j++)
	clr R12
	xjmp L74
L71:
	.dbline 404
	.dbline 405
	movw R2,R10
	movw R24,R2
	adiw R24,1
	movw R10,R24
	movw R30,R2
	lpm R16,Z
	xcall _w_data
	.dbline 406
L72:
	.dbline 403
	inc R12
L74:
	.dbline 403
	mov R24,R12
	cpi R24,128
	brlo L71
	.dbline 407
	dec R20
	.dbline 408
L68:
	.dbline 398
	inc R22
L70:
	.dbline 398
	cpi R22,8
	brlo L67
	.dbline 409
;   {
;   w_data(*(point++));
;   }
;   page--;
;   }
;   w_com(0xaf);  /*Display ON*/
	ldi R16,175
	xcall _w_com
	.dbline -2
	.dbline 410
; }
L66:
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r page 20 c
	.dbsym r i 22 c
	.dbsym r j 12 c
	.dbsym r point 10 pkc
	.dbend
	.dbfunc e init_m16 _init_m16 fV
	.even
_init_m16::
	.dbline -1
	.dbline 429
; /*****************************************/
; /****************************************
; void text_disp()
; {
; uchar i,j,page;
;   page=0xb0;
;   w_com(0xaf);
;   w_com(page);   /*设置页
;   //w_com(0x10);   /*设置列号
;   //w_com(0x01);
;   w_data(0xff);
;   //page--;
;   w_com(0xaf);  /*Display ON
; }
; /****************************************/
; //16的初始化
; /****************************************/
; void init_m16()
; {    DDRA=0Xff;
	.dbline 429
	ldi R24,255
	out 0x1a,R24
	.dbline 430
; 	 DDRB|=0Xf9;
	in R24,0x17
	ori R24,249
	out 0x17,R24
	.dbline 431
; 	 DDRB&=0Xf9;
	in R24,0x17
	andi R24,249
	out 0x17,R24
	.dbline 432
; 	 DDRC=0Xff;
	ldi R24,255
	out 0x14,R24
	.dbline 433
; 	 DDRD=0Xff;
	out 0x11,R24
	.dbline 434
; 	 DDRE=0Xff;
	out 0x2,R24
	.dbline 435
; 	 DDRF=0Xff;
	sts 97,R24
	.dbline 436
; 	 PORTA=0xff;
	out 0x1b,R24
	.dbline 438
; 	 //PORTB=0Xff;
; 	 PORTC=0xff;
	out 0x15,R24
	.dbline 439
; 	 PORTD=0xff;
	out 0x12,R24
	.dbline 440
; 	 PORTE=0xff;
	out 0x3,R24
	.dbline 441
; 	 PORTF=0xff;
	sts 98,R24
	.dbline -2
	.dbline 443
; 	
; }
L75:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e max195_inital _max195_inital fV
	.even
_max195_inital::
	.dbline -1
	.dbline 446
; /********max195初始化********/ 
; void max195_inital(void)
;     {
	.dbline 447
;      set_cs_195(1);
	ldi R16,1
	xcall _set_cs_195
	.dbline 448
;      set_sclk_195(0);
	clr R16
	.dbline -2
	.dbline 449
;     }
L76:
	.dbline 0 ; func end
	xjmp _set_sclk_195
	.dbend
	.dbfunc e max195_start _max195_start fV
	.even
_max195_start::
	.dbline -1
	.dbline 454
; /**********************
; max195转换开始
; **********************/
; void max195_start(void)
; {
	.dbline 455
;      set_conv(0);//,启动转换
	clr R16
	xcall _set_conv
	.dbline 456
;      delay_nus(10);
	ldi R16,10
	ldi R17,0
	xcall _delay_nus
	.dbline 457
;      set_conv(1);
	ldi R16,1
	.dbline -2
	.dbline 458
; }
L77:
	.dbline 0 ; func end
	xjmp _set_conv
	.dbend
	.dbfunc e max195_read _max195_read fV
;              k -> R20
;           num1 -> R22
;           num2 -> R10,R11
	.even
_max195_read::
	xcall push_gset3
	.dbline -1
	.dbline 461
; /***********************/
; void max195_read()
; {	 uint num2=0;
	.dbline 461
	clr R10
	clr R11
	.dbline 462
; 	 uchar num1=0,k;
	clr R22
L79:
	.dbline 463
L80:
	.dbline 463
; 	 while((PINB&0x02)==0x02);
	in R2,0x16
	clr R3
	sbrc R2,1
	rjmp L79
	.dbline 464
; 	 set_cs_195(0);
	clr R16
	xcall _set_cs_195
	.dbline 465
; 	 for(k=0;k<16;k++)
	clr R20
	xjmp L85
L82:
	.dbline 466
; 	 {
	.dbline 467
; 	 set_sclk_195(1);
	ldi R16,1
	xcall _set_sclk_195
	.dbline 468
; 	 delay_1us();
	xcall _delay_1us
	.dbline 469
; 	 if((PINB&0x04)==0x04)//判断pa1是否为1
	in R24,0x16
	andi R24,4
	cpi R24,4
	brne L86
	.dbline 470
; 	 {
	.dbline 471
; 	 num1=1;
	ldi R22,1
	.dbline 473
; 	 //PORTA|=0x20;
; 	 }
	xjmp L87
L86:
	.dbline 475
; 	 else
; 	 {
	.dbline 476
; 	 num1=0;
	clr R22
	.dbline 478
; 	 //PORTA&=0xdf;
; 	 }
L87:
	.dbline 479
	ldi R16,2
	ldi R17,0
	movw R18,R10
	xcall empy16s
	movw R10,R16
	mov R2,R22
	clr R3
	add R10,R2
	adc R11,R3
	.dbline 480
	clr R16
	xcall _set_sclk_195
	.dbline 481
	ldi R16,3
	ldi R17,0
	xcall _delay_nus
	.dbline 482
L83:
	.dbline 465
	inc R20
L85:
	.dbline 465
	cpi R20,16
	brlo L82
	.dbline 483
; 	 num2=num2*2+num1;
; 	 set_sclk_195(0);//下降沿锁存下一位
; 	 delay_nus(3);
; 	 }
; 	 turn[n++]=num2/1024;
	lds R2,_n
	clr R3
	mov R24,R2
	subi R24,255    ; addi 1
	sts _n,R24
	ldi R18,10
	ldi R19,0
	movw R16,R10
	xcall lsr16
	ldi R24,<_turn
	ldi R25,>_turn
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R16
	.dbline 484
; 	 set_conv(0);//,启动转换
	clr R16
	xcall _set_conv
	.dbline 485
;      delay_nus(10);
	ldi R16,10
	ldi R17,0
	xcall _delay_nus
	.dbline 486
;      set_conv(1);
	ldi R16,1
	xcall _set_conv
	.dbline -2
	.dbline 487
; }
L78:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r k 20 c
	.dbsym r num1 22 c
	.dbsym r num2 10 i
	.dbend
	.dbfunc e display _display fI
;           page -> R20
;          point -> R22
;              i -> R10
;            num -> R12
	.even
_display::
	xcall push_gset4
	.dbline -1
	.dbline 490
; /*************************************/
;  display()
;   {uchar i,point,page,num;
	.dbline 491
;    clrram ();
	xcall _clrram
	.dbline 492
;    w_com (0xaf);
	ldi R16,175
	xcall _w_com
	.dbline 493
;    w_com (0xc0);
	ldi R16,192
	xcall _w_com
	.dbline 494
;    for(i=0;i<128;i++)
	clr R10
	xjmp L92
L89:
	.dbline 495
;     {
	.dbline 496
;      point=turn[i];
	ldi R24,<_turn
	ldi R25,>_turn
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R22,z+0
	.dbline 497
;      page=point/8;
	mov R20,R22
	lsr R20
	lsr R20
	lsr R20
	.dbline 498
;      num=point%8;
	ldi R17,8
	mov R16,R22
	xcall mod8u
	mov R12,R16
	.dbline 499
;      w_com(0xb0+page);
	mov R16,R20
	subi R16,80    ; addi 176
	xcall _w_com
	.dbline 502
;      //  num=0x01<<(num);
;       //  wr_dat(num);
; 	 if(num==0)
	tst R12
	brne L93
	.dbline 503
;        w_data(0x02);
	ldi R16,2
	xcall _w_data
	xjmp L94
L93:
	.dbline 505
;      else
;        num=0x03<<(num);
	ldi R16,3
	mov R17,R12
	xcall lsl8
	mov R12,R16
L94:
	.dbline 506
	mov R16,R12
	xcall _w_data
	.dbline 507
L90:
	.dbline 494
	inc R10
L92:
	.dbline 494
	mov R24,R10
	cpi R24,128
	brlo L89
	.dbline -2
	.dbline 509
;         w_data(num);
;      }
; 	 //w_com(0xae);
;    }
L88:
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r page 20 c
	.dbsym r point 22 c
	.dbsym r i 10 c
	.dbsym r num 12 c
	.dbend
	.dbfunc e main _main fV
;              m -> <dead>
;              k -> <dead>
;              i -> <dead>
	.even
_main::
	.dbline -1
	.dbline 512
; /***************主函数**************************/
; void main()
; {
	.dbline 515
;   uchar i,k;
;   uint m;
;   init_m16();
	xcall _init_m16
	.dbline 516
;   set_c86(1);
	ldi R16,1
	xcall _set_c86
	.dbline 517
;   set_ps(0);
	clr R16
	xcall _set_ps
	.dbline 518
;   w_com(0xaf);
	ldi R16,175
	xcall _w_com
	.dbline 519
;   clrram ();
	xcall _clrram
	.dbline 520
;   init_lcd ();
	xcall _init_lcd
	.dbline 521
;   max195_inital();
	xcall _max195_inital
	.dbline 529
;  /* for(i=64;i>0;i--)
;   {
;   w_com(0x40+i);
;   img_disp(tab5);
;   w_com(0xc0);
;   delay_nms(100);
;   }*/
;    max195_start();
	xcall _max195_start
	xjmp L97
X0:
	.dbline 532
;   //delay_nms(1);
;    while (1)
;   {
L99:
	.dbline 535
	xcall _max195_read
L100:
	.dbline 534
	lds R24,_n
	cpi R24,128
	brlo L99
	.dbline 539
	xcall _display
	.dbline 542
L97:
	.dbline 531
	xjmp L100
X1:
	.dbline -2
	.dbline 543
;    //PORTC&=0xfe;
;  while(n<128) 
;  max195_read();
; //for(i=0;i<128;i++)
; 	//    FFT_Re[i]*=turn[i];
;  // FFT_Proc();
;   display();
;   //w_com(0xc0);
;   //delay_nms(100);
;   }
; }
L95:
	.dbline 0 ; func end
	ret
	.dbsym l m 1 i
	.dbsym l k 1 c
	.dbsym l i 1 c
	.dbend

⌨️ 快捷键说明

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