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

📄 ad.lis

📁 ATmega128和ads7864实现ATP闭环控制
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .module AD.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\ATP_AVR\AD.c
 0000                   .dbfunc e AD_Init _AD_Init fV
                        .even
 0000           _AD_Init::
 0000                   .dbline -1
 0000                   .dbline 4
 0000           ; #include "public.h"
 0000           ; 
 0000           ; void AD_Init(void)
 0000           ; {
 0000                   .dbline 5
 0000           ;       SETBIT(AD_RST_OUT, AD_RST);
 0000 919A              sbi 0x12,1
 0002                   .dbline 6
 0002           ;       CLEARBIT(AD_RST_OUT, AD_RST);
 0002 9198              cbi 0x12,1
 0004                   .dbline 7
 0004           ;       NOP();
 0004 0000              nop
 0006                   .dbline 8
 0006           ;       NOP();
 0006 0000              nop
 0008                   .dbline 9
 0008           ;       SETBIT(AD_RST_OUT, AD_RST);
 0008 919A              sbi 0x12,1
 000A                   .dbline 10
 000A           ;       NOP();
 000A 0000              nop
 000C                   .dbline 11
 000C           ;       NOP();
 000C 0000              nop
 000E                   .dbline -2
 000E           L1:
 000E                   .dbline 0 ; func end
 000E 0895              ret
 0010                   .dbend
 0010                   .dbfunc e AD_GetData _AD_GetData fV
 0010           ;         uctemp -> y+0
 0010           ;     pusOutBuff -> R16,R17
                        .even
 0010           _AD_GetData::
 0010 2297              sbiw R28,2
 0012                   .dbline -1
 0012                   .dbline 15
 0012           ; }
 0012           ; 
 0012           ; void AD_GetData(u16* pusOutBuff)
 0012           ; {
 0012                   .dbline 18
 0012           ;       u8 uctemp[2];
 0012           ;       //u16 usADData[4]={0,0,0,0};
 0012           ;       pusOutBuff[0]=0;
 0012 2224              clr R2
 0014 3324              clr R3
 0016 F801              movw R30,R16
 0018 3182              std z+1,R3
 001A 2082              std z+0,R2
 001C                   .dbline 19
 001C           ;       pusOutBuff[1]=0;
 001C 3382              std z+3,R3
 001E 2282              std z+2,R2
 0020                   .dbline 20
 0020           ;       pusOutBuff[2]=0;
 0020 F801              movw R30,R16
 0022 3582              std z+5,R3
 0024 2482              std z+4,R2
 0026                   .dbline 21
 0026           ;       pusOutBuff[3]=0;
 0026 F801              movw R30,R16
 0028 3782              std z+7,R3
 002A 2682              std z+6,R2
 002C                   .dbline 25
 002C           ; 
 002C           ;       
 002C           ;       //hold channel A and channel B
 002C           ;       PORTD=PORTD&0x9F;       //bring HoldA,HoldB low
 002C 82B3              in R24,0x12
 002E 8F79              andi R24,159
 0030 82BB              out 0x12,R24
 0032                   .dbline 26
 0032           ;       PORTD=PORTD|0xE0;       //bring HoldA,HoldB high
 0032 82B3              in R24,0x12
 0034 806E              ori R24,224
 0036 82BB              out 0x12,R24
 0038           L3:
 0038                   .dbline 31
 0038           L4:
 0038                   .dbline 31
 0038           ; 
 0038           ;       //PORTD=PORTD&0xDF;     //bring HoldA,HoldB low
 0038           ;       //PORTD=PORTD|0xE0;     //bring HoldA,HoldB high
 0038           ;       
 0038           ;       while(CHECKBIT(AD_BUSY_IN, AD_BUSY));//wait until first convertion is started
 0038 8099              sbic 0x10,0
 003A FECF              rjmp L3
 003C           L6:
 003C                   .dbline 32
 003C           L7:
 003C                   .dbline 32
 003C           ;       while(0x00==CHECKBIT(AD_BUSY_IN, AD_BUSY));//wait until first convertion is finished
 003C 809B              sbis 0x10,0
 003E FECF              rjmp L6
 0040           L9:
 0040                   .dbline 33
 0040           L10:
 0040                   .dbline 33
 0040           ;       while(CHECKBIT(AD_BUSY_IN, AD_BUSY));//wait until second convertion is started
 0040 8099              sbic 0x10,0
 0042 FECF              rjmp L9
 0044           L12:
 0044                   .dbline 34
 0044           L13:
 0044                   .dbline 34
 0044           ;       while(0x00==CHECKBIT(AD_BUSY_IN, AD_BUSY));//wait until second convertion is finished
 0044 809B              sbis 0x10,0
 0046 FECF              rjmp L12
 0048                   .dbline 35
 0048           ;       CLEARBIT(AD_CS_OUT, AD_CS);//select the ads7864
 0048 80916500          lds R24,101
 004C 8E7F              andi R24,254
 004E 80936500          sts 101,R24
 0052                   .dbline 37
 0052           ; 
 0052           ;       SETBIT(AD_RD_OUT, AD_RD);
 0052 80916500          lds R24,101
 0056 8260              ori R24,2
 0058 80936500          sts 101,R24
 005C                   .dbline 39
 005C           ;       
 005C           ;       PORTD=PORTD|0x0C;
 005C 82B3              in R24,0x12
 005E 8C60              ori R24,12
 0060 82BB              out 0x12,R24
 0062                   .dbline 40
 0062           ;       PORTD=PORTD&0xE3;       //A2A1A0:000    channel A0
 0062 82B3              in R24,0x12
 0064 837E              andi R24,227
 0066 82BB              out 0x12,R24
 0068                   .dbline 41
 0068           ;       CLEARBIT(AD_RD_OUT, AD_RD);
 0068 80916500          lds R24,101
 006C 8D7F              andi R24,253
 006E 80936500          sts 101,R24
 0072                   .dbline 42
 0072           ;       NOP();
 0072 0000              nop
 0074                   .dbline 43
 0074           ;       uctemp[0]=PINC;         //first byte
 0074 23B2              in R2,0x13
 0076 2882              std y+0,R2
 0078                   .dbline 44
 0078           ;       SETBIT(AD_RD_OUT, AD_RD);
 0078 80916500          lds R24,101
 007C 8260              ori R24,2
 007E 80936500          sts 101,R24
 0082                   .dbline 45
 0082           ;       CLEARBIT(AD_RD_OUT, AD_RD);
 0082 80916500          lds R24,101
 0086 8D7F              andi R24,253
 0088 80936500          sts 101,R24
 008C                   .dbline 46
 008C           ;       NOP();
 008C 0000              nop
 008E                   .dbline 47
 008E           ;       uctemp[1]=PINC;         //second byte
 008E 23B2              in R2,0x13
 0090 2982              std y+1,R2
 0092                   .dbline 48
 0092           ;       SETBIT(AD_RD_OUT, AD_RD);
 0092 80916500          lds R24,101
 0096 8260              ori R24,2
 0098 80936500          sts 101,R24
 009C                   .dbline 49
 009C           ;       pusOutBuff[0]=(uctemp[1]&0x0F)<<8;
 009C 822D              mov R24,R2
 009E 9927              clr R25
 00A0 8F70              andi R24,15
 00A2 9070              andi R25,0
 00A4 982F              mov R25,R24
 00A6 8827              clr R24
 00A8 F801              movw R30,R16
 00AA 9183              std z+1,R25
 00AC 8083              std z+0,R24
 00AE                   .dbline 50
 00AE           ;       pusOutBuff[0]=pusOutBuff[0]|uctemp[0];
 00AE 2880              ldd R2,y+0
 00B0 3324              clr R3
 00B2 4080              ldd R4,z+0
 00B4 5180              ldd R5,z+1
 00B6 4228              or R4,R2
 00B8 5328              or R5,R3
 00BA 5182              std z+1,R5
 00BC 4082              std z+0,R4
 00BE                   .dbline 52
 00BE           ; 
 00BE           ;       PORTD=PORTD|0x0C;
 00BE 82B3              in R24,0x12
 00C0 8C60              ori R24,12
 00C2 82BB              out 0x12,R24
 00C4                   .dbline 53
 00C4           ;       PORTD=PORTD&0xE7;       //A2A1A0:001    channel A1
 00C4 82B3              in R24,0x12
 00C6 877E              andi R24,231
 00C8 82BB              out 0x12,R24
 00CA                   .dbline 54
 00CA           ;       CLEARBIT(AD_RD_OUT, AD_RD);
 00CA 80916500          lds R24,101
 00CE 8D7F              andi R24,253
 00D0 80936500          sts 101,R24
 00D4                   .dbline 55
 00D4           ;       NOP();
 00D4 0000              nop
 00D6                   .dbline 56
 00D6           ;       uctemp[0]=PINC;         //first byte
 00D6 23B2              in R2,0x13
 00D8 2882              std y+0,R2
 00DA                   .dbline 57
 00DA           ;       SETBIT(AD_RD_OUT, AD_RD);
 00DA 80916500          lds R24,101
 00DE 8260              ori R24,2
 00E0 80936500          sts 101,R24
 00E4                   .dbline 58
 00E4           ;       CLEARBIT(AD_RD_OUT, AD_RD);
 00E4 80916500          lds R24,101
 00E8 8D7F              andi R24,253
 00EA 80936500          sts 101,R24
 00EE                   .dbline 59
 00EE           ;       NOP();
 00EE 0000              nop
 00F0                   .dbline 60
 00F0           ;       uctemp[1]=PINC;         //second byte
 00F0 23B2              in R2,0x13
 00F2 2982              std y+1,R2
 00F4                   .dbline 61
 00F4           ;       SETBIT(AD_RD_OUT, AD_RD);
 00F4 80916500          lds R24,101
 00F8 8260              ori R24,2
 00FA 80936500          sts 101,R24
 00FE                   .dbline 62
 00FE           ;       pusOutBuff[1]=(uctemp[1]&0x0F)<<8;
 00FE 822D              mov R24,R2
 0100 9927              clr R25
 0102 8F70              andi R24,15
 0104 9070              andi R25,0
 0106 982F              mov R25,R24
 0108 8827              clr R24
 010A 9383              std z+3,R25
 010C 8283              std z+2,R24
 010E                   .dbline 63
 010E           ;       pusOutBuff[1]=pusOutBuff[1]|uctemp[0];
 010E C801              movw R24,R16
 0110 0296              adiw R24,2
 0112 4880              ldd R4,y+0
 0114 5524              clr R5
 0116 FC01              movw R30,R24
 0118 6080              ldd R6,z+0
 011A 7180              ldd R7,z+1
 011C 6428              or R6,R4
 011E 7528              or R7,R5
 0120 7182              std z+1,R7
 0122 6082              std z+0,R6
 0124                   .dbline 67
 0124           ; 
 0124           ; 
 0124           ;       
 0124           ;       PORTD=PORTD|0x0C;
 0124 82B3              in R24,0x12
 0126 8C60              ori R24,12
 0128 82BB              out 0x12,R24
 012A                   .dbline 68
 012A           ;       PORTD=PORTD&0xEB;       //A2A1A0:010    channel B0
 012A 82B3              in R24,0x12
 012C 8B7E              andi R24,235
 012E 82BB              out 0x12,R24
 0130                   .dbline 69
 0130           ;       CLEARBIT(AD_RD_OUT, AD_RD);
 0130 80916500          lds R24,101
 0134 8D7F              andi R24,253
 0136 80936500          sts 101,R24
 013A                   .dbline 70
 013A           ;       NOP();
 013A 0000              nop
 013C                   .dbline 71
 013C           ;       uctemp[0]=PINC;         //first byte
 013C 23B2              in R2,0x13
 013E 2882              std y+0,R2
 0140                   .dbline 72
 0140           ;       SETBIT(AD_RD_OUT, AD_RD);
 0140 80916500          lds R24,101
 0144 8260              ori R24,2
 0146 80936500          sts 101,R24
 014A                   .dbline 73
 014A           ;       CLEARBIT(AD_RD_OUT, AD_RD);
 014A 80916500          lds R24,101
 014E 8D7F              andi R24,253
 0150 80936500          sts 101,R24
 0154                   .dbline 74
 0154           ;       NOP();
 0154 0000              nop
 0156                   .dbline 75
 0156           ;       uctemp[1]=PINC;         //second byte
 0156 23B2              in R2,0x13
 0158 2982              std y+1,R2
 015A                   .dbline 76
 015A           ;       SETBIT(AD_RD_OUT, AD_RD);
 015A 80916500          lds R24,101
 015E 8260              ori R24,2
 0160 80936500          sts 101,R24
 0164                   .dbline 77
 0164           ;       pusOutBuff[2]=(uctemp[1]&0x0F)<<8;
 0164 822D              mov R24,R2
 0166 9927              clr R25
 0168 8F70              andi R24,15
 016A 9070              andi R25,0
 016C 982F              mov R25,R24
 016E 8827              clr R24
 0170 F801              movw R30,R16
 0172 9583              std z+5,R25
 0174 8483              std z+4,R24
 0176                   .dbline 78
 0176           ;       pusOutBuff[2]=pusOutBuff[2]|uctemp[0];
 0176 C801              movw R24,R16
 0178 0496              adiw R24,4
 017A 4880              ldd R4,y+0
 017C 5524              clr R5
 017E FC01              movw R30,R24
 0180 6080              ldd R6,z+0
 0182 7180              ldd R7,z+1
 0184 6428              or R6,R4
 0186 7528              or R7,R5
 0188 7182              std z+1,R7
 018A 6082              std z+0,R6
 018C                   .dbline 81
 018C           ; 
 018C           ;       
 018C           ;       PORTD=PORTD|0x0C;
 018C 82B3              in R24,0x12
 018E 8C60              ori R24,12
 0190 82BB              out 0x12,R24
 0192                   .dbline 82
 0192           ;       PORTD=PORTD&0xEF;       //A2A1A0:011    channel B1
 0192 82B3              in R24,0x12
 0194 8F7E              andi R24,239
 0196 82BB              out 0x12,R24
 0198                   .dbline 83
 0198           ;       CLEARBIT(AD_RD_OUT, AD_RD);
 0198 80916500          lds R24,101

⌨️ 快捷键说明

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