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

📄 adc11p.lis

📁 为日本瑞萨苏州分公司做的一个温控系统
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0103           ;             cs -> 3,X
 0103           _TLC2543::
 0103                   .dbline -1
 0103 A7FF              ais #-1
 0105 95                tsx
 0106                   .dbline 60
 0106           ;        ADValue[flag]=ADValue[flag]/16;
 0106           ; }
 0106           ; 
 0106           ; //TLC2543芯片A/D转换子程序(TLC2543.c)--------------------------------------*
 0106           ; //TLC2543的接线:                                                           *
 0106           ; //             ① I/O LOCK(18)接MC08HC908GP32的SPSCK(18)                   *
 0106           ; //             ② DATA INPUT(17)接MC08HC908GP32的MOSI(17)                  *
 0106           ; //             ③ DATA OUT (16)接MC08HC908GP32的MISO(16)                   *
 0106           ; //             ④ 0-1片的片选CS(15)接分别接MC08HC908GP32的PTC0~1           *
 0106           ; //参  数:cs-片号,cs=0~7对应PTC0~7                                         *
 0106           ; //        channel-通道号0,1,2 ...10  buf-存放数据的首址                    *
 0106           ; //返  回:内存buf开始连续两个地址为取出的数(高4位、低8位)                *
 0106           ; //说  明:(070418)将CS_D=0xff;    CS_P=0xff                               *
 0106           ; //              改为CS_D|=1<<cs;   CS_P|= 1<<cs;以避免影响PTC其他口        *
 0106           ; //-------------------------------------------------------------------------*
 0106           ; void TLC2543(INT16U cs,INT16U channel,INT8U *buf)
 0106           ; {
 0106                   .dbline 64
 0106           ;   INT8U temp;
 0106           ;   
 0106           ;   //1 初始化片选信号为1
 0106           ;   CS_D |=1<<cs;    //定义PTC的第cs引脚为输出
 0106 6E0000            mov #0,*__r0
 0109 6E0100            mov #1,*__r1
 010C E604              lda 4,X
 010E A40F              and #15
 0110 2706              beq X3
 0112           X2:
 0112 3800              lsl *__r1
 0114 3900              rol *__r0
 0116 4BFA              dbnza X2
 0118           X3:
 0118 3F00              clr *__r2
 011A B606              lda 0x6
 011C BA00              ora *__r1
 011E B700              sta *__r1
 0120 B600              lda *__r2
 0122 BA00              ora *__r0
 0124 4E0006            mov *__r1,0x6
 0127                   .dbline 65
 0127           ;   CS_P |=1<<cs;          //C口的第cs引脚为高电平
 0127 6E0000            mov #0,*__r0
 012A 6E0100            mov #1,*__r1
 012D E604              lda 4,X
 012F A40F              and #15
 0131 2706              beq X5
 0133           X4:
 0133 3800              lsl *__r1
 0135 3900              rol *__r0
 0137 4BFA              dbnza X4
 0139           X5:
 0139 3F00              clr *__r2
 013B B602              lda 0x2
 013D BA00              ora *__r1
 013F B700              sta *__r1
 0141 B600              lda *__r2
 0143 BA00              ora *__r0
 0145 4E0002            mov *__r1,0x2
 0148                   .dbline 68
 0148           ;       
 0148           ;   //2 相应片TLC2543的选CS=0,产生高到低的变化    
 0148           ;   CS_P &= ~(1<<cs);      
 0148 6E0000            mov #0,*__r0
 014B 6E0100            mov #1,*__r1
 014E E604              lda 4,X
 0150 A40F              and #15
 0152 2706              beq X7
 0154           X6:
 0154 3800              lsl *__r1
 0156 3900              rol *__r0
 0158 4BFA              dbnza X6
 015A           X7:
 015A 3300              com *__r1
 015C 3300              com *__r0
 015E 3F00              clr *__r2
 0160 B602              lda 0x2
 0162 B400              and *__r1
 0164 B700              sta *__r1
 0166 B600              lda *__r2
 0168 B400              and *__r0
 016A 4E0002            mov *__r1,0x2
 016D                   .dbline 71
 016D           ;   
 016D           ;   //3 写控制字到相应片TLC2543   
 016D           ;   SPDR = (channel<<4) | 0x0C;//入口通道、16位格式、MSB先送出、二进制
 016D E606              lda 6,X
 016F B700              sta *__r1
 0171 E605              lda 5,X
 0173 B700              sta *__r0
 0175 A604              lda #4
 0177           X8:
 0177 3800              lsl *__r1
 0179 3900              rol *__r0
 017B 4BFA              dbnza X8
 017D B600              lda *__r1
 017F AA0C              ora #12
 0181 B712              sta 0x12
 0183           L19:
 0183                   .dbline 74
 0183           L20:
 0183                   .dbline 74
 0183           ;   
 0183           ;   //4 等待发送器空
 0183           ;   while ((SPSCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1 
 0183 0711FD            brclr #3,0x11,L19
 0186           L22:
 0186                   .dbline 77
 0186           L23:
 0186                   .dbline 77
 0186           ;   
 0186           ;   //5 等待接收器满
 0186           ;   while ((SPSCR & (1<<ReFullBit)) == 0);    //为0等待,也就是等待SPRF为1
 0186 0F11FD            brclr #7,0x11,L22
 0189                   .dbline 80
 0189           ;   
 0189           ;   //6 取出上次转换结果高字节 
 0189           ;   *buf = SPDR; //*buf中存放的是D11~D4位   
 0189 E608              lda 8,X
 018B B700              sta *__r1
 018D E607              lda 7,X
 018F B700              sta *__r0
 0191 B612              lda 0x12
 0193 5500              ldhx *__r0
 0195 F7                sta ,x
 0196 95                tsx
 0197                   .dbline 81
 0197           ;   SPDR = *buf;        //上次转换结果低字节(后四位为0),握手信号
 0197 E607              lda 7,X
 0199 EE08              ldx 8,X
 019B 87                psha
 019C 8A                pulh
 019D F6                lda ,x
 019E 95                tsx
 019F B712              sta 0x12
 01A1           L25:
 01A1                   .dbline 84
 01A1           L26:
 01A1                   .dbline 84
 01A1           ;   
 01A1           ;   //7 等待发送结束  
 01A1           ;   while ((SPSCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1 
 01A1 0711FD            brclr #3,0x11,L25
 01A4           L28:
 01A4                   .dbline 87
 01A4           L29:
 01A4                   .dbline 87
 01A4           ;   
 01A4           ;   //8 等待新数据到达
 01A4           ;   while ((SPSCR & (1<<ReFullBit)) == 0);    //为0等待,也就是等待SPRF为1 
 01A4 0F11FD            brclr #7,0x11,L28
 01A7                   .dbline 90
 01A7           ;   
 01A7           ;   //9 取出上次转换结果的低4位 
 01A7           ;   *(buf+1) = SPDR;// *(buf+1)中存放D3~D0位(后四位为0)
 01A7 E608              lda 8,X
 01A9 AB01              add #1
 01AB B700              sta *__r1
 01AD E607              lda 7,X
 01AF A900              adc #0
 01B1 B700              sta *__r0
 01B3 B612              lda 0x12
 01B5 5500              ldhx *__r0
 01B7 F7                sta ,x
 01B8 95                tsx
 01B9                   .dbline 93
 01B9           ;   
 01B9           ;   //10 TLC2543片选CS=1   
 01B9           ;   CS_P |=1<<cs;
 01B9 6E0000            mov #0,*__r0
 01BC 6E0100            mov #1,*__r1
 01BF E604              lda 4,X
 01C1 A40F              and #15
 01C3 2706              beq X10
 01C5           X9:
 01C5 3800              lsl *__r1
 01C7 3900              rol *__r0
 01C9 4BFA              dbnza X9
 01CB           X10:
 01CB 3F00              clr *__r2
 01CD B602              lda 0x2
 01CF BA00              ora *__r1
 01D1 B700              sta *__r1
 01D3 B600              lda *__r2
 01D5 BA00              ora *__r0
 01D7 4E0002            mov *__r1,0x2
 01DA                   .dbline 96
 01DA           ;           
 01DA           ;   //11 整合后*buf存放高四位(D11~D8),*(buf+1)中存放低八位(D7~D0) 
 01DA           ;   *(buf+1) = (*(buf+1)>>4) | (*buf<<4);    
 01DA E608              lda 8,X
 01DC AB01              add #1
 01DE B700              sta *__r1
 01E0 E607              lda 7,X
 01E2 A900              adc #0
 01E4 B700              sta *__r0
 01E6 E607              lda 7,X
 01E8 EE08              ldx 8,X
 01EA 87                psha
 01EB 8A                pulh
 01EC F6                lda ,x
 01ED 62                nsa
 01EE A4F0              and #-16
 01F0 B700              sta *__r2
 01F2 5500              ldhx *__r0
 01F4 F6                lda ,x
 01F5 B700              sta *__r4
 01F7 A604              lda #4
 01F9           X11:
 01F9 3400              lsr *__r4
 01FB 4BFC              dbnza X11
 01FD B600              lda *__r4
 01FF BA00              ora *__r2
 0201 5500              ldhx *__r0
 0203 F7                sta ,x
 0204 95                tsx
 0205                   .dbline 97
 0205           ;   *buf = *buf>>4;    
 0205 E607              lda 7,X
 0207 EE08              ldx 8,X
 0209 87                psha
 020A 8A                pulh
 020B F6                lda ,x
 020C 95                tsx
 020D B700              sta *__r0
 020F A604              lda #4
 0211           X12:
 0211 3400              lsr *__r0
 0213 4BFC              dbnza X12
 0215 4E0000            mov *__r0,*__r1
 0218 E608              lda 8,X
 021A B700              sta *__r3
 021C E607              lda 7,X
 021E B700              sta *__r2
 0220 B600              lda *__r1
 0222 5500              ldhx *__r2
 0224 F7                sta ,x
 0225 95                tsx
 0226                   .dbline -2
 0226           L18:
 0226 A701              ais #1
 0228                   .dbline 0 ; func end
 0228 81                rts
 0229                   .dbsym l temp 0 c
 0229                   .dbsym l buf 7 pc
 0229                   .dbsym l channel 5 i
 0229                   .dbsym l cs 3 i
 0229                   .dbend

⌨️ 快捷键说明

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