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 + -
显示快捷键?