adc11p.lis

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

LIS
619
字号
 0169 3800              lsl *__r1
 016B 3900              rol *__r0
 016D AF04              aix #4
 016F 3500              sthx *__r2
 0171 B600              lda *__r1
 0173 BB00              add *__r3
 0175 B700              sta *__r3
 0177 B600              lda *__r0
 0179 B900              adc *__r2
 017B B700              sta *__r2
 017D 5500              ldhx *__r2
 017F E601              lda 1,x
 0181 B700              sta *__r3
 0183 F6                lda ,x
 0184 95                tsx
 0185 B700              sta *__r2
 0187 B600              lda *__r1
 0189 EB22              add 34,X
 018B B700              sta *__r1
 018D B600              lda *__r0
 018F E921              adc 33,X
 0191 B700              sta *__r0
 0193 B600              lda *__r2
 0195 5500              ldhx *__r0
 0197 F7                sta ,x
 0198 B600              lda *__r3
 019A E701              sta 1,x
 019C 95                tsx
 019D           L23:
 019D                   .dbline 50
 019D 6C01              inc 1,X
 019F           L25:
 019F                   .dbline 50
 019F E601              lda 1,X
 01A1 A10B              cmp #11
 01A3 25BE              blo L22
 01A5                   .dbline -2
 01A5           L1:
 01A5 A71E              ais #30
 01A7                   .dbline 0 ; func end
 01A7 81                rts
 01A8                   .dbsym l j 0 c
 01A8                   .dbsym l i 1 c
 01A8                   .dbsym l temp 2 i
 01A8                   .dbsym l ADVal 4 A[22:11]i
 01A8                   .dbsym l buff 26 A[2:2]c
 01A8                   .dbsym l flag 28 c
 01A8                   .dbsym l channel 29 c
 01A8                   .dbsym l ADValue 33 pi
 01A8                   .dbsym l cs 32 c
 01A8                   .dbend
 01A8                   .dbfunc e TLC2543 _TLC2543 fV
 01A8           ;           temp -> 0,X
 01A8           ;            buf -> 7,X
 01A8           ;        channel -> 5,X
 01A8           ;             cs -> 3,X
 01A8           _TLC2543::
 01A8                   .dbline -1
 01A8 A7FF              ais #-1
 01AA 95                tsx
 01AB                   .dbline 67
 01AB           ;       ADValue[i] =ADVal[i];
 01AB           ; }
 01AB           ; 
 01AB           ; //TLC2543芯片A/D转换子程序(TLC2543.c)--------------------------------------*
 01AB           ; //TLC2543的接线:                                                           *
 01AB           ; //             ① I/O LOCK(18)接MC08HC908GP32的SPSCK(18)                   *
 01AB           ; //             ② DATA INPUT(17)接MC08HC908GP32的MOSI(17)                  *
 01AB           ; //             ③ DATA OUT (16)接MC08HC908GP32的MISO(16)                   *
 01AB           ; //             ④ 0-1片的片选CS(15)接分别接MC08HC908GP32的PTC0~1           *
 01AB           ; //参  数:cs-片号,cs=0~7对应PTC0~7                                         *
 01AB           ; //        channel-通道号0,1,2 ...10  buf-存放数据的首址                    *
 01AB           ; //返  回:内存buf开始连续两个地址为取出的数(高4位、低8位)                *
 01AB           ; //说  明:(070418)将CS_D=0xff;    CS_P=0xff                               *
 01AB           ; //              改为CS_D|=1<<cs;   CS_P|= 1<<cs;以避免影响PTC其他口        *
 01AB           ; //-------------------------------------------------------------------------*
 01AB           ; void TLC2543(INT16U cs,INT16U channel,INT8U *buf)
 01AB           ; {
 01AB                   .dbline 71
 01AB           ;   INT8U temp;
 01AB           ;   
 01AB           ;   //1 初始化片选信号为1
 01AB           ;   CS_D |=1<<cs;    //定义PTC的第cs引脚为输出
 01AB 6E0000            mov #0,*__r0
 01AE 6E0100            mov #1,*__r1
 01B1 E604              lda 4,X
 01B3 A40F              and #15
 01B5 2706              beq X3
 01B7           X2:
 01B7 3800              lsl *__r1
 01B9 3900              rol *__r0
 01BB 4BFA              dbnza X2
 01BD           X3:
 01BD 3F00              clr *__r2
 01BF B606              lda 0x6
 01C1 BA00              ora *__r1
 01C3 B700              sta *__r1
 01C5 B600              lda *__r2
 01C7 BA00              ora *__r0
 01C9 4E0006            mov *__r1,0x6
 01CC                   .dbline 72
 01CC           ;   CS_P |=1<<cs;          //C口的第cs引脚为高电平
 01CC 6E0000            mov #0,*__r0
 01CF 6E0100            mov #1,*__r1
 01D2 E604              lda 4,X
 01D4 A40F              and #15
 01D6 2706              beq X5
 01D8           X4:
 01D8 3800              lsl *__r1
 01DA 3900              rol *__r0
 01DC 4BFA              dbnza X4
 01DE           X5:
 01DE 3F00              clr *__r2
 01E0 B602              lda 0x2
 01E2 BA00              ora *__r1
 01E4 B700              sta *__r1
 01E6 B600              lda *__r2
 01E8 BA00              ora *__r0
 01EA 4E0002            mov *__r1,0x2
 01ED                   .dbline 75
 01ED           ;       
 01ED           ;   //2 相应片TLC2543的选CS=0,产生高到低的变化    
 01ED           ;   CS_P &= ~(1<<cs);      
 01ED 6E0000            mov #0,*__r0
 01F0 6E0100            mov #1,*__r1
 01F3 E604              lda 4,X
 01F5 A40F              and #15
 01F7 2706              beq X7
 01F9           X6:
 01F9 3800              lsl *__r1
 01FB 3900              rol *__r0
 01FD 4BFA              dbnza X6
 01FF           X7:
 01FF 3300              com *__r1
 0201 3300              com *__r0
 0203 3F00              clr *__r2
 0205 B602              lda 0x2
 0207 B400              and *__r1
 0209 B700              sta *__r1
 020B B600              lda *__r2
 020D B400              and *__r0
 020F 4E0002            mov *__r1,0x2
 0212                   .dbline 78
 0212           ;   
 0212           ;   //3 写控制字到相应片TLC2543   
 0212           ;   SPDR = (channel<<4) | 0x0C;//入口通道、16位格式、MSB先送出、二进制
 0212 E606              lda 6,X
 0214 B700              sta *__r1
 0216 E605              lda 5,X
 0218 B700              sta *__r0
 021A A604              lda #4
 021C           X8:
 021C 3800              lsl *__r1
 021E 3900              rol *__r0
 0220 4BFA              dbnza X8
 0222 B600              lda *__r1
 0224 AA0C              ora #12
 0226 B712              sta 0x12
 0228           L27:
 0228                   .dbline 81
 0228           L28:
 0228                   .dbline 81
 0228           ;   
 0228           ;   //4 等待发送器空
 0228           ;   while ((SPSCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1 
 0228 0711FD            brclr #3,0x11,L27
 022B           L30:
 022B                   .dbline 84
 022B           L31:
 022B                   .dbline 84
 022B           ;   
 022B           ;   //5 等待接收器满
 022B           ;   while ((SPSCR & (1<<ReFullBit)) == 0);    //为0等待,也就是等待SPRF为1
 022B 0F11FD            brclr #7,0x11,L30
 022E                   .dbline 87
 022E           ;   
 022E           ;   //6 取出上次转换结果高字节 
 022E           ;   *buf = SPDR; //*buf中存放的是D11~D4位   
 022E E608              lda 8,X
 0230 B700              sta *__r1
 0232 E607              lda 7,X
 0234 B700              sta *__r0
 0236 B612              lda 0x12
 0238 5500              ldhx *__r0
 023A F7                sta ,x
 023B 95                tsx
 023C                   .dbline 88
 023C           ;   SPDR = *buf;        //上次转换结果低字节(后四位为0),握手信号
 023C E607              lda 7,X
 023E EE08              ldx 8,X
 0240 87                psha
 0241 8A                pulh
 0242 F6                lda ,x
 0243 95                tsx
 0244 B712              sta 0x12
 0246           L33:
 0246                   .dbline 91
 0246           L34:
 0246                   .dbline 91
 0246           ;   
 0246           ;   //7 等待发送结束  
 0246           ;   while ((SPSCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1 
 0246 0711FD            brclr #3,0x11,L33
 0249           L36:
 0249                   .dbline 94
 0249           L37:
 0249                   .dbline 94
 0249           ;   
 0249           ;   //8 等待新数据到达
 0249           ;   while ((SPSCR & (1<<ReFullBit)) == 0);    //为0等待,也就是等待SPRF为1 
 0249 0F11FD            brclr #7,0x11,L36
 024C                   .dbline 97
 024C           ;   
 024C           ;   //9 取出上次转换结果的低4位 
 024C           ;   *(buf+1) = SPDR;// *(buf+1)中存放D3~D0位(后四位为0)
 024C E608              lda 8,X
 024E AB01              add #1
 0250 B700              sta *__r1
 0252 E607              lda 7,X
 0254 A900              adc #0
 0256 B700              sta *__r0
 0258 B612              lda 0x12
 025A 5500              ldhx *__r0
 025C F7                sta ,x
 025D 95                tsx
 025E                   .dbline 100
 025E           ;   
 025E           ;   //10 TLC2543片选CS=1   
 025E           ;   CS_P |=1<<cs;
 025E 6E0000            mov #0,*__r0
 0261 6E0100            mov #1,*__r1
 0264 E604              lda 4,X
 0266 A40F              and #15
 0268 2706              beq X10
 026A           X9:
 026A 3800              lsl *__r1
 026C 3900              rol *__r0
 026E 4BFA              dbnza X9
 0270           X10:
 0270 3F00              clr *__r2
 0272 B602              lda 0x2
 0274 BA00              ora *__r1
 0276 B700              sta *__r1
 0278 B600              lda *__r2
 027A BA00              ora *__r0
 027C 4E0002            mov *__r1,0x2
 027F                   .dbline 103
 027F           ;           
 027F           ;   //11 整合后*buf存放高四位(D11~D8),*(buf+1)中存放低八位(D7~D0) 
 027F           ;   *(buf+1) = (*(buf+1)>>4) | (*buf<<4);    
 027F E608              lda 8,X
 0281 AB01              add #1
 0283 B700              sta *__r1
 0285 E607              lda 7,X
 0287 A900              adc #0
 0289 B700              sta *__r0
 028B E607              lda 7,X
 028D EE08              ldx 8,X
 028F 87                psha
 0290 8A                pulh
 0291 F6                lda ,x
 0292 62                nsa
 0293 A4F0              and #-16
 0295 B700              sta *__r2
 0297 5500              ldhx *__r0
 0299 F6                lda ,x
 029A B700              sta *__r4
 029C A604              lda #4
 029E           X11:
 029E 3400              lsr *__r4
 02A0 4BFC              dbnza X11
 02A2 B600              lda *__r4
 02A4 BA00              ora *__r2
 02A6 5500              ldhx *__r0
 02A8 F7                sta ,x
 02A9 95                tsx
 02AA                   .dbline 104
 02AA           ;   *buf = *buf>>4;    
 02AA E607              lda 7,X
 02AC EE08              ldx 8,X
 02AE 87                psha
 02AF 8A                pulh
 02B0 F6                lda ,x
 02B1 95                tsx
 02B2 B700              sta *__r0
 02B4 A604              lda #4
 02B6           X12:
 02B6 3400              lsr *__r0
 02B8 4BFC              dbnza X12
 02BA 4E0000            mov *__r0,*__r1
 02BD E608              lda 8,X
 02BF B700              sta *__r3
 02C1 E607              lda 7,X
 02C3 B700              sta *__r2
 02C5 B600              lda *__r1
 02C7 5500              ldhx *__r2
 02C9 F7                sta ,x
 02CA 95                tsx
 02CB                   .dbline -2
 02CB           L26:
 02CB A701              ais #1
 02CD                   .dbline 0 ; func end
 02CD 81                rts
 02CE                   .dbsym l temp 0 c
 02CE                   .dbsym l buf 7 pc
 02CE                   .dbsym l channel 5 i
 02CE                   .dbsym l cs 3 i
 02CE                   .dbend

⌨️ 快捷键说明

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