adc11p.lis

来自「为日本瑞萨苏州分公司做的一个温控系统」· LIS 代码 · 共 619 行 · 第 1/2 页

LIS
619
字号
                        .module ADC11P.c
                        .area text
 0000                   .dbfile ADC11P.c
 0000                   .dbfunc e ADC11P _ADC11P fV
 0000           ;              j -> 0,X
 0000           ;              i -> 1,X
 0000           ;           temp -> 2,X
 0000           ;          ADVal -> 4,X
 0000           ;           buff -> 26,X
 0000           ;           flag -> 28,X
 0000           ;        channel -> 29,X
 0000           ;        ADValue -> 33,X
 0000           ;             cs -> 32,X
 0000           _ADC11P::
 0000                   .dbline -1
 0000 A7E2              ais #-30
 0002 95                tsx
 0003                   .dbline 18
 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           ; //修  改:*ADValue是传址,一般在子程序中不直接修改参数,应另声明一个局部   *
 0003           ; //       变量地址,代其执行,最后将结果赋到参数地址带回 (ZY 2007.05.11)    *
 0003           ; //-------------------------------------------------------------------------*
 0003           ; void ADC11P(INT8U cs,INT16U *ADValue)
 0003           ; {   
 0003                   .dbline 23
 0003           ;       INT8U i,j,channel,flag,buff[2]; 
 0003           ;     INT16U temp; 
 0003           ;     INT16U ADVal[11]; 
 0003           ;     
 0003           ;     for(i=0;i<11;i++)
 0003 6F01              clr 1,X
 0005 2038              bra L5
 0007           L2:
 0007                   .dbline 24
 0007 3F00              clr *__r0
 0009 E601              lda 1,X
 000B B700              sta *__r1
 000D 3800              lsl *__r1
 000F 3900              rol *__r0
 0011 AF04              aix #4
 0013 3500              sthx *__r2
 0015 95                tsx
 0016 B600              lda *__r1
 0018 BB00              add *__r3
 001A B700              sta *__r3
 001C B600              lda *__r0
 001E B900              adc *__r2
 0020 B700              sta *__r2
 0022 B600              lda *__r1
 0024 EB22              add 34,X
 0026 B700              sta *__r1
 0028 B600              lda *__r0
 002A E921              adc 33,X
 002C B700              sta *__r0
 002E 5500              ldhx *__r0
 0030 E601              lda 1,x
 0032 B700              sta *__r1
 0034 F6                lda ,x
 0035 5500              ldhx *__r2
 0037 F7                sta ,x
 0038 B600              lda *__r1
 003A E701              sta 1,x
 003C 95                tsx
 003D           L3:
 003D                   .dbline 23
 003D 6C01              inc 1,X
 003F           L5:
 003F                   .dbline 23
 003F E601              lda 1,X
 0041 A10B              cmp #11
 0043 25C2              blo L2
 0045                   .dbline 26
 0045           ;        ADVal[i]=ADValue[i];
 0045           ;     //1 将A/D数据存放区清0   
 0045           ;     for(flag=0;flag<=10;flag++)      
 0045 6F1C              clr 28,X
 0047 2025              bra L9
 0049           L6:
 0049                   .dbline 27
 0049 AF04              aix #4
 004B 3500              sthx *__r0
 004D 95                tsx
 004E 3F00              clr *__r2
 0050 E61C              lda 28,X
 0052 B700              sta *__r3
 0054 3800              lsl *__r3
 0056 3900              rol *__r2
 0058 B600              lda *__r3
 005A BB00              add *__r1
 005C B700              sta *__r1
 005E B600              lda *__r2
 0060 B900              adc *__r0
 0062 B700              sta *__r0
 0064 4F                clra
 0065 5500              ldhx *__r0
 0067 F7                sta ,x
 0068 4F                clra
 0069 E701              sta 1,x
 006B 95                tsx
 006C           L7:
 006C                   .dbline 26
 006C 6C1C              inc 28,X
 006E           L9:
 006E                   .dbline 26
 006E E61C              lda 28,X
 0070 A10A              cmp #10
 0072 23D5              bls L6
 0074                   .dbline 31
 0074           ;       ADVal[flag]=0; 
 0074           ;       
 0074           ;     
 0074           ;     //3 对11个通道采集数据,每一路采集16次,16次的数据总和-->ADValue   
 0074           ;     for(j=1;j<=20;j++)   
 0074 A601              lda #1
 0076 F7                sta ,X
 0077 CC0107            jmp L13
 007A           L10:
 007A                   .dbline 32
 007A           ;     {  
 007A                   .dbline 33
 007A           ;       flag=0; 
 007A 6F1C              clr 28,X
 007C                   .dbline 35
 007C           ;       //3.1第0片TLC2543的0~10通道转换      
 007C           ;       for(channel=0;channel<=10;channel++)      
 007C 6F1D              clr 29,X
 007E 207D              bra L17
 0080           L14:
 0080                   .dbline 36
 0080                   .dbline 38
 0080 AF1A              aix #26
 0082 89                pshx
 0083 8B                pshh
 0084 95                tsx
 0085 AF02              aix #2
 0087 3F00              clr *__r0
 0089 E61D              lda 29,X
 008B 87                psha
 008C B600              lda *__r0
 008E 87                psha
 008F 3F00              clr *__r0
 0091 E620              lda 32,X
 0093 87                psha
 0094 B600              lda *__r0
 0096 87                psha
 0097 CD01A8            jsr _TLC2543
 009A A706              ais #6
 009C 95                tsx
 009D                   .dbline 39
 009D AF1A              aix #26
 009F 89                pshx
 00A0 8B                pshh
 00A1 95                tsx
 00A2 AF02              aix #2
 00A4 3F00              clr *__r0
 00A6 E61D              lda 29,X
 00A8 87                psha
 00A9 B600              lda *__r0
 00AB 87                psha
 00AC 3F00              clr *__r0
 00AE E620              lda 32,X
 00B0 87                psha
 00B1 B600              lda *__r0
 00B3 87                psha
 00B4 CD01A8            jsr _TLC2543
 00B7 A706              ais #6
 00B9 95                tsx
 00BA                   .dbline 41
 00BA E61A              lda 26,X
 00BC E702              sta 2,X
 00BE E61B              lda 27,X
 00C0 E703              sta 3,X
 00C2                   .dbline 42
 00C2 AF04              aix #4
 00C4 3500              sthx *__r0
 00C6 95                tsx
 00C7 3F00              clr *__r2
 00C9 E61C              lda 28,X
 00CB B700              sta *__r3
 00CD 3800              lsl *__r3
 00CF 3900              rol *__r2
 00D1 B600              lda *__r3
 00D3 BB00              add *__r1
 00D5 B700              sta *__r1
 00D7 B600              lda *__r2
 00D9 B900              adc *__r0
 00DB B700              sta *__r0
 00DD 5500              ldhx *__r0
 00DF E601              lda 1,x
 00E1 B700              sta *__r3
 00E3 F6                lda ,x
 00E4 95                tsx
 00E5 B700              sta *__r2
 00E7 B600              lda *__r3
 00E9 EB03              add 3,X
 00EB B700              sta *__r3
 00ED B600              lda *__r2
 00EF E902              adc 2,X
 00F1 5500              ldhx *__r0
 00F3 F7                sta ,x
 00F4 B600              lda *__r3
 00F6 E701              sta 1,x
 00F8 95                tsx
 00F9                   .dbline 43
 00F9 6C1C              inc 28,X
 00FB                   .dbline 44
 00FB           L15:
 00FB                   .dbline 35
 00FB 6C1D              inc 29,X
 00FD           L17:
 00FD                   .dbline 35
 00FD E61D              lda 29,X
 00FF A10A              cmp #10
 0101 2203              bhi X0
 0103 CC0080            jmp L14
 0106           X0:
 0106                   .dbline 45
 0106           L11:
 0106                   .dbline 31
 0106 7C                inc ,X
 0107           L13:
 0107                   .dbline 31
 0107 F6                lda ,X
 0108 A114              cmp #20
 010A 2203              bhi X1
 010C CC007A            jmp L10
 010F           X1:
 010F                   .dbline 48
 010F           ;       {    
 010F           ;         //3.1.1将通道j的AD转换结果存入内存buff     
 010F           ;         TLC2543(cs,channel,buff);   //得到"空数据"--不要
 010F           ;         TLC2543(cs,channel,buff);        
 010F           ;         //3.1.2从内存buff取出数据-->ADValue[flag]中         
 010F           ;         temp=*((unsigned int *)buff);         
 010F           ;         ADVal[flag]=ADVal[flag]+temp;
 010F           ;         flag++;    
 010F           ;       }
 010F           ;     } 
 010F           ;        
 010F           ;     //4 求22路A/D数据的16次平均值   
 010F           ;     for(flag=0;flag<=10;flag++)     
 010F 6F1C              clr 28,X
 0111 2046              bra L21
 0113           L18:
 0113                   .dbline 49
 0113 AF04              aix #4
 0115 3500              sthx *__r0
 0117 95                tsx
 0118 3F00              clr *__r2
 011A E61C              lda 28,X
 011C B700              sta *__r3
 011E 3800              lsl *__r3
 0120 3900              rol *__r2
 0122 B600              lda *__r3
 0124 BB00              add *__r1
 0126 B700              sta *__r1
 0128 B600              lda *__r2
 012A B900              adc *__r0
 012C B700              sta *__r0
 012E 5500              ldhx *__r0
 0130 E601              lda 1,x
 0132 B700              sta *__r3
 0134 F6                lda ,x
 0135 B700              sta *__r2
 0137 4E0000            mov *__r3,*__rlo
 013A 4E0000            mov *__r2,*__rhi
 013D A614              lda #20
 013F 87                psha
 0140 4F                clra
 0141 87                psha
 0142 CD0000            jsr __divmod16u
 0145 A702              ais #2
 0147 4E0000            mov *__rhi,*__r2
 014A 4E0000            mov *__rlo,*__r3
 014D B600              lda *__r2
 014F 5500              ldhx *__r0
 0151 F7                sta ,x
 0152 B600              lda *__r3
 0154 E701              sta 1,x
 0156 95                tsx
 0157           L19:
 0157                   .dbline 48
 0157 6C1C              inc 28,X
 0159           L21:
 0159                   .dbline 48
 0159 E61C              lda 28,X
 015B A10A              cmp #10
 015D 23B4              bls L18
 015F                   .dbline 50
 015F           ;        ADVal[flag]=ADVal[flag]/20;
 015F           ;     for(i=0;i<11;i++)
 015F 6F01              clr 1,X
 0161 203C              bra L25
 0163           L22:
 0163                   .dbline 51
 0163 3F00              clr *__r0
 0165 E601              lda 1,X
 0167 B700              sta *__r1

⌨️ 快捷键说明

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