📄 adc11p.lis
字号:
.module ADC11P.c
.area text
0000 .dbfile ADC11P.c
0000 .dbfunc e ADC11P _ADC11P fV
0000 ; i -> 0,X
0000 ; j -> 1,X
0000 ; temp -> 2,X
0000 ; buff -> 4,X
0000 ; flag -> 6,X
0000 ; channel -> 7,X
0000 ; ADValue -> 11,X
0000 ; cs -> 10,X
0000 _ADC11P::
0000 .dbline -1
0000 A7F8 ais #-8
0002 95 tsx
0003 .dbline 16
0003 ; //-------------------------------------------------------------------------*
0003 ; //文件描述:本文件包含了AD采集的2子程序,分别为: *
0003 ; //(1)ADC11P:1片2543-11路AD采集 *
0003 ; //(2)TLC2543:TLC2543芯片A/D转换子程序 *
0003 ; //-------------------------------------------------------------------------*
0003 ; #include "ADC11P.h"
0003 ;
0003 ; //A/D转换并求平均值(11路)子程序(AD22P.ASM)---------------------------------*
0003 ; //功 能:采集TLC2543,共11通道,取16次平均值放入内存ADValue *
0003 ; //参 数:cs:片选,cs=0~7对应PTC0~7 *
0003 ; // ADValue:存放11路AD转换结果的数组首地址 *
0003 ; //返 回:内存ADValue开始连续的11个地址内即为转换的结果 *
0003 ; //调 用:TLC2543 *
0003 ; //-------------------------------------------------------------------------*
0003 ; void ADC11P(INT8U cs,INT16U *ADValue)
0003 ; {
0003 .dbline 21
0003 ; INT8U i,j,channel,flag,buff[2];
0003 ; INT16U temp;
0003 ;
0003 ; //1 将A/D数据存放区清0
0003 ; for(flag=0;flag<=10;flag++)
0003 6F06 clr 6,X
0005 2020 bra L5
0007 L2:
0007 .dbline 22
0007 3F00 clr *__r0
0009 E606 lda 6,X
000B B700 sta *__r1
000D 3800 lsl *__r1
000F 3900 rol *__r0
0011 B600 lda *__r1
0013 EB0C add 12,X
0015 B700 sta *__r1
0017 B600 lda *__r0
0019 E90B adc 11,X
001B B700 sta *__r0
001D 4F clra
001E 5500 ldhx *__r0
0020 F7 sta ,x
0021 4F clra
0022 E701 sta 1,x
0024 95 tsx
0025 L3:
0025 .dbline 21
0025 6C06 inc 6,X
0027 L5:
0027 .dbline 21
0027 E606 lda 6,X
0029 A10A cmp #10
002B 23DA bls L2
002D .dbline 26
002D ; ADValue[flag]=0;
002D ;
002D ;
002D ; //3 对11个通道采集数据,每一路采集16次,16次的数据总和-->ADValue
002D ; for(j=1;j<=16;j++)
002D A601 lda #1
002F E701 sta 1,X
0031 CC00BA jmp L9
0034 L6:
0034 .dbline 27
0034 ; {
0034 .dbline 28
0034 ; flag=0;
0034 6F06 clr 6,X
0036 .dbline 30
0036 ; //3.1第0片TLC2543的0~10通道转换
0036 ; for(channel=0;channel<=10;channel++)
0036 6F07 clr 7,X
0038 2078 bra L13
003A L10:
003A .dbline 31
003A .dbline 33
003A AF04 aix #4
003C 89 pshx
003D 8B pshh
003E 95 tsx
003F AF02 aix #2
0041 3F00 clr *__r0
0043 E607 lda 7,X
0045 87 psha
0046 B600 lda *__r0
0048 87 psha
0049 3F00 clr *__r0
004B E60A lda 10,X
004D 87 psha
004E B600 lda *__r0
0050 87 psha
0051 CD0103 jsr _TLC2543
0054 A706 ais #6
0056 95 tsx
0057 .dbline 34
0057 AF04 aix #4
0059 89 pshx
005A 8B pshh
005B 95 tsx
005C AF02 aix #2
005E 3F00 clr *__r0
0060 E607 lda 7,X
0062 87 psha
0063 B600 lda *__r0
0065 87 psha
0066 3F00 clr *__r0
0068 E60A lda 10,X
006A 87 psha
006B B600 lda *__r0
006D 87 psha
006E CD0103 jsr _TLC2543
0071 A706 ais #6
0073 95 tsx
0074 .dbline 36
0074 E604 lda 4,X
0076 E702 sta 2,X
0078 E605 lda 5,X
007A E703 sta 3,X
007C .dbline 37
007C 3F00 clr *__r0
007E E606 lda 6,X
0080 B700 sta *__r1
0082 3800 lsl *__r1
0084 3900 rol *__r0
0086 B600 lda *__r1
0088 EB0C add 12,X
008A B700 sta *__r1
008C B600 lda *__r0
008E E90B adc 11,X
0090 B700 sta *__r0
0092 5500 ldhx *__r0
0094 E601 lda 1,x
0096 B700 sta *__r3
0098 F6 lda ,x
0099 95 tsx
009A B700 sta *__r2
009C B600 lda *__r3
009E EB03 add 3,X
00A0 B700 sta *__r3
00A2 B600 lda *__r2
00A4 E902 adc 2,X
00A6 5500 ldhx *__r0
00A8 F7 sta ,x
00A9 B600 lda *__r3
00AB E701 sta 1,x
00AD 95 tsx
00AE .dbline 38
00AE 6C06 inc 6,X
00B0 .dbline 39
00B0 L11:
00B0 .dbline 30
00B0 6C07 inc 7,X
00B2 L13:
00B2 .dbline 30
00B2 E607 lda 7,X
00B4 A10A cmp #10
00B6 2382 bls L10
00B8 .dbline 40
00B8 L7:
00B8 .dbline 26
00B8 6C01 inc 1,X
00BA L9:
00BA .dbline 26
00BA E601 lda 1,X
00BC A110 cmp #16
00BE 2203 bhi X1
00C0 CC0034 jmp L6
00C3 X1:
00C3 .dbline 43
00C3 ; {
00C3 ; //3.1.1将通道j的AD转换结果存入内存buff
00C3 ; TLC2543(cs,channel,buff); //得到"空数据"--不要
00C3 ; TLC2543(cs,channel,buff);
00C3 ; //3.1.2从内存buff取出数据-->ADValue[flag]中
00C3 ; temp=*((unsigned int *)buff);
00C3 ; ADValue[flag]=ADValue[flag]+temp;
00C3 ; flag++;
00C3 ; }
00C3 ; }
00C3 ;
00C3 ; //4 求22路A/D数据的16次平均值
00C3 ; for(flag=0;flag<=10;flag++)
00C3 6F06 clr 6,X
00C5 2033 bra L17
00C7 L14:
00C7 .dbline 44
00C7 3F00 clr *__r0
00C9 E606 lda 6,X
00CB B700 sta *__r1
00CD 3800 lsl *__r1
00CF 3900 rol *__r0
00D1 B600 lda *__r1
00D3 EB0C add 12,X
00D5 B700 sta *__r1
00D7 B600 lda *__r0
00D9 E90B adc 11,X
00DB B700 sta *__r0
00DD 5500 ldhx *__r0
00DF E601 lda 1,x
00E1 B700 sta *__r3
00E3 F6 lda ,x
00E4 B700 sta *__r2
00E6 A604 lda #4
00E8 X0:
00E8 3400 lsr *__r2
00EA 3600 ror *__r3
00EC 4BFA dbnza X0
00EE B600 lda *__r2
00F0 5500 ldhx *__r0
00F2 F7 sta ,x
00F3 B600 lda *__r3
00F5 E701 sta 1,x
00F7 95 tsx
00F8 L15:
00F8 .dbline 43
00F8 6C06 inc 6,X
00FA L17:
00FA .dbline 43
00FA E606 lda 6,X
00FC A10A cmp #10
00FE 23C7 bls L14
0100 .dbline -2
0100 L1:
0100 A708 ais #8
0102 .dbline 0 ; func end
0102 81 rts
0103 .dbsym l i 0 c
0103 .dbsym l j 1 c
0103 .dbsym l temp 2 i
0103 .dbsym l buff 4 A[2:2]c
0103 .dbsym l flag 6 c
0103 .dbsym l channel 7 c
0103 .dbsym l ADValue 11 pi
0103 .dbsym l cs 10 c
0103 .dbend
0103 .dbfunc e TLC2543 _TLC2543 fV
0103 ; temp -> 0,X
0103 ; buf -> 7,X
0103 ; channel -> 5,X
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -