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

📄 dh980_icc.lst

📁 LTC2449 AD转换 LTC2449 AD转换 LTC2449 AD转换
💻 LST
📖 第 1 页 / 共 5 页
字号:
    03A9 F338      BCS	0x0391
(0065)         } 
(0066)    return(data); 
    03AA 2F06      MOV	R16,R22
    03AB 940E0796  CALL	pop_gset2
    03AD 9508      RET
_Init5532:
  data                 --> R20
  i                    --> R22
    03AE 940E07A8  CALL	push_gset2
(0067) } 
(0068) //初始化cs5532 
(0069) void Init5532(void) 
(0070) { 
(0071)         unsigned char i,data=0; 
    03B0 2744      CLR	R20
(0072)          SET_CS;
    03B1 9A73      SBI	0x0E,3
(0073)    delay_loop(2);
    03B2 E002      LDI	R16,2
    03B3 E010      LDI	R17,0
    03B4 940E00A4  CALL	_delay_loop
(0074)    CLR_CS; //片选使能
    03B6 B18E      IN	R24,0x0E
    03B7 7F87      ANDI	R24,0xF7
    03B8 B98E      OUT	0x0E,R24
(0075)    delay_loop(2);
    03B9 E002      LDI	R16,2
    03BA E010      LDI	R17,0
    03BB 940E00A4  CALL	_delay_loop
(0076)    CLR_SDI;
    03BD B18E      IN	R24,0x0E
    03BE 7E8F      ANDI	R24,0xEF
    03BF B98E      OUT	0x0E,R24
(0077)    SET_SDO;
    03C0 9A75      SBI	0x0E,5
(0078)    CLR_SCK;
    03C1 B18E      IN	R24,0x0E
    03C2 7B8F      ANDI	R24,0xBF
    03C3 B98E      OUT	0x0E,R24
(0079)         for(i=0;i<15;i++) AD_write(0xff);               //初始化序列
    03C4 2766      CLR	R22
    03C5 C003      RJMP	0x03C9
    03C6 EF0F      LDI	R16,0xFF
    03C7 DF96      RCALL	_AD_write
    03C8 9563      INC	R22
    03C9 306F      CPI	R22,0xF
    03CA F3D8      BCS	0x03C6
(0080)        // AD_write(0xfe); 
(0081)        for(i=0;i<6;i++)  AD_write(ADResetData[i]);     //复位cs5532 
    03CB 2766      CLR	R22
    03CC C009      RJMP	0x03D6
    03CD EF8F      LDI	R24,0xFF
    03CE E090      LDI	R25,0
    03CF 2FE6      MOV	R30,R22
    03D0 27FF      CLR	R31
    03D1 0FE8      ADD	R30,R24
    03D2 1FF9      ADC	R31,R25
    03D3 9104      LPM	R16,0(Z)
    03D4 DF89      RCALL	_AD_write
    03D5 9563      INC	R22
    03D6 3066      CPI	R22,6
    03D7 F3A8      BCS	0x03CD
    03D8 C007      RJMP	0x03E0
(0082)         while(data!=0x10) //等待AD复位 
(0083)         { 
(0084)                 AD_write(0x0b); //读配置寄存器 
    03D9 E00B      LDI	R16,0xB
    03DA DF83      RCALL	_AD_write
(0085)                 data=AD_read(); 
    03DB DFA9      RCALL	_AD_read
    03DC 2F40      MOV	R20,R16
(0086)                 AD_read(); 
    03DD DFA7      RCALL	_AD_read
(0087)                 AD_read(); 
    03DE DFA6      RCALL	_AD_read
(0088)                 AD_read(); 
    03DF DFA5      RCALL	_AD_read
    03E0 3140      CPI	R20,0x10
    03E1 F7B9      BNE	0x03D9
(0089)         } 
(0090)         for(i=0;i<35;i++) 
    03E2 2766      CLR	R22
    03E3 C009      RJMP	0x03ED
(0091)         { 
(0092)                 AD_write(ADInitData[i]); 
    03E4 ED8C      LDI	R24,0xDC
    03E5 E090      LDI	R25,0
    03E6 2FE6      MOV	R30,R22
    03E7 27FF      CLR	R31
    03E8 0FE8      ADD	R30,R24
    03E9 1FF9      ADC	R31,R25
    03EA 9104      LPM	R16,0(Z)
    03EB DF72      RCALL	_AD_write
    03EC 9563      INC	R22
    03ED 3263      CPI	R22,0x23
    03EE F3A8      BCS	0x03E4
    03EF 940E0796  CALL	pop_gset2
    03F1 9508      RET
_AD_sample:
  data                 --> Y+0
    03F2 9724      SBIW	R28,4
(0093)         } 
(0094) } 
(0095) //cs5532采样 
(0096) void AD_sample(void) 
(0097) { 
(0098)         unsigned char data[4]; 
(0099)         AD_write(0x0c); 
    03F3 E00C      LDI	R16,0xC
    03F4 DF69      RCALL	_AD_write
(0100)         data[3]=0;         
    03F5 2422      CLR	R2
    03F6 822B      STD	Y+3,R2
(0101)         data[2]=AD_read(); 
    03F7 DF8D      RCALL	_AD_read
    03F8 830A      STD	Y+2,R16
(0102)         data[1]=AD_read(); 
    03F9 DF8B      RCALL	_AD_read
    03FA 8309      STD	Y+1,R16
(0103)         data[0]=AD_read(); 
    03FB DF89      RCALL	_AD_read
    03FC 8308      STD	Y+0,R16
(0104)         AD_read();//状态字节(溢出位和通道指示),没有用到,丢弃............. 
    03FD DF87      RCALL	_AD_read
    03FE 9624      ADIW	R28,4
    03FF 9508      RET
_CS5532_Txd:
  i                    --> R20
  dat                  --> R22
    0400 940E07A8  CALL	push_gset2
    0402 2F60      MOV	R22,R16
(0105) } 
(0106) void CS5532_Txd(unsigned char dat)//向CS5532写一字节数据
(0107) {
(0108)      unsigned char i;
(0109)      CLR_SCK;//时钟低 
    0403 B18E      IN	R24,0x0E
    0404 7B8F      ANDI	R24,0xBF
    0405 B98E      OUT	0x0E,R24
(0110)      CLR_CS;
    0406 B18E      IN	R24,0x0E
    0407 7F87      ANDI	R24,0xF7
    0408 B98E      OUT	0x0E,R24
(0111)      delay_loop(1);
    0409 E001      LDI	R16,1
    040A E010      LDI	R17,0
    040B 940E00A4  CALL	_delay_loop
(0112)      for(i=0;i<8;i++)
    040D 2744      CLR	R20
    040E C01D      RJMP	0x042C
(0113)      {
(0114)       if((dat<<i)&0x80) 
    040F 2F06      MOV	R16,R22
    0410 2F14      MOV	R17,R20
    0411 940E07CD  CALL	lsl8
    0413 2F80      MOV	R24,R16
    0414 7880      ANDI	R24,0x80
    0415 F011      BEQ	0x0418
(0115)        SET_SDI;   //数据送到SPI的SDI口
    0416 9A74      SBI	0x0E,4
    0417 C003      RJMP	0x041B
(0116)        else             
(0117)         CLR_SDI;
    0418 B18E      IN	R24,0x0E
    0419 7E8F      ANDI	R24,0xEF
    041A B98E      OUT	0x0E,R24
(0118)         delay_loop(2);
    041B E002      LDI	R16,2
    041C E010      LDI	R17,0
    041D 940E00A4  CALL	_delay_loop
(0119)        SET_SCK;    //时钟高   
    041F 9A76      SBI	0x0E,6
(0120)        delay_loop(2);
    0420 E002      LDI	R16,2
    0421 E010      LDI	R17,0
    0422 940E00A4  CALL	_delay_loop
(0121)        CLR_SCK;    //时钟低
    0424 B18E      IN	R24,0x0E
    0425 7B8F      ANDI	R24,0xBF
    0426 B98E      OUT	0x0E,R24
(0122)        delay_loop(2);
    0427 E002      LDI	R16,2
    0428 E010      LDI	R17,0
    0429 940E00A4  CALL	_delay_loop
    042B 9543      INC	R20
    042C 3048      CPI	R20,0x8
    042D F308      BCS	0x040F
(0123)      }
(0124)      CLR_SDI;
    042E B18E      IN	R24,0x0E
    042F 7E8F      ANDI	R24,0xEF
    0430 B98E      OUT	0x0E,R24
    0431 940E0796  CALL	pop_gset2
    0433 9508      RET
_CS5532_RXD:
  c                    --> Y+4
  RxdTxd4b             --> Y+0
  i                    --> R12
  j                    --> R10
    0434 940E07A4  CALL	push_gset4
    0436 9728      SBIW	R28,0x8
(0125) }
(0126) unsigned long CS5532_RXD(void)
(0127) {  
(0128)     unsigned long  c;
(0129)     unsigned char  RxdTxd4b[4];   
(0130)     unsigned char  i,j;
(0131)     c=0;
    0437 E040      LDI	R20,0
    0438 E050      LDI	R21,0
    0439 E060      LDI	R22,0
    043A E070      LDI	R23,0
    043B 01FE      MOVW	R30,R28
    043C 8344      STD	Z+4,R20
    043D 8355      STD	Z+5,R21
    043E 8366      STD	Z+6,R22
    043F 8377      STD	Z+7,R23
(0132)     CLR_SDI;
    0440 B18E      IN	R24,0x0E
    0441 7E8F      ANDI	R24,0xEF
    0442 B98E      OUT	0x0E,R24
(0133)        for(j=0;j<4;j++)
    0443 24AA      CLR	R10
    0444 C035      RJMP	0x047A
(0134)        {
(0135)        	for(i=0;i<8;i++)
    0445 24CC      CLR	R12
    0446 C02E      RJMP	0x0475
(0136)          {
(0137)          	SET_SCK; //时钟高   
    0447 9A76      SBI	0x0E,6
(0138)          delay_loop(2); 
    0448 E002      LDI	R16,2
    0449 E010      LDI	R17,0
    044A 940E00A4  CALL	_delay_loop
(0139)          RxdTxd4b[j]<<=1;      
    044C 01CE      MOVW	R24,R28
    044D 2C2A      MOV	R2,R10
    044E 2433      CLR	R3
    044F 0E28      ADD	R2,R24
    0450 1E39      ADC	R3,R25
    0451 01F1      MOVW	R30,R2
    0452 8040      LDD	R4,Z+0
    0453 0C44      LSL	R4
    0454 8240      STD	Z+0,R4
(0140)          if(SDO) 
    0455 9B65      SBIS	0x0C,5
    0456 C00A      RJMP	0x0461
(0141)          RxdTxd4b[j]|=0x01; //从SDO读取数据
    0457 01CE      MOVW	R24,R28
    0458 2C2A      MOV	R2,R10
    0459 2433      CLR	R3
    045A 0E28      ADD	R2,R24
    045B 1E39      ADC	R3,R25
    045C 01F1      MOVW	R30,R2
    045D 8180      LDD	R24,Z+0
    045E 6081      ORI	R24,1
    045F 8380      STD	Z+0,R24
    0460 C008      RJMP	0x0469
(0142)          else
(0143)          RxdTxd4b[j]|=0x00; //从SDO读取数据
    0461 01CE      MOVW	R24,R28
    0462 2C2A      MOV	R2,R10
    0463 2433      CLR	R3
    0464 0E28      ADD	R2,R24
    0465 1E39      ADC	R3,R25
    0466 01F1      MOVW	R30,R2
    0467 8040      LDD	R4,Z+0
    0468 8240      STD	Z+0,R4
(0144)          delay_loop(2);
    0469 E002      LDI	R16,2
    046A E010      LDI	R17,0
    046B 940E00A4  CALL	_delay_loop
(0145)          CLR_SCK;             //时钟低 
    046D B18E      IN	R24,0x0E
    046E 7B8F      ANDI	R24,0xBF
    046F B98E      OUT	0x0E,R24
(0146)          delay_loop(2);
    0470 E002      LDI	R16,2
    0471 E010      LDI	R17,0
    0472 940E00A4  CALL	_delay_loop
    0474 94C3      INC	R12
    0475 2D8C      MOV	R24,R12
    0476 3088      CPI	R24,0x8
    0477 F408      BCC	0x0479
    0478 CFCE      RJMP	0x0447
    0479 94A3      INC	R10
    047A 2D8A      MOV	R24,R10
    047B 3084      CPI	R24,4
    047C F408      BCC	0x047E
    047D CFC7      RJMP	0x0445
(0147)          }
(0148)        } 
(0149)        c |= RxdTxd4b[0];
    047E 8028      LDD	R2,Y+0
    047F 2433      CLR	R3
    0480 2444      CLR	R4
    0481 2455      CLR	R5
    0482 01FE      MOVW	R30,R28
    0483 8064      LDD	R6,Z+4
    0484 8075      LDD	R7,Z+5
    0485 8086      LDD	R8,Z+6
    0486 8097      LDD	R9,Z+7
    0487 2862      OR	R6,R2
    0488 2873      OR	R7,R3
    0489 2884      OR	R8,R4
    048A 2895      OR	R9,R5
    048B 01FE      MOVW	R30,R28
    048C 8264      STD	Z+4,R6
    048D 8275      STD	Z+5,R7
    048E 8286      STD	Z+6,R8
    048F 8297      STD	Z+7,R9
(0150)        c<<=8;
    0490 E088      LDI	R24,0x8
    0491 E090      LDI	R25,0
    0492 01FE      MOVW	R30,R28
    0493 8024      LDD	R2,Z+4
    0494 8035      LDD	R3,Z+5
    0495 8046      LDD	R4,Z+6
    0496 8057      LDD	R5,Z+7
    0497 938A      ST	R24,-Y
    0498 0181      MOVW	R16,R2
    0499 0192      MOVW	R18,R4
    049A 940E07C1  CALL	lsl32
    049C 01FE      MOVW	R30,R28
    049D 8304      STD	Z+4,R16
    049E 8315      STD	Z+5,R17
    049F 8326      STD	Z+6,R18
    04A0 8337      STD	Z+7,R19
(0151)        c |= RxdTxd4b[1];
    04A1 8029      LDD	R2,Y+1
    04A2 2433      CLR	R3
    04A3 2444      CLR	R4
    04A4 2455      CLR	R5
    04A5 01FE      MOVW	R30,R28
    04A6 8064      LDD	R6,Z+4
    04A7 8075      LDD	R7,Z+5
    04A8 8086      LDD	R8,Z+6
    04A9 8097      LDD	R9,Z+7
    04AA 2862      OR	R6,R2
    04AB 2873      OR	R7,R3
    04AC 2884      OR	R8,R4
    04AD 2895      OR	R9,R5
    04AE 01FE      MOVW	R30,R28
    04AF 8264      STD	Z+4,R6
    04B0 8275      STD	Z+5,R7
    04B1 8286      STD	Z+6,R8
    04B2 8297      STD	Z+7,R9
(0152)        c<<=8;
    04B3 E088      LDI	R24,0x8
    04B4 E090      LDI	R25,0
    04B5 01FE      MOVW	R30,R28
    04B6 8024      LDD	R2,Z+4
    04B7 8035      LDD	R3,Z+5
    04B8 8046      LDD	R4,Z+6
    04B9 8057      LDD	R5,Z+7
    04BA 938A      ST	R24,-Y
    04BB 0181      MOVW	R16,R2
    04BC 0192      MOVW	R18,R4
    04BD 940E07C1  CALL	lsl32
    04BF 01FE      MOVW	R30,R28
    04C0 8304      STD	Z+4,R16
    04C1 8315      STD	Z+5,R17
    04C2 8326      STD	Z+6,R18
    04C3 8337      STD	Z+7,R19
(0153)        c |= RxdTxd4b[2];
    04C4 802A      LDD	R2,Y+2
    04C5 2433      CLR	R3
    04C6 2444      CLR	R4
    04C7 2455      CLR	R5
    04C8 01FE      MOVW	R30,R28
    04C9 8064      LDD	R6,Z+4
    04CA 8075      LDD	R7,Z+5
    04CB 8086      LDD	R8,Z+6
    04CC 8097      LDD	R9,Z+7
    04CD 2862      OR	R6,R2
    04CE 2873      OR	R7,R3
    04CF 2884      OR	R8,R4
    04D0 2895      OR	R9,R5
    04D1 01FE      MOVW	R30,R28
    04D2 8264      STD	Z+4,R6
    04D3 8275      STD	Z+5,R7
    04D4 8286      STD	Z+6,R8
    04D5 8297      STD	Z+7,R9
(0154)        c<<=8;
    04D6 E088      LDI	R24,0x8
    04D7 E090      LDI	R25,0
    04D8 01FE      MOVW	R30,R28
    04D9 8024      LDD	R2,Z+4
    04DA 8035      LDD	R3,Z+5
    04DB 8046      LDD	R4,Z+6
    04DC 8057      LDD	R5,Z+7
    04DD 938A      ST	R24,-Y
    04DE 0181      MOVW	R16,R2
    04DF 0192      MOVW	R18,R4
    04E0 940E07C1  CALL	lsl32
    04E2 01FE      MOVW	R30,R28
    04E3 8304      STD	Z+4,R16
    04E4 8315      STD	Z+5,R17
    04E5 8326      STD	Z+6,R18
    04E6 8337      STD	Z+7,R19
(0155)        c |= RxdTxd4b[3];
    04E7 802B      LDD	R2,Y+3
    04E8 2433      CLR	R3
    04E9 2444      CLR	R4
    04EA 2455      CLR	R5
    04EB 01FE      MOVW	R30,R28
    04EC 8064      LDD	R6,Z+4
    04ED 8075      LDD	R7,Z+5
    04EE 8086      LDD	R8,Z+6
    04EF 8097      LDD	R9,Z+7
    04F0 2862      OR	R6,R2
    04F1 2873      OR	R7,R3

⌨️ 快捷键说明

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