?? dh980_icc.lst
字號:
04F2 2884 OR R8,R4
04F3 2895 OR R9,R5
04F4 01FE MOVW R30,R28
04F5 8264 STD Z+4,R6
04F6 8275 STD Z+5,R7
04F7 8286 STD Z+6,R8
04F8 8297 STD Z+7,R9
(0156) // c=c>>8;//去掉最低位
(0157) return(c);
04F9 01FE MOVW R30,R28
04FA 8104 LDD R16,Z+4
04FB 8115 LDD R17,Z+5
04FC 8126 LDD R18,Z+6
04FD 8137 LDD R19,Z+7
04FE 9628 ADIW R28,0x8
04FF 940E079C CALL pop_gset4
0501 9508 RET
_CS5532_init:
i --> R20
0502 940E07AA CALL push_gset1
(0158) }
(0159)
(0160) void CS5532_init(void)
(0161) {
(0162)
(0163) //串口初始化
(0164) unsigned char i;
(0165) SET_CS;
0504 9A73 SBI 0x0E,3
(0166) delay_loop(2);
0505 E002 LDI R16,2
0506 E010 LDI R17,0
0507 940E00A4 CALL _delay_loop
(0167) CLR_CS; //片選使能
0509 B18E IN R24,0x0E
050A 7F87 ANDI R24,0xF7
050B B98E OUT 0x0E,R24
(0168) delay_loop(2);
050C E002 LDI R16,2
050D E010 LDI R17,0
050E 940E00A4 CALL _delay_loop
(0169) CLR_SDI;
0510 B18E IN R24,0x0E
0511 7E8F ANDI R24,0xEF
0512 B98E OUT 0x0E,R24
(0170) SET_SDO;
0513 9A75 SBI 0x0E,5
(0171) CLR_SCK;
0514 B18E IN R24,0x0E
0515 7B8F ANDI R24,0xBF
0516 B98E OUT 0x0E,R24
(0172) for(i=0;i<15;i++)
0517 2744 CLR R20
0518 C003 RJMP 0x051C
(0173) {
(0174) CS5532_Txd(0xFF);//發(fā)送命令
0519 EF0F LDI R16,0xFF
051A DEE5 RCALL _CS5532_Txd
051B 9543 INC R20
051C 304F CPI R20,0xF
051D F3D8 BCS 0x0519
(0175) }
(0176) CS5532_Txd(0xFE);
051E EF0E LDI R16,0xFE
051F DEE0 RCALL _CS5532_Txd
(0177) //配置寄存器
(0178) CS5532_Txd(0x43);
0520 E403 LDI R16,0x43
0521 DEDE RCALL _CS5532_Txd
(0179)
(0180) CS5532_Txd(0x02);
0522 E002 LDI R16,2
0523 DEDC RCALL _CS5532_Txd
(0181) CS5532_Txd(0x40);
0524 E400 LDI R16,0x40
0525 DEDA RCALL _CS5532_Txd
(0182) CS5532_Txd(0x00);
0526 2700 CLR R16
0527 DED8 RCALL _CS5532_Txd
(0183) CS5532_Txd(0x00);
0528 2700 CLR R16
0529 DED6 RCALL _CS5532_Txd
(0184)
(0185) CS5532_Txd(0x02);
052A E002 LDI R16,2
052B DED4 RCALL _CS5532_Txd
(0186) CS5532_Txd(0x40);
052C E400 LDI R16,0x40
052D DED2 RCALL _CS5532_Txd
(0187) CS5532_Txd(0x00);
052E 2700 CLR R16
052F DED0 RCALL _CS5532_Txd
(0188) CS5532_Txd(0x00);
0530 2700 CLR R16
0531 DECE RCALL _CS5532_Txd
(0189)
(0190) CS5532_Txd(0x02);
0532 E002 LDI R16,2
0533 DECC RCALL _CS5532_Txd
(0191) CS5532_Txd(0x40);
0534 E400 LDI R16,0x40
0535 DECA RCALL _CS5532_Txd
(0192) CS5532_Txd(0x00);
0536 2700 CLR R16
0537 DEC8 RCALL _CS5532_Txd
(0193) CS5532_Txd(0x00);
0538 2700 CLR R16
0539 DEC6 RCALL _CS5532_Txd
(0194)
(0195) CS5532_Txd(0x02);
053A E002 LDI R16,2
053B DEC4 RCALL _CS5532_Txd
(0196) CS5532_Txd(0x40);
053C E400 LDI R16,0x40
053D DEC2 RCALL _CS5532_Txd
(0197) CS5532_Txd(0x00);
053E 2700 CLR R16
053F DEC0 RCALL _CS5532_Txd
(0198) CS5532_Txd(0x00);
0540 2700 CLR R16
0541 DEBE RCALL _CS5532_Txd
0542 940E07AD CALL pop_gset1
0544 9508 RET
_CS5532_RW:
l --> Y+1
Conversion_r --> Y+1
AD_data --> Y+0
j --> R20
i --> R22
chunnel --> R20
0545 940E07A8 CALL push_gset2
0547 01A8 MOVW R20,R16
0548 9724 SBIW R28,4
(0199) /* //通道寄存器
(0200) CS5532_Txd(0x05);
(0201) CS5532_Txd(0x32);
(0202) CS5532_Txd(0x40);
(0203) CS5532_Txd(0x32);
(0204) CS5532_Txd(0x40);*/
(0205) //---------------------------
(0206) }
(0207) unsigned long CS5532_RW(unsigned int chunnel)
(0208) {
(0209) unsigned char Conversion_r,l,j,i;
(0210) unsigned char AD_data[4];
(0211) switch(chunnel)
0549 3040 CPI R20,0
054A 0745 CPC R20,R21
054B F121 BEQ 0x0570
054C 3041 CPI R20,1
054D E0E0 LDI R30,0
054E 075E CPC R21,R30
054F F409 BNE 0x0551
0550 C030 RJMP 0x0581
0551 3042 CPI R20,2
0552 E0E0 LDI R30,0
0553 075E CPC R21,R30
0554 F409 BNE 0x0556
0555 C03A RJMP 0x0590
0556 3043 CPI R20,3
0557 E0E0 LDI R30,0
0558 075E CPC R21,R30
0559 F409 BNE 0x055B
055A C044 RJMP 0x059F
055B 3044 CPI R20,4
055C E0E0 LDI R30,0
055D 075E CPC R21,R30
055E F409 BNE 0x0560
055F C04C RJMP 0x05AC
0560 3045 CPI R20,5
0561 E0E0 LDI R30,0
0562 075E CPC R21,R30
0563 F409 BNE 0x0565
0564 C058 RJMP 0x05BD
0565 3046 CPI R20,6
0566 E0E0 LDI R30,0
0567 075E CPC R21,R30
0568 F409 BNE 0x056A
0569 C062 RJMP 0x05CC
056A 3047 CPI R20,7
056B E0E0 LDI R30,0
056C 075E CPC R21,R30
056D F409 BNE 0x056F
056E C06C RJMP 0x05DB
056F C077 RJMP 0x05E7
(0212) {
(0213) case 0:
(0214) CLR_4052A;
0570 B384 IN R24,0x14
0571 7F87 ANDI R24,0xF7
0572 BB84 OUT 0x14,R24
(0215) CLR_4052B;
0573 B185 IN R24,0x05
0574 678F ORI R24,0x7F
0575 B985 OUT 0x05,R24
(0216) CS5532_Txd(0x05);
0576 E005 LDI R16,5
0577 DE88 RCALL _CS5532_Txd
(0217) CS5532_Txd(0b00110110);
0578 E306 LDI R16,0x36
0579 DE86 RCALL _CS5532_Txd
(0218) CS5532_Txd(0x40);
057A E400 LDI R16,0x40
057B DE84 RCALL _CS5532_Txd
(0219) CS5532_Txd(0b00110110);
057C E306 LDI R16,0x36
057D DE82 RCALL _CS5532_Txd
(0220) CS5532_Txd(0x40);
057E E400 LDI R16,0x40
057F DE80 RCALL _CS5532_Txd
(0221) break;
0580 C066 RJMP 0x05E7
(0222) case 1:
(0223) SET_4052A;
0581 9AA3 SBI 0x14,3
(0224) CLR_4052B;
0582 B185 IN R24,0x05
0583 678F ORI R24,0x7F
0584 B985 OUT 0x05,R24
(0225) CS5532_Txd(0x05);
0585 E005 LDI R16,5
0586 DE79 RCALL _CS5532_Txd
(0226) CS5532_Txd(0b00110110);
0587 E306 LDI R16,0x36
0588 DE77 RCALL _CS5532_Txd
(0227) CS5532_Txd(0x40);
0589 E400 LDI R16,0x40
058A DE75 RCALL _CS5532_Txd
(0228) CS5532_Txd(0b00110110);
058B E306 LDI R16,0x36
058C DE73 RCALL _CS5532_Txd
(0229) CS5532_Txd(0x40);
058D E400 LDI R16,0x40
058E DE71 RCALL _CS5532_Txd
(0230) break;
058F C057 RJMP 0x05E7
(0231) case 2:
(0232) CLR_4052A;
0590 B384 IN R24,0x14
0591 7F87 ANDI R24,0xF7
0592 BB84 OUT 0x14,R24
(0233) SET_4052B;
0593 9A2F SBI 0x05,7
(0234) CS5532_Txd(0x05);
0594 E005 LDI R16,5
0595 DE6A RCALL _CS5532_Txd
(0235) CS5532_Txd(0b00110110);
0596 E306 LDI R16,0x36
0597 DE68 RCALL _CS5532_Txd
(0236) CS5532_Txd(0x40);
0598 E400 LDI R16,0x40
0599 DE66 RCALL _CS5532_Txd
(0237) CS5532_Txd(0b00110110);
059A E306 LDI R16,0x36
059B DE64 RCALL _CS5532_Txd
(0238) CS5532_Txd(0x40);
059C E400 LDI R16,0x40
059D DE62 RCALL _CS5532_Txd
(0239) break;
059E C048 RJMP 0x05E7
(0240) case 3:
(0241) SET_4052A;
059F 9AA3 SBI 0x14,3
(0242) SET_4052B;
05A0 9A2F SBI 0x05,7
(0243) CS5532_Txd(0x05);
05A1 E005 LDI R16,5
05A2 DE5D RCALL _CS5532_Txd
(0244) CS5532_Txd(0b00110110);
05A3 E306 LDI R16,0x36
05A4 DE5B RCALL _CS5532_Txd
(0245) CS5532_Txd(0x40);
05A5 E400 LDI R16,0x40
05A6 DE59 RCALL _CS5532_Txd
(0246) CS5532_Txd(0b00110110);
05A7 E306 LDI R16,0x36
05A8 DE57 RCALL _CS5532_Txd
(0247) CS5532_Txd(0x40);
05A9 E400 LDI R16,0x40
05AA DE55 RCALL _CS5532_Txd
(0248) break;
05AB C03B RJMP 0x05E7
(0249) case 4:
(0250) CLR_4052A;
05AC B384 IN R24,0x14
05AD 7F87 ANDI R24,0xF7
05AE BB84 OUT 0x14,R24
(0251) CLR_4052B;
05AF B185 IN R24,0x05
05B0 678F ORI R24,0x7F
05B1 B985 OUT 0x05,R24
(0252) CS5532_Txd(0x05);
05B2 E005 LDI R16,5
05B3 DE4C RCALL _CS5532_Txd
(0253) CS5532_Txd(0b01110110);
05B4 E706 LDI R16,0x76
05B5 DE4A RCALL _CS5532_Txd
(0254) CS5532_Txd(0x40);
05B6 E400 LDI R16,0x40
05B7 DE48 RCALL _CS5532_Txd
(0255) CS5532_Txd(0b00110110);
05B8 E306 LDI R16,0x36
05B9 DE46 RCALL _CS5532_Txd
(0256) CS5532_Txd(0x40);
05BA E400 LDI R16,0x40
05BB DE44 RCALL _CS5532_Txd
(0257) break;
05BC C02A RJMP 0x05E7
(0258) case 5:
(0259) SET_4052A;
05BD 9AA3 SBI 0x14,3
(0260) CLR_4052B;
05BE B185 IN R24,0x05
05BF 678F ORI R24,0x7F
05C0 B985 OUT 0x05,R24
(0261) CS5532_Txd(0x05);
05C1 E005 LDI R16,5
05C2 DE3D RCALL _CS5532_Txd
(0262) CS5532_Txd(0b01110110);
05C3 E706 LDI R16,0x76
05C4 DE3B RCALL _CS5532_Txd
(0263) CS5532_Txd(0x40);
05C5 E400 LDI R16,0x40
05C6 DE39 RCALL _CS5532_Txd
(0264) CS5532_Txd(0b00110110);
05C7 E306 LDI R16,0x36
05C8 DE37 RCALL _CS5532_Txd
(0265) CS5532_Txd(0x40);
05C9 E400 LDI R16,0x40
05CA DE35 RCALL _CS5532_Txd
(0266) break;
05CB C01B RJMP 0x05E7
(0267) case 6:
(0268) CLR_4052A;
05CC B384 IN R24,0x14
05CD 7F87 ANDI R24,0xF7
05CE BB84 OUT 0x14,R24
(0269) SET_4052B;
05CF 9A2F SBI 0x05,7
(0270) CS5532_Txd(0x05);
05D0 E005 LDI R16,5
05D1 DE2E RCALL _CS5532_Txd
(0271) CS5532_Txd(0b01110110);
05D2 E706 LDI R16,0x76
05D3 DE2C RCALL _CS5532_Txd
(0272) CS5532_Txd(0x40);
05D4 E400 LDI R16,0x40
05D5 DE2A RCALL _CS5532_Txd
(0273) CS5532_Txd(0b00110110);
05D6 E306 LDI R16,0x36
05D7 DE28 RCALL _CS5532_Txd
(0274) CS5532_Txd(0x40);
05D8 E400 LDI R16,0x40
05D9 DE26 RCALL _CS5532_Txd
(0275) break;
05DA C00C RJMP 0x05E7
(0276) case 7:
(0277) SET_4052A;
05DB 9AA3 SBI 0x14,3
(0278) SET_4052B;
05DC 9A2F SBI 0x05,7
(0279) CS5532_Txd(0x05);
05DD E005 LDI R16,5
05DE DE21 RCALL _CS5532_Txd
(0280) CS5532_Txd(0b01110110);
05DF E706 LDI R16,0x76
05E0 DE1F RCALL _CS5532_Txd
(0281) CS5532_Txd(0x40);
05E1 E400 LDI R16,0x40
05E2 DE1D RCALL _CS5532_Txd
(0282) CS5532_Txd(0b00110110);
05E3 E306 LDI R16,0x36
05E4 DE1B RCALL _CS5532_Txd
(0283) CS5532_Txd(0x40);
05E5 E400 LDI R16,0x40
05E6 DE19 RCALL _CS5532_Txd
(0284) break;
(0285) default:break;
(0286) }
(0287) CS5532_Txd(0x80); //啟動穩(wěn)定的單次轉(zhuǎn)換
05E7 E800 LDI R16,0x80
05E8 DE17 RCALL _CS5532_Txd
(0288) while(SDO!=0) //等待轉(zhuǎn)換結(jié)束
05E9 9965 SBIC 0x0C,5
05EA CFFE RJMP 0x05E9
(0289) {;}
(0290) // 讀取數(shù)據(jù)
(0291) CLR_SCK;//時鐘低
05EB B18E IN R24,0x0E
05EC 7B8F ANDI R24,0xBF
05ED B98E OUT 0x0E,R24
(0292) CLR_SDI;
05EE B18E IN R24,0x0E
05EF 7E8F ANDI R24,0xEF
05F0 B98E OUT 0x0E,R24
(0293) delay_loop(1);
05F1 E001 LDI R16,1
05F2 E010 LDI R17,0
05F3 940E00A4 CALL _delay_loop
(0294) for(i=0;i<8;i++)
05F5 2766 CLR R22
05F6 C00D RJMP 0x0604
(0295) {
(0296) SET_SCK; //時鐘高
05F7 9A76 SBI 0x0E,6
(0297) delay_loop(1);
05F8 E001 LDI R16,1
05F9 E010 LDI R17,0
05FA 940E00A4 CALL _delay_loop
(0298) CLR_SCK; //時鐘低
05FC B18E IN R24,0x0E
05FD 7B8F ANDI R24,0xBF
05FE B98E OUT 0x0E,R24
(0299
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -