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

📄 cs5522.lis

📁 前段时间做的一个东西,用的24位高精度AD转换芯片CS5532和12DA转换器max531的AVR驱动.芯片用的是ATMEGA8515,开发环境ICCAVR.CS5532的内部寄存器太多,设置有些复杂
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                       ;         { DDRC=DDRC|cs;
 00A2                   .dbline 77
 00A2 A19A              sbi 0x14,1
 00A4                   .dbline 78
                       ;           DDRC=DDRC|sclk;
 00A4 A09A              sbi 0x14,0
 00A6                   .dbline 79
                       ;           DDRB=DDRB|sdi;          
 00A6 BB9A              sbi 0x17,3
 00A8                   .dbline 80
                       ;           PORTC=PORTC&~cs;  //片选  
 00A8 A998              cbi 0x15,1
 00AA                   .dbline 81
                       ;           PORTB|=sdi;            
 00AA C39A              sbi 0x18,3
 00AC                   .dbline 82
                       ;           Se_Cs_W(write1);
 00AC 062F              mov R16,R22
 00AE A8DF              rcall _Se_Cs_W
 00B0                   .dbline 83
                       ;           Se_Cs_W(write2);
 00B0 042F              mov R16,R20
 00B2 A6DF              rcall _Se_Cs_W
 00B4                   .dbline 84
                       ;           Se_Cs_W(write3);
 00B4 0C81              ldd R16,y+4
 00B6 A4DF              rcall _Se_Cs_W
 00B8                   .dbline 85
                       ;           Se_Cs_W(write4);
 00B8 0E81              ldd R16,y+6
 00BA A2DF              rcall _Se_Cs_W
 00BC                   .dbline 86
                       ;           PORTC=PORTC|cs;   
 00BC A99A              sbi 0x15,1
 00BE                   .dbline -2
 00BE                   .dbline 88
                       ;         
                       ;         }    
 00BE                 L14:
 00BE 00D0              rcall pop_gset2
 00C0                   .dbline 0 ; func end
 00C0 0895              ret
 00C2                   .dbsym l write4 6 c
 00C2                   .dbsym l write3 4 c
 00C2                   .dbsym r write2 20 c
 00C2                   .dbsym r write1 22 c
 00C2                   .dbfunc s ADC _ADC fI
                       ;        ADCtemp -> R20
                         .even
 00C2                 _ADC::
 00C2 00D0              rcall push_gset1
 00C4 402F              mov R20,R16
 00C6                   .dbline -1
 00C6                   .dbline 91
                       ; //***********************************
                       ; void ADC(unsigned char ADCtemp)
                       ;       {
 00C6                   .dbline 93
                       ;           
                       ;           DDRC=DDRC|cs;
 00C6 A19A              sbi 0x14,1
 00C8                   .dbline 94
                       ;           DDRC=DDRC|sclk;
 00C8 A09A              sbi 0x14,0
 00CA                   .dbline 95
                       ;           DDRB=DDRB|sdi;
 00CA BB9A              sbi 0x17,3
 00CC                   .dbline 96
                       ;           DDRB=DDRB&~sdo;
 00CC BC98              cbi 0x17,4
 00CE                   .dbline 97
                       ;           PORTB|=sdo;//选择为输入
 00CE C49A              sbi 0x18,4
 00D0                   .dbline 98
                       ;           PORTC=PORTC&~cs;  //片选                        
 00D0 A998              cbi 0x15,1
 00D2                   .dbline 99
                       ;           Se_Cs_W(ADCtemp);       
 00D2 042F              mov R16,R20
 00D4 95DF              rcall _Se_Cs_W
 00D6                   .dbline 100
                       ;           PORTC=PORTC|cs;    
 00D6 A99A              sbi 0x15,1
 00D8                   .dbline -2
 00D8                   .dbline 102
                       ;       
                       ;       }     
 00D8                 L15:
 00D8 00D0              rcall pop_gset1
 00DA                   .dbline 0 ; func end
 00DA 0895              ret
 00DC                   .dbsym r ADCtemp 20 c
 00DC                   .dbfunc s ReceiveData _ReceiveData fI
                       ;    ReceiveTemp -> R20
                         .even
 00DC                 _ReceiveData::
 00DC 00D0              rcall push_gset1
 00DE                   .dbline -1
 00DE                   .dbline 106
                       ; //**********************************
                       ; //接收CS5522的数据:
                       ; void ReceiveData(void)
                       ;         {
 00DE                   .dbline 108
                       ;            unsigned char ReceiveTemp;
                       ;            DDRB=DDRB&~sdo;
 00DE BC98              cbi 0x17,4
 00E0                   .dbline 109
                       ;            PORTB|=sdo;//选择为输入
 00E0 C49A              sbi 0x18,4
 00E2                   .dbline 110
                       ;            DDRC=DDRC|cs;
 00E2 A19A              sbi 0x14,1
 00E4                   .dbline 111
                       ;            PORTC=PORTC&~cs;  //片选     
 00E4 A998              cbi 0x15,1
 00E6                   .dbline 112
                       ;            DDRC=DDRC|sclk;
 00E6 A09A              sbi 0x14,0
 00E8                   .dbline 113
                       ;            PORTC=PORTC|sclk;
 00E8 A89A              sbi 0x15,0
 00EA                 L17:
 00EA                   .dbline 115
                       ;           do    
                       ;            { 
 00EA                   .dbline 116
                       ;              ReceiveTemp=PINB;
 00EA 46B3              in R20,0x16
 00EC                   .dbline 117
                       ;              ReceiveTemp=ReceiveTemp&sdo;
 00EC 4071              andi R20,16
 00EE                   .dbline 118
                       ;              }
 00EE                 L18:
 00EE                   .dbline 119
                       ;           while(ReceiveTemp);    
 00EE 4423              tst R20
 00F0 E1F7              brne L17
 00F2                   .dbline 120
                       ;           data[2]=ReadW();
 00F2 9DDF              rcall _ReadW
 00F4 202E              mov R2,R16
 00F6 312E              mov R3,R17
 00F8 20920200          sts _data+2,R2
 00FC                   .dbline 121
                       ;           data[2]=ReadW();
 00FC 98DF              rcall _ReadW
 00FE 202E              mov R2,R16
 0100 312E              mov R3,R17
 0102 20920200          sts _data+2,R2
 0106                   .dbline 122
                       ;           data[1]=ReadW();
 0106 93DF              rcall _ReadW
 0108 202E              mov R2,R16
 010A 312E              mov R3,R17
 010C 20920100          sts _data+1,R2
 0110                   .dbline 123
                       ;           data[0]=ReadW();             
 0110 8EDF              rcall _ReadW
 0112 202E              mov R2,R16
 0114 312E              mov R3,R17
 0116 20920000          sts _data,R2
 011A                   .dbline 124
                       ;           PORTC=PORTC|cs;   
 011A A99A              sbi 0x15,1
 011C                   .dbline -2
 011C                   .dbline 125
                       ;         }
 011C                 L16:
 011C 00D0              rcall pop_gset1
 011E                   .dbline 0 ; func end
 011E 0895              ret
 0120                   .dbsym r ReceiveTemp 20 c
 0120                   .dbfunc s initserial _initserial fI
                       ;       Init_Tem -> R20
                         .even
 0120                 _initserial::
 0120 00D0              rcall push_gset1
 0122                   .dbline -1
 0122                   .dbline 129
                       ; //***********************************
                       ; //起动串口。
                       ;  void initserial(void)
                       ;     { 
 0122                   .dbline 130
                       ;       unsigned char Init_Tem=15;
 0122 4FE0              ldi R20,15
 0124                   .dbline 131
                       ;       DDRC=DDRC|cs;
 0124 A19A              sbi 0x14,1
 0126                   .dbline 132
                       ;       DDRC=DDRC|sclk;
 0126 A09A              sbi 0x14,0
 0128                   .dbline 133
                       ;       PORTC=PORTC&~cs;
 0128 A998              cbi 0x15,1
 012A                   .dbline 134
                       ;       DDRB=DDRB|sdi;
 012A BB9A              sbi 0x17,3
 012C 03C0              rjmp L25
 012E                 L24:
 012E                   .dbline 136
 012E                   .dbline 137
 012E 0FEF              ldi R16,255
 0130 67DF              rcall _Se_Cs_W
 0132                   .dbline 138
 0132 4A95              dec R20
 0134                   .dbline 139
 0134                 L25:
 0134                   .dbline 135
                       ;       while(Init_Tem)
 0134 4423              tst R20
 0136 D9F7              brne L24
 0138                   .dbline 140
                       ;           {
                       ;             Se_Cs_W(0xff);
                       ;             Init_Tem--;       
                       ;            }
                       ;       Se_Cs_W(0xfe);    
 0138 0EEF              ldi R16,254
 013A 62DF              rcall _Se_Cs_W
 013C                   .dbline 141
                       ;       PORTC=PORTC|cs;
 013C A99A              sbi 0x15,1
 013E                   .dbline -2
 013E                   .dbline 142
                       ;     }
 013E                 L23:
 013E 00D0              rcall pop_gset1
 0140                   .dbline 0 ; func end
 0140 0895              ret
 0142                   .dbsym r Init_Tem 20 c
 0142                   .dbfunc s InitCs _InitCs fI
                       ;       InitTemp -> R20
                         .even
 0142                 _InitCs::
 0142 00D0              rcall push_gset1
 0144 2397              sbiw R28,3
 0146                   .dbline -1
 0146                   .dbline 146
                       ; //***********************************
                       ; //配置CS5522
                       ; void InitCs(void)
                       ;         {
 0146                   .dbline 149
                       ;         
                       ;              unsigned char InitTemp;
                       ;              initserial();    //起动串口。     
 0146 ECDF              rcall _initserial
 0148                   .dbline 153
                       ; //===================设置配置寄存器=======================
                       ; //配置RS位寄存器写一 
                       ;        //  distemp();
                       ;          F_Word(0x03,0x00,0x00,0x80);    //直接写4字节

⌨️ 快捷键说明

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