📄 fjv14.lis
字号:
02CC .dbsym l temp 0 A[4:2]i
02CC .dbend
02CC .dbfunc e ADC_Start _ADC_Start fV
.even
02CC _ADC_Start::
02CC .dbline -1
02CC .dbline 299
02CC ; }
02CC ; /*******************************************************************
02CC ; 函数功能:AD采集,10位精度。
02CC ; 入口参数:无
02CC ; 出口参数:无
02CC ; 说明:
02CC ; *******************************************************/
02CC ; void ADC_Start(void)
02CC ; {
02CC .dbline 300
02CC ; asm("NOP");//给通道切换留一点时间。
02CC 0000 NOP
02CE .dbline 301
02CE ; asm("NOP");
02CE 0000 NOP
02D0 .dbline 302
02D0 ; MCUCR =(1<<SE);//开启ADC休眠模式
02D0 80E8 ldi R24,128
02D2 85BF out 0x35,R24
02D4 .dbline 303
02D4 ; asm("SLEEP");
02D4 8895 SLEEP
02D6 .dbline 304
02D6 ; MCUCR =(0<<SE);//关闭ADC休眠模式,关闭SE位
02D6 2224 clr R2
02D8 25BE out 0x35,R2
02DA .dbline -2
02DA L82:
02DA .dbline 0 ; func end
02DA 0895 ret
02DC .dbend
02DC .dbfunc e DAC_5617_10 _DAC_5617_10 fV
02DC ; TempH -> R22
02DC ; TempL -> R20
02DC ; dac_channel -> y+8
02DC ; dac_dataL -> R10
02DC ; dac_dataH -> R12
.even
02DC _DAC_5617_10::
02DC 00D0 rcall push_gset4
02DE A22E mov R10,R18
02E0 C02E mov R12,R16
02E2 .dbline -1
02E2 .dbline 316
02E2 ;
02E2 ; }
02E2 ;
02E2 ; /*******************************************************************
02E2 ; 函数功能:DA传送数据,10位精度。固定通道A。
02E2 ; 入口参数:dac_data8位数据。
02E2 ; 出口参数:无
02E2 ; 说明:
02E2 ; *******************************************************/
02E2 ;
02E2 ; void DAC_5617_10(unsigned char dac_dataH,unsigned char dac_dataL,unsigned char dac_channel)
02E2 ; {
02E2 .dbline 318
02E2 ; unsigned char TempL,TempH;
02E2 ; if(dac_channel==0x01) //使用通道A。(即out1)
02E2 8885 ldd R24,y+8
02E4 8130 cpi R24,1
02E6 E1F4 brne L84
02E8 .dbline 319
02E8 ; {
02E8 .dbline 320
02E8 ; set_cs;
02E8 C29A sbi 0x18,2
02EA .dbline 321
02EA ; TempH=0xc0;
02EA 60EC ldi R22,192
02EC .dbline 322
02EC ; TempL=0x00;
02EC 4427 clr R20
02EE .dbline 323
02EE ; TempH|=(dac_dataH<<2)|(dac_dataL>>6);
02EE 2A2C mov R2,R10
02F0 2694 lsr R2
02F2 2694 lsr R2
02F4 2694 lsr R2
02F6 2694 lsr R2
02F8 2694 lsr R2
02FA 2694 lsr R2
02FC 3C2C mov R3,R12
02FE 330C lsl R3
0300 330C lsl R3
0302 3228 or R3,R2
0304 6329 or R22,R3
0306 .dbline 324
0306 ; TempL|=(dac_dataL<<2);
0306 2A2C mov R2,R10
0308 220C lsl R2
030A 220C lsl R2
030C 4229 or R20,R2
030E .dbline 325
030E ; clr_cs;
030E 88B3 in R24,0x18
0310 8B7F andi R24,251
0312 88BB out 0x18,R24
0314 .dbline 326
0314 ; SPI_Transmit(TempH);
0314 062F mov R16,R22
0316 26D0 rcall _SPI_Transmit
0318 .dbline 327
0318 ; SPI_Transmit(TempL);
0318 042F mov R16,R20
031A 24D0 rcall _SPI_Transmit
031C .dbline 328
031C ; set_cs;
031C C29A sbi 0x18,2
031E .dbline 329
031E ; }
031E 20C0 rjmp L85
0320 L84:
0320 .dbline 330
0320 ; else if (dac_channel==0x02) //使用通道B。(即out2)
0320 8885 ldd R24,y+8
0322 8230 cpi R24,2
0324 E1F4 brne L86
0326 .dbline 331
0326 ; {
0326 .dbline 332
0326 ; set_cs;
0326 C29A sbi 0x18,2
0328 .dbline 333
0328 ; TempH=0x40;
0328 60E4 ldi R22,64
032A .dbline 334
032A ; TempL=0x00;
032A 4427 clr R20
032C .dbline 335
032C ; TempH|=(dac_dataH<<2)|(dac_dataL>>6);
032C 2A2C mov R2,R10
032E 2694 lsr R2
0330 2694 lsr R2
0332 2694 lsr R2
0334 2694 lsr R2
0336 2694 lsr R2
0338 2694 lsr R2
033A 3C2C mov R3,R12
033C 330C lsl R3
033E 330C lsl R3
0340 3228 or R3,R2
0342 6329 or R22,R3
0344 .dbline 336
0344 ; TempL|=(dac_dataL<<2);
0344 2A2C mov R2,R10
0346 220C lsl R2
0348 220C lsl R2
034A 4229 or R20,R2
034C .dbline 337
034C ; clr_cs;
034C 88B3 in R24,0x18
034E 8B7F andi R24,251
0350 88BB out 0x18,R24
0352 .dbline 338
0352 ; SPI_Transmit(TempH);
0352 062F mov R16,R22
0354 07D0 rcall _SPI_Transmit
0356 .dbline 339
0356 ; SPI_Transmit(TempL);
0356 042F mov R16,R20
0358 05D0 rcall _SPI_Transmit
035A .dbline 340
035A ; set_cs;
035A C29A sbi 0x18,2
035C .dbline 341
035C ; }
035C 01C0 rjmp L87
035E L86:
035E .dbline 344
035E ;
035E ; else
035E ; {
035E .dbline 345
035E ; asm("NOP");
035E 0000 NOP
0360 .dbline 346
0360 ; }
0360 L87:
0360 L85:
0360 .dbline -2
0360 L83:
0360 00D0 rcall pop_gset4
0362 .dbline 0 ; func end
0362 0895 ret
0364 .dbsym r TempH 22 c
0364 .dbsym r TempL 20 c
0364 .dbsym l dac_channel 8 c
0364 .dbsym r dac_dataL 10 c
0364 .dbsym r dac_dataH 12 c
0364 .dbend
0364 .dbfunc e SPI_Transmit _SPI_Transmit fV
0364 ; i -> R20
0364 ; dac_data -> R16
.even
0364 _SPI_Transmit::
0364 00D0 rcall push_gset2
0366 .dbline -1
0366 .dbline 351
0366 ; }
0366 ; /*****************************************************************/
0366 ; //初始化spi
0366 ; void SPI_Transmit(unsigned char dac_data)
0366 ; {
0366 .dbline 353
0366 ; unsigned char i;
0366 ; SPCR=0x58; //SPI使能?此句是不是必须的?
0366 88E5 ldi R24,88
0368 8DB9 out 0xd,R24
036A .dbline 354
036A ; SPDR=dac_data; //送值到SPDR
036A 0FB9 out 0xf,R16
036C L89:
036C .dbline 356
036C L90:
036C .dbline 355
036C ; while(!SPSR&(1<<SPIF))
036C 2EB0 in R2,0xe
036E 2220 tst R2
0370 19F4 brne L92
0372 61E0 ldi R22,1
0374 70E0 ldi R23,0
0376 02C0 rjmp L93
0378 L92:
0378 6627 clr R22
037A 7727 clr R23
037C L93:
037C 67FD sbrc R22,7
037E F6CF rjmp L89
0380 .dbline 357
0380 ; ;
0380 ; for (i=0;i<3;i++)//保留足够的发送时间!!!
0380 4427 clr R20
0382 01C0 rjmp L97
0384 L94:
0384 .dbline 358
0384 .dbline 358
0384 .dbline 358
0384 L95:
0384 .dbline 357
0384 4395 inc R20
0386 L97:
0386 .dbline 357
0386 4330 cpi R20,3
0388 E8F3 brlo L94
038A .dbline -2
038A L88:
038A 00D0 rcall pop_gset2
038C .dbline 0 ; func end
038C 0895 ret
038E .dbsym r i 20 c
038E .dbsym r dac_data 16 c
038E .dbend
038E .dbfunc e IO_out _IO_out fV
038E ; IO_channel -> R18
038E ; IO_data -> R16
.even
038E _IO_out::
038E 00D0 rcall push_gset1
0390 .dbline -1
0390 .dbline 368
0390 ; {;}
0390 ; }
0390 ; /******************************************************************
0390 ; 函数功能:IO输出数据。首先确定输出数据。然后给定输出通道。
0390 ; 入口参数:IO_data输出数据。IO_channel输出通道。
0390 ; 出口参数:无
0390 ; 说明:
0390 ; *******************************************************/
0390 ;
0390 ; void IO_out(unsigned char IO_data,unsigned char IO_channel)
0390 ; {
0390 .dbline 370
0390 ;
0390 ; switch (IO_channel)
0390 422F mov R20,R18
0392 5527 clr R21
0394 4030 cpi R20,0
0396 4507 cpc R20,R21
0398 C1F0 breq L102
039A X5:
039A 4130 cpi R20,1
039C E0E0 ldi R30,0
039E 5E07 cpc R21,R30
03A0 11F1 breq L107
03A2 4430 cpi R20,4
03A4 E0E0 ldi R30,0
03A6 5E07 cpc R21,R30
03A8 61F1 breq L112
03AA 4530 cpi R20,5
03AC E0E0 ldi R30,0
03AE 5E07 cpc R21,R30
03B0 09F4 brne X7
03B2 35C0 rjmp L117
03B4 X7:
03B4 4630 cpi R20,6
03B6 E0E0 ldi R30,0
03B8 5E07 cpc R21,R30
03BA 09F4 brne X8
03BC 3EC0 rjmp L122
03BE X8:
03BE 4730 cpi R20,7
03C0 E0E0 ldi R30,0
03C2 5E07 cpc R21,R30
03C4 09F4 brne X9
03C6 47C0 rjmp L127
03C8 X9:
03C8 53C0 rjmp L100
03CA X6:
03CA .dbline 371
03CA ; {
03CA L102:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -