📄 co0511.s
字号:
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 + -