📄 fjv14.s
字号:
clr R21
cpi R20,0
cpc R20,R21
breq L102
X5:
cpi R20,1
ldi R30,0
cpc R21,R30
breq L107
cpi R20,4
ldi R30,0
cpc R21,R30
breq L112
cpi R20,5
ldi R30,0
cpc R21,R30
brne X7
rjmp L117
X7:
cpi R20,6
ldi R30,0
cpc R21,R30
brne X8
rjmp L122
X8:
cpi R20,7
ldi R30,0
cpc R21,R30
brne X9
rjmp L127
X9:
rjmp L100
X6:
.dbline 371
; {
L102:
.dbline 373
; case IO_PB0: //启动PB0通道
; if (IO_data==0x00)
tst R16
brne L103
.dbline 374
; {
.dbline 375
; DDRB |= (1<<DDB0);
sbi 0x17,0
.dbline 376
; PORTB &= 0b11111110;//PB0置0,其他位不变
in R24,0x18
andi R24,254
out 0x18,R24
.dbline 377
; }
rjmp L100
L103:
.dbline 378
; else if (IO_data==0x01)
cpi R16,1
brne L105
.dbline 379
; {
.dbline 380
; DDRB |= (1<<DDB0);
sbi 0x17,0
.dbline 381
; PORTB |= (1<<PB0);//PB0置1,其他位不变
sbi 0x18,0
.dbline 382
; }
rjmp L100
L105:
.dbline 384
; else
; {
.dbline 385
; asm("NOP");
NOP
.dbline 386
; }
.dbline 387
; break;
rjmp L100
L107:
.dbline 389
; case IO_PB1:
; if (IO_data==0x00)
tst R16
brne L108
.dbline 390
; {
.dbline 391
; DDRB |= (1<<DDB1);
sbi 0x17,1
.dbline 392
; PORTB &= 0b11111101;//输出0
in R24,0x18
andi R24,253
out 0x18,R24
.dbline 393
; }
rjmp L100
L108:
.dbline 394
; else if (IO_data==0x01)
cpi R16,1
brne L110
.dbline 395
; {
.dbline 396
; DDRB |= (1<<DDB1);
sbi 0x17,1
.dbline 397
; PORTB |= (1<<PB1);//输出1
sbi 0x18,1
.dbline 398
; }
rjmp L100
L110:
.dbline 400
; else
; {
.dbline 401
; asm("NOP");
NOP
.dbline 402
; }
.dbline 403
; break;
rjmp L100
L112:
.dbline 405
; case IO_PB4:
; if (IO_data==0x00)
tst R16
brne L113
.dbline 406
; {
.dbline 407
; DDRB |= (1<<DDB4);
sbi 0x17,4
.dbline 408
; PORTB &= 0b11101111;;//输出0
in R24,0x18
andi R24,239
out 0x18,R24
.dbline 408
.dbline 409
; }
rjmp L100
L113:
.dbline 410
; else if (IO_data==0x01)
cpi R16,1
brne L115
.dbline 411
; {
.dbline 412
; DDRB |= (1<<DDB4);
sbi 0x17,4
.dbline 413
; PORTB |= (1<<PB4);//输出1
sbi 0x18,4
.dbline 414
; }
rjmp L100
L115:
.dbline 416
; else
; {
.dbline 417
; asm("NOP");
NOP
.dbline 418
; }
.dbline 419
; break;
rjmp L100
L117:
.dbline 421
; case IO_PD5:
; if (IO_data==0x00)
tst R16
brne L118
.dbline 422
; {
.dbline 423
; DDRD |= (1<<DDD5);
sbi 0x11,5
.dbline 424
; PORTD &= 0b11011111;//输出0
in R24,0x12
andi R24,223
out 0x12,R24
.dbline 425
; }
rjmp L100
L118:
.dbline 426
; else if (IO_data==0x01)
cpi R16,1
brne L120
.dbline 427
; {
.dbline 428
; DDRD |= (1<<DDD5);
sbi 0x11,5
.dbline 429
; PORTD |= (1<<PD5);//输出1
sbi 0x12,5
.dbline 430
; }
rjmp L100
L120:
.dbline 432
; else
; {
.dbline 433
; asm("NOP");
NOP
.dbline 434
; }
.dbline 435
; break;
rjmp L100
L122:
.dbline 437
; case IO_PD6:
; if (IO_data==0x00)
tst R16
brne L123
.dbline 438
; {
.dbline 439
; DDRD |= (1<<DDD6);
sbi 0x11,6
.dbline 440
; PORTD &= 0b10111111;//输出0
in R24,0x12
andi R24,191
out 0x12,R24
.dbline 441
; }
rjmp L100
L123:
.dbline 442
; else if (IO_data==0x01)
cpi R16,1
brne L125
.dbline 443
; {
.dbline 444
; DDRD |= (1<<DDD6);
sbi 0x11,6
.dbline 445
; PORTD |= (1<<PD6);//输出1
sbi 0x12,6
.dbline 446
; }
rjmp L100
L125:
.dbline 448
; else
; {
.dbline 449
; asm("NOP");
NOP
.dbline 450
; }
.dbline 451
; break;
rjmp L100
L127:
.dbline 454
;
; case IO_PD7: //如果为00则启动CH1通道
; if (IO_data==0x00)
tst R16
brne L128
.dbline 455
; {
.dbline 456
; DDRD |= (1<<DDD7);
sbi 0x11,7
.dbline 457
; PORTD &= 0b01111111;//输出0
in R24,0x12
andi R24,127
out 0x12,R24
.dbline 458
; }
rjmp L100
L128:
.dbline 459
; else if (IO_data==0x01)
cpi R16,1
brne L130
.dbline 460
; {
.dbline 461
; DDRD |= (1<<DDD7);
sbi 0x11,7
.dbline 462
; PORTD |= (1<<PD7);//输出1
sbi 0x12,7
.dbline 463
; }
rjmp L100
L130:
.dbline 465
.dbline 466
NOP
.dbline 467
.dbline 468
.dbline 470
L100:
.dbline -2
L98:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r IO_channel 18 c
.dbsym r IO_data 16 c
.dbend
.dbfunc e IO_in _IO_in fc
; temp -> R20
; IO_channel -> R16
.even
_IO_in::
rcall push_gset2
.dbline -1
.dbline 477
; else
; {
; asm("NOP");
; }
; break;
;
; default:break;
; }
;
;
; }
; /*****************************************************************/
; unsigned char IO_in(unsigned char IO_channel)
; {
.dbline 479
; unsigned char temp;
; temp=0;
clr R20
.dbline 480
; switch (IO_channel)
mov R22,R16
clr R23
cpi R22,0
cpc R22,R23
breq L136
X10:
cpi R22,1
ldi R30,0
cpc R23,R30
breq L137
cpi R22,4
ldi R30,0
cpc R23,R30
breq L138
cpi R22,5
ldi R30,0
cpc R23,R30
breq L139
cpi R22,6
ldi R30,0
cpc R23,R30
breq L140
cpi R22,7
ldi R30,0
cpc R23,R30
brne X12
rjmp L141
X12:
rjmp L134
X11:
.dbline 481
; {
L136:
.dbline 483
; case IO_PB0: //启动PB0通道
; {
.dbline 484
; DDRB &= 0b11111110;
in R24,0x17
andi R24,254
out 0x17,R24
.dbline 485
; PORTB |= (1<<PB0);//输入、带上拉
sbi 0x18,0
.dbline 486
; asm("NOP");//留出读写转换的时间。
NOP
.dbline 487
; temp = PINB;//读取PB0通道的值。
in R20,0x16
.dbline 488
; temp = temp & 0x01;
andi R20,1
.dbline 489
; }
.dbline 490
; break;
rjmp L134
L137:
.dbline 492
; case IO_PB1:
; {
.dbline 493
; DDRB &= 0b11111101;
in R24,0x17
andi R24,253
out 0x17,R24
.dbline 494
; PORTB |= (1<<PB1);//输入、带上拉
sbi 0x18,1
.dbline 495
; asm("NOP");
NOP
.dbline 496
; temp = PINB;
in R20,0x16
.dbline 497
; temp=(temp>>1)& 0x01;//提取位值。
lsr R20
andi R20,1
.dbline 499
;
; }
.dbline 500
; break;
rjmp L134
L138:
.dbline 502
; case IO_PB4:
; {
.dbline 503
; DDRB &= 0b11101111;
in R24,0x17
andi R24,239
out 0x17,R24
.dbline 504
; PORTB |= (1<<PB4);//输入、带上拉
sbi 0x18,4
.dbline 505
; asm("NOP");
NOP
.dbline 506
; temp = PINB;
in R20,0x16
.dbline 507
; temp=(temp>>4)& 0x01;
mov R24,R20
swap R24
andi R24,#0x0F
andi R24,1
mov R20,R24
.dbline 508
; }
.dbline 509
; break;
rjmp L134
L139:
.dbline 511
; case IO_PD5:
; {
.dbline 512
; DDRD &= 0b11011111;
in R24,0x11
andi R24,223
out 0x11,R24
.dbline 513
; PORTD |= (1<<PD5);//输入、带上拉
sbi 0x12,5
.dbline 514
; asm("NOP");
NOP
.dbline 515
; temp = PIND;
in R20,0x10
.dbline 516
; temp=(temp>>5)& 0x01;
lsr R20
lsr R20
lsr R20
lsr R20
lsr R20
andi R20,1
.dbline 517
; }
.dbline 518
; break;
rjmp L134
L140:
.dbline 520
; case IO_PD6:
; {
.dbline 521
; DDRD &= 0b10111111;
in R24,0x11
andi R24,191
out 0x11,R24
.dbline 522
; PORTD |= (1<<PD6);//输入、带上拉
sbi 0x12,6
.dbline 523
; asm("NOP");
NOP
.dbline 524
; temp = PIND;
in R20,0x10
.dbline 525
; temp=(temp>>6)& 0x01;
lsr R20
lsr R20
lsr R20
lsr R20
lsr R20
lsr R20
andi R20,1
.dbline 526
; }
.dbline 527
; break;
rjmp L134
L141:
.dbline 529
; case IO_PD7:
; {
.dbline 530
; DDRD &= 0b01111111;
in R24,0x11
andi R24,127
out 0x11,R24
.dbline 531
; PORTD |= (1<<PD7);//输入、带上拉
sbi 0x12,7
.dbline 532
; asm("NOP");
NOP
.dbline 533
; temp = PIND;
in R20,0x10
.dbline 534
; temp=(temp>>7)& 0x01;
lsr R20
lsr R20
lsr R20
lsr R20
lsr R20
lsr R20
lsr R20
andi R20,1
.dbline 535
; }
.dbline 536
; break;
.dbline 537
; default:break;
L134:
.dbline 539
; }
; return temp;
mov R16,R20
.dbline -2
L132:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r temp 20 c
.dbsym r IO_channel 16 c
.dbend
.dbfunc e delay_1ms _delay_1ms fV
; i -> R16,R17
.even
_delay_1ms::
.dbline -1
.dbline 544
; }
; /*******************************************************************/
; //1ms延时函数
; void delay_1ms(void)
; {
.dbline 546
; unsigned int i;
; for (i=0;i<150;i++)
clr R16
clr R17
rjmp L146
L143:
.dbline 547
.dbline 548
L144:
.dbline 546
subi R16,255 ; offset = 1
sbci R17,255
L146:
.dbline 546
cpi R16,150
ldi R30,0
cpc R17,R30
brlo L143
.dbline -2
L142:
.dbline 0 ; func end
ret
.dbsym r i 16 i
.dbend
.area bss(ram, con, rel)
.dbfile D:\采集卡项目\单片机程序\fjv14\fjv14.c
_AD_value10::
.blkb 2
.dbsym e AD_value10 _AD_value10 i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -