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

📄 cs5532.lis

📁 LTC2449 AD转换 LTC2449 AD转换 LTC2449 AD转换
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .module cs5532.c
                        .area lit(rom, con, rel)
 0000           _ADInitData::
 0000 41FE              .byte 'A,254
 0002 0000              .byte 0,0
 0004 00FE              .byte 0,254
 0006 0000              .byte 0,0
 0008 00FE              .byte 0,254
 000A 0000              .byte 0,0
 000C 00FE              .byte 0,254
 000E 0000              .byte 0,0
 0010 0045              .byte 0,'E
 0012 31C0              .byte 49,192
 0014 31C0              .byte 49,192
 0016 31C0              .byte 49,192
 0018 31C0              .byte 49,192
 001A 31C0              .byte 49,192
 001C 31C0              .byte 49,192
 001E 31C0              .byte 49,192
 0020 31C0              .byte 49,192
 0022 C0                .byte 192
 0023                   .dbfile E:\mysoft\DH980\cs5532.c
 0023                   .dbsym e ADInitData _ADInitData A[35:35]kc
 0023           _ADResetData::
 0023 FE03              .byte 254,3
 0025 2000              .byte 32,0
 0027 0000              .byte 0,0
 0029                   .dbsym e ADResetData _ADResetData A[6:6]kc
                        .area text(rom, con, rel)
 0000                   .dbfile E:\mysoft\DH980\cs5532.c
 0000                   .dbfunc e AD_delay _AD_delay fV
                        .even
 0000           _AD_delay::
 0000                   .dbline -1
 0000                   .dbline 24
 0000           ; #define _CS5532_C
 0000           ; #include <iom169v.h>
 0000           ; #include <macros.h>
 0000           ; #include <stdio.h>
 0000           ; #include "main.h"
 0000           ; #include "cs5532.h"
 0000           ; 
 0000           ; const unsigned char ADInitData[35]= 
 0000           ;         {0x41, 
 0000           ;          0xfe,0x00,0x00,0x00,     //通道0 
 0000           ;          0xfe,0x00,0x00,0x00,     //通道1 
 0000           ;          0xfe,0x00,0x00,0x00,     //通道2 
 0000           ;          0xfe,0x00,0x00,0x00,     //通道3 
 0000           ;          0x45,                 //设置所有通道设置寄存器 
 0000           ;          0x31,0xc0,0x31,0xc0,      //0x31:12.5Hz,通道1(1、2脚) 
 0000           ;          0x31,0xc0,0x31,0xc0,      //0x71,通道2(19、20脚) 
 0000           ;          0x31,0xc0,0x31,0xc0, 
 0000           ;          0x31,0xc0,0x31,0xc0, 
 0000           ;          0xc0};     //执行多路连续转换 
 0000           ; const unsigned char ADResetData[6]= 
 0000           ;         {0xfe,0x03,0x20,0x00,0x00,0x00}; //配置寄存器RS位置1,AD复位 
 0000           ; //cs5532操作IO延时 
 0000           ; void AD_delay(void) 
 0000           ; { 
 0000                   .dbline -2
 0000           L1:
 0000                   .dbline 0 ; func end
 0000 0895              ret
 0002                   .dbend
 0002                   .dbfunc e AD_write _AD_write fV
 0002           ;           temp -> R20
 0002           ;              i -> R22
 0002           ;           byte -> R22
                        .even
 0002           _AD_write::
 0002 0E940000          xcall push_gset2
 0006 602F              mov R22,R16
 0008                   .dbline -1
 0008                   .dbline 28
 0008           ; } 
 0008           ; //cs5532写寄存器 
 0008           ; void AD_write(unsigned char byte) 
 0008           ; { 
 0008                   .dbline 30
 0008           ;         unsigned char i,temp; 
 0008           ;         temp = byte; 
 0008 462F              mov R20,R22
 000A                   .dbline 31
 000A           ;         for(i=0;i<8;i++) 
 000A 6627              clr R22
 000C 19C0              xjmp L6
 000E           L3:
 000E                   .dbline 32
 000E           ;         { 
 000E                   .dbline 33
 000E           ;                       if(temp&0x80) 
 000E 47FF              sbrs R20,7
 0010 02C0              rjmp L7
 0012                   .dbline 34
 0012           ;                                               SET_SDI;   //数据送到SPI的SDI口
 0012 749A              sbi 0xe,4
 0014 03C0              xjmp L8
 0016           L7:
 0016                   .dbline 36
 0016           ;                                               else             
 0016           ;                                               CLR_SDI;
 0016 8EB1              in R24,0xe
 0018 8F7E              andi R24,239
 001A 8EB9              out 0xe,R24
 001C           L8:
 001C                   .dbline 37
 001C 02E0              ldi R16,2
 001E 10E0              ldi R17,0
 0020 0E940000          xcall _delay_loop
 0024                   .dbline 38
 0024 769A              sbi 0xe,6
 0026                   .dbline 39
 0026 02E0              ldi R16,2
 0028 10E0              ldi R17,0
 002A 0E940000          xcall _delay_loop
 002E                   .dbline 40
 002E 8EB1              in R24,0xe
 0030 8F7B              andi R24,191
 0032 8EB9              out 0xe,R24
 0034                   .dbline 41
 0034 02E0              ldi R16,2
 0036 10E0              ldi R17,0
 0038 0E940000          xcall _delay_loop
 003C                   .dbline 42
 003C 440F              lsl R20
 003E                   .dbline 43
 003E           L4:
 003E                   .dbline 31
 003E 6395              inc R22
 0040           L6:
 0040                   .dbline 31
 0040 6830              cpi R22,8
 0042 28F3              brlo L3
 0044                   .dbline 44
 0044           ;                 delay_loop(2); 
 0044           ;                 SET_SCK;    //时钟高   
 0044           ;                                               delay_loop(2);
 0044           ;                                               CLR_SCK;    //时钟低
 0044           ;                                               delay_loop(2);
 0044           ;                 temp<<=1; 
 0044           ;         } 
 0044           ;         CLR_SDI;
 0044 8EB1              in R24,0xe
 0046 8F7E              andi R24,239
 0048 8EB9              out 0xe,R24
 004A                   .dbline -2
 004A           L2:
 004A 0E940000          xcall pop_gset2
 004E                   .dbline 0 ; func end
 004E 0895              ret
 0050                   .dbsym r temp 20 c
 0050                   .dbsym r i 22 c
 0050                   .dbsym r byte 22 c
 0050                   .dbend
 0050                   .dbfunc e AD_read _AD_read fc
 0050           ;              i -> R20
 0050           ;           data -> R22
                        .even
 0050           _AD_read::
 0050 0E940000          xcall push_gset2
 0054                   .dbline -1
 0054                   .dbline 48
 0054           ; } 
 0054           ; //cs5532读寄存器 
 0054           ; unsigned char AD_read(void) 
 0054           ; { 
 0054                   .dbline 49
 0054           ;         unsigned char i,data=0; 
 0054 6627              clr R22
 0056                   .dbline 50
 0056           ;         CLR_SCK;//sclk=0                 
 0056 8EB1              in R24,0xe
 0058 8F7B              andi R24,191
 005A 8EB9              out 0xe,R24
 005C                   .dbline 51
 005C           ;         delay_loop(2);
 005C 02E0              ldi R16,2
 005E 10E0              ldi R17,0
 0060 0E940000          xcall _delay_loop
 0064                   .dbline 52
 0064           ;         for(i=0;i<8;i++) 
 0064 4427              clr R20
 0066 17C0              xjmp L13
 0068           L10:
 0068                   .dbline 53
 0068           ;         { 
 0068                   .dbline 54
 0068           ;             SET_SCK;    //时钟高   
 0068 769A              sbi 0xe,6
 006A                   .dbline 55
 006A           ;                                               delay_loop(2);
 006A 02E0              ldi R16,2
 006C 10E0              ldi R17,0
 006E 0E940000          xcall _delay_loop
 0072                   .dbline 56
 0072           ;                                               data<<=1;
 0072 660F              lsl R22
 0074                   .dbline 57
 0074           ;            if(SDO)         
 0074 659B              sbis 0xc,5
 0076 02C0              rjmp L14
 0078                   .dbline 58
 0078           ;                  data|=0x01; 
 0078 6160              ori R22,1
 007A 01C0              xjmp L15
 007C           L14:
 007C                   .dbline 60
 007C           ;            else
 007C           ;               data &= 0xfe;
 007C 6E7F              andi R22,254
 007E           L15:
 007E                   .dbline 61
 007E 02E0              ldi R16,2
 0080 10E0              ldi R17,0
 0082 0E940000          xcall _delay_loop
 0086                   .dbline 63
 0086 8EB1              in R24,0xe
 0088 8F7B              andi R24,191
 008A 8EB9              out 0xe,R24
 008C                   .dbline 64
 008C 02E0              ldi R16,2
 008E 10E0              ldi R17,0
 0090 0E940000          xcall _delay_loop
 0094                   .dbline 65
 0094           L11:
 0094                   .dbline 52
 0094 4395              inc R20
 0096           L13:
 0096                   .dbline 52
 0096 4830              cpi R20,8
 0098 38F3              brlo L10
 009A                   .dbline 66
 009A           ;                 delay_loop(2); 
 009A           ;               
 009A           ;                 CLR_SCK;    //时钟低
 009A           ;                                               delay_loop(2);
 009A           ;         } 
 009A           ;    return(data); 
 009A 062F              mov R16,R22
 009C                   .dbline -2
 009C           L9:
 009C 0E940000          xcall pop_gset2
 00A0                   .dbline 0 ; func end
 00A0 0895              ret
 00A2                   .dbsym r i 20 c
 00A2                   .dbsym r data 22 c
 00A2                   .dbend
 00A2                   .dbfunc e Init5532 _Init5532 fV
 00A2           ;           data -> R20
 00A2           ;              i -> R22
                        .even
 00A2           _Init5532::
 00A2 0E940000          xcall push_gset2
 00A6                   .dbline -1
 00A6                   .dbline 70
 00A6           ; } 
 00A6           ; //初始化cs5532 
 00A6           ; void Init5532(void) 
 00A6           ; { 
 00A6                   .dbline 71
 00A6           ;         unsigned char i,data=0; 
 00A6 4427              clr R20
 00A8                   .dbline 72
 00A8           ;          SET_CS;
 00A8 739A              sbi 0xe,3
 00AA                   .dbline 73
 00AA           ;    delay_loop(2);
 00AA 02E0              ldi R16,2
 00AC 10E0              ldi R17,0
 00AE 0E940000          xcall _delay_loop
 00B2                   .dbline 74
 00B2           ;    CLR_CS; //片选使能
 00B2 8EB1              in R24,0xe
 00B4 877F              andi R24,247
 00B6 8EB9              out 0xe,R24
 00B8                   .dbline 75
 00B8           ;    delay_loop(2);
 00B8 02E0              ldi R16,2
 00BA 10E0              ldi R17,0
 00BC 0E940000          xcall _delay_loop
 00C0                   .dbline 76
 00C0           ;    CLR_SDI;
 00C0 8EB1              in R24,0xe
 00C2 8F7E              andi R24,239
 00C4 8EB9              out 0xe,R24
 00C6                   .dbline 77
 00C6           ;    SET_SDO;
 00C6 759A              sbi 0xe,5
 00C8                   .dbline 78
 00C8           ;    CLR_SCK;
 00C8 8EB1              in R24,0xe
 00CA 8F7B              andi R24,191
 00CC 8EB9              out 0xe,R24
 00CE                   .dbline 79
 00CE 6627              clr R22
 00D0 03C0              xjmp L20
 00D2           L17:
 00D2                   .dbline 79
 00D2 0FEF              ldi R16,255
 00D4 96DF              xcall _AD_write
 00D6           L18:
 00D6                   .dbline 79
 00D6 6395              inc R22
 00D8           L20:
 00D8                   .dbline 79
 00D8           ;         for(i=0;i<15;i++) AD_write(0xff);               //初始化序列
 00D8 6F30              cpi R22,15
 00DA D8F3              brlo L17
 00DC                   .dbline 81
 00DC 6627              clr R22
 00DE 09C0              xjmp L24
 00E0           L21:
 00E0                   .dbline 81
 00E0 80E0              ldi R24,<_ADResetData
 00E2 90E0              ldi R25,>_ADResetData
 00E4 E62F              mov R30,R22
 00E6 FF27              clr R31
 00E8 E80F              add R30,R24
 00EA F91F              adc R31,R25
 00EC 0491              lpm R16,Z
 00EE 89DF              xcall _AD_write
 00F0           L22:
 00F0                   .dbline 81
 00F0 6395              inc R22
 00F2           L24:
 00F2                   .dbline 81
 00F2           ;        // AD_write(0xfe); 
 00F2           ;        for(i=0;i<6;i++)  AD_write(ADResetData[i]);     //复位cs5532 
 00F2 6630              cpi R22,6
 00F4 A8F3              brlo L21
 00F6 07C0              xjmp L26
 00F8           L25:
 00F8                   .dbline 83
 00F8                   .dbline 84
 00F8 0BE0              ldi R16,11
 00FA 83DF              xcall _AD_write
 00FC                   .dbline 85
 00FC A9DF              xcall _AD_read
 00FE 402F              mov R20,R16
 0100                   .dbline 86
 0100 A7DF              xcall _AD_read
 0102                   .dbline 87
 0102 A6DF              xcall _AD_read
 0104                   .dbline 88
 0104 A5DF              xcall _AD_read
 0106                   .dbline 89
 0106           L26:
 0106                   .dbline 82
 0106           ;         while(data!=0x10) //等待AD复位 
 0106 4031              cpi R20,16
 0108 B9F7              brne L25
 010A                   .dbline 90
 010A           ;         { 
 010A           ;                 AD_write(0x0b); //读配置寄存器 
 010A           ;                 data=AD_read(); 
 010A           ;                 AD_read(); 
 010A           ;                 AD_read(); 
 010A           ;                 AD_read(); 
 010A           ;         } 
 010A           ;         for(i=0;i<35;i++) 
 010A 6627              clr R22
 010C 09C0              xjmp L31
 010E           L28:
 010E                   .dbline 91
 010E                   .dbline 92
 010E 80E0              ldi R24,<_ADInitData

⌨️ 快捷键说明

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