📄 adc11p.lis
字号:
01C2 B700 sta *__r0
01C4 3F00 clr *__r2
01C6 E602 lda 2,X
01C8 B700 sta *__r3
01CA 3800 lsl *__r3
01CC 3900 rol *__r2
01CE B600 lda *__r3
01D0 EB07 add 7,X
01D2 B700 sta *__r3
01D4 B600 lda *__r2
01D6 E906 adc 6,X
01D8 B700 sta *__r2
01DA 5500 ldhx *__r2
01DC E601 lda 1,x
01DE B700 sta *__r3
01E0 F6 lda ,x
01E1 B700 sta *__r2
01E3 5500 ldhx *__r2
01E5 7500 cphx *__r0
01E7 95 tsx
01E8 2203 bhi X3
01EA CC026D jmp L35
01ED X3:
01ED .dbline 65
01ED ; {
01ED .dbline 66
01ED ; tmp=x[i];
01ED 3F00 clr *__r0
01EF E602 lda 2,X
01F1 B700 sta *__r1
01F3 3800 lsl *__r1
01F5 3900 rol *__r0
01F7 B600 lda *__r1
01F9 EB07 add 7,X
01FB B700 sta *__r1
01FD B600 lda *__r0
01FF E906 adc 6,X
0201 B700 sta *__r0
0203 5500 ldhx *__r0
0205 E601 lda 1,x
0207 9EE702 sta 2,SP
020A F6 lda ,x
020B 95 tsx
020C F7 sta ,X
020D .dbline 67
020D ; x[i]=x[j];
020D 3F00 clr *__r0
020F E603 lda 3,X
0211 B700 sta *__r1
0213 3800 lsl *__r1
0215 3900 rol *__r0
0217 B600 lda *__r1
0219 EB07 add 7,X
021B B700 sta *__r1
021D B600 lda *__r0
021F E906 adc 6,X
0221 B700 sta *__r0
0223 5500 ldhx *__r0
0225 E601 lda 1,x
0227 B700 sta *__r1
0229 F6 lda ,x
022A 95 tsx
022B B700 sta *__r0
022D 3F00 clr *__r2
022F E602 lda 2,X
0231 B700 sta *__r3
0233 3800 lsl *__r3
0235 3900 rol *__r2
0237 B600 lda *__r3
0239 EB07 add 7,X
023B B700 sta *__r3
023D B600 lda *__r2
023F E906 adc 6,X
0241 B700 sta *__r2
0243 B600 lda *__r0
0245 5500 ldhx *__r2
0247 F7 sta ,x
0248 B600 lda *__r1
024A E701 sta 1,x
024C 95 tsx
024D .dbline 68
024D ; x[j]=tmp;
024D 3F00 clr *__r0
024F E603 lda 3,X
0251 B700 sta *__r1
0253 3800 lsl *__r1
0255 3900 rol *__r0
0257 B600 lda *__r1
0259 EB07 add 7,X
025B B700 sta *__r1
025D B600 lda *__r0
025F E906 adc 6,X
0261 B700 sta *__r0
0263 F6 lda ,X
0264 5500 ldhx *__r0
0266 F7 sta ,x
0267 9EE602 lda 2,SP
026A E701 sta 1,x
026C 95 tsx
026D .dbline 69
026D ; }
026D L35:
026D L32:
026D .dbline 63
026D 6C03 inc 3,X
026F L34:
026F .dbline 63
026F E603 lda 3,X
0271 A103 cmp #3
0273 2403 bhs X4
0275 CC01A4 jmp L31
0278 X4:
0278 L28:
0278 .dbline 62
0278 6C02 inc 2,X
027A L30:
027A .dbline 62
027A E602 lda 2,X
027C A103 cmp #3
027E 2403 bhs X5
0280 CC019D jmp L27
0283 X5:
0283 .dbline 71
0283 ;
0283 ; return x[1];
0283 E607 lda 7,X
0285 AB02 add #2
0287 B700 sta *__r1
0289 E606 lda 6,X
028B A900 adc #0
028D B700 sta *__r0
028F 5500 ldhx *__r0
0291 E601 lda 1,x
0293 B700 sta *__r1
0295 F6 lda ,x
0296 95 tsx
0297 B700 sta *__r0
0299 .dbline -2
0299 L26:
0299 A704 ais #4
029B .dbline 0 ; func end
029B 81 rts
029C .dbsym l tmp 0 i
029C .dbsym l i 2 c
029C .dbsym l j 3 c
029C .dbsym l x 6 pi
029C .dbend
029C .dbfunc e TLC2543 _TLC2543 fV
029C ; temp -> 0,X
029C ; buf -> 7,X
029C ; channel -> 5,X
029C ; cs -> 3,X
029C _TLC2543::
029C .dbline -1
029C A7FF ais #-1
029E 95 tsx
029F .dbline 89
029F ; }
029F ;
029F ;
029F ;
029F ; //TLC2543芯片A/D转换子程序(TLC2543.c)--------------------------------------*
029F ; //TLC2543的接线: *
029F ; // ① I/O LOCK(18)接MC08HC908GP32的SPSCK(18) *
029F ; // ② DATA INPUT(17)接MC08HC908GP32的MOSI(17) *
029F ; // ③ DATA OUT (16)接MC08HC908GP32的MISO(16) *
029F ; // ④ 0-1片的片选CS(15)接分别接MC08HC908GP32的PTC0~1 *
029F ; //参 数:cs-片号,cs=0~7对应PTC0~7 *
029F ; // channel-通道号0,1,2 ...10 buf-存放数据的首址 *
029F ; //返 回:内存buf开始连续两个地址为取出的数(高4位、低8位) *
029F ; //说 明:(070418)将CS_D=0xff; CS_P=0xff *
029F ; // 改为CS_D|=1<<cs; CS_P|= 1<<cs;以避免影响PTC其他口 *
029F ; //-------------------------------------------------------------------------*
029F ; void TLC2543(INT16U cs,INT16U channel,INT8U *buf)
029F ; {
029F .dbline 93
029F ; INT8U temp;
029F ;
029F ; //1 初始化片选信号为1
029F ; CS_D |=1<<cs; //定义PTC的第cs引脚为输出
029F 6E0000 mov #0,*__r0
02A2 6E0100 mov #1,*__r1
02A5 E604 lda 4,X
02A7 A40F and #15
02A9 2706 beq X7
02AB X6:
02AB 3800 lsl *__r1
02AD 3900 rol *__r0
02AF 4BFA dbnza X6
02B1 X7:
02B1 3F00 clr *__r2
02B3 B606 lda 0x6
02B5 BA00 ora *__r1
02B7 B700 sta *__r1
02B9 B600 lda *__r2
02BB BA00 ora *__r0
02BD 4E0006 mov *__r1,0x6
02C0 .dbline 94
02C0 ; CS_P |=1<<cs; //C口的第cs引脚为高电平
02C0 6E0000 mov #0,*__r0
02C3 6E0100 mov #1,*__r1
02C6 E604 lda 4,X
02C8 A40F and #15
02CA 2706 beq X9
02CC X8:
02CC 3800 lsl *__r1
02CE 3900 rol *__r0
02D0 4BFA dbnza X8
02D2 X9:
02D2 3F00 clr *__r2
02D4 B602 lda 0x2
02D6 BA00 ora *__r1
02D8 B700 sta *__r1
02DA B600 lda *__r2
02DC BA00 ora *__r0
02DE 4E0002 mov *__r1,0x2
02E1 .dbline 97
02E1 ;
02E1 ; //2 相应片TLC2543的选CS=0,产生高到低的变化
02E1 ; CS_P &= ~(1<<cs);
02E1 6E0000 mov #0,*__r0
02E4 6E0100 mov #1,*__r1
02E7 E604 lda 4,X
02E9 A40F and #15
02EB 2706 beq X11
02ED X10:
02ED 3800 lsl *__r1
02EF 3900 rol *__r0
02F1 4BFA dbnza X10
02F3 X11:
02F3 3300 com *__r1
02F5 3300 com *__r0
02F7 3F00 clr *__r2
02F9 B602 lda 0x2
02FB B400 and *__r1
02FD B700 sta *__r1
02FF B600 lda *__r2
0301 B400 and *__r0
0303 4E0002 mov *__r1,0x2
0306 .dbline 100
0306 ;
0306 ; //3 写控制字到相应片TLC2543
0306 ; SPDR = (channel<<4) | 0x0C;//入口通道、16位格式、MSB先送出、二进制
0306 E606 lda 6,X
0308 B700 sta *__r1
030A E605 lda 5,X
030C B700 sta *__r0
030E A604 lda #4
0310 X12:
0310 3800 lsl *__r1
0312 3900 rol *__r0
0314 4BFA dbnza X12
0316 B600 lda *__r1
0318 AA0C ora #12
031A B712 sta 0x12
031C L38:
031C .dbline 103
031C L39:
031C .dbline 103
031C ;
031C ; //4 等待发送器空
031C ; while ((SPSCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1
031C 0711FD brclr #3,0x11,L38
031F L41:
031F .dbline 106
031F L42:
031F .dbline 106
031F ;
031F ; //5 等待接收器满
031F ; while ((SPSCR & (1<<ReFullBit)) == 0); //为0等待,也就是等待SPRF为1
031F 0F11FD brclr #7,0x11,L41
0322 .dbline 109
0322 ;
0322 ; //6 取出上次转换结果高字节
0322 ; *buf = SPDR; //*buf中存放的是D11~D4位
0322 E608 lda 8,X
0324 B700 sta *__r1
0326 E607 lda 7,X
0328 B700 sta *__r0
032A B612 lda 0x12
032C 5500 ldhx *__r0
032E F7 sta ,x
032F 95 tsx
0330 .dbline 110
0330 ; SPDR = *buf; //上次转换结果低字节(后四位为0),握手信号
0330 E607 lda 7,X
0332 EE08 ldx 8,X
0334 87 psha
0335 8A pulh
0336 F6 lda ,x
0337 95 tsx
0338 B712 sta 0x12
033A L44:
033A .dbline 113
033A L45:
033A .dbline 113
033A ;
033A ; //7 等待发送结束
033A ; while ((SPSCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1
033A 0711FD brclr #3,0x11,L44
033D L47:
033D .dbline 116
033D L48:
033D .dbline 116
033D ;
033D ; //8 等待新数据到达
033D ; while ((SPSCR & (1<<ReFullBit)) == 0); //为0等待,也就是等待SPRF为1
033D 0F11FD brclr #7,0x11,L47
0340 .dbline 119
0340 ;
0340 ; //9 取出上次转换结果的低4位
0340 ; *(buf+1) = SPDR;// *(buf+1)中存放D3~D0位(后四位为0)
0340 E608 lda 8,X
0342 AB01 add #1
0344 B700 sta *__r1
0346 E607 lda 7,X
0348 A900 adc #0
034A B700 sta *__r0
034C B612 lda 0x12
034E 5500 ldhx *__r0
0350 F7 sta ,x
0351 95 tsx
0352 .dbline 122
0352 ;
0352 ; //10 TLC2543片选CS=1
0352 ; CS_P |=1<<cs;
0352 6E0000 mov #0,*__r0
0355 6E0100 mov #1,*__r1
0358 E604 lda 4,X
035A A40F and #15
035C 2706 beq X14
035E X13:
035E 3800 lsl *__r1
0360 3900 rol *__r0
0362 4BFA dbnza X13
0364 X14:
0364 3F00 clr *__r2
0366 B602 lda 0x2
0368 BA00 ora *__r1
036A B700 sta *__r1
036C B600 lda *__r2
036E BA00 ora *__r0
0370 4E0002 mov *__r1,0x2
0373 .dbline 125
0373 ;
0373 ; //11 整合后*buf存放高四位(D11~D8),*(buf+1)中存放低八位(D7~D0)
0373 ; *(buf+1) = (*(buf+1)>>4) | (*buf<<4);
0373 E608 lda 8,X
0375 AB01 add #1
0377 B700 sta *__r1
0379 E607 lda 7,X
037B A900 adc #0
037D B700 sta *__r0
037F E607 lda 7,X
0381 EE08 ldx 8,X
0383 87 psha
0384 8A pulh
0385 F6 lda ,x
0386 62 nsa
0387 A4F0 and #-16
0389 B700 sta *__r2
038B 5500 ldhx *__r0
038D F6 lda ,x
038E B700 sta *__r4
0390 A604 lda #4
0392 X15:
0392 3400 lsr *__r4
0394 4BFC dbnza X15
0396 B600 lda *__r4
0398 BA00 ora *__r2
039A 5500 ldhx *__r0
039C F7 sta ,x
039D 95 tsx
039E .dbline 126
039E ; *buf = *buf>>4;
039E E607 lda 7,X
03A0 EE08 ldx 8,X
03A2 87 psha
03A3 8A pulh
03A4 F6 lda ,x
03A5 95 tsx
03A6 B700 sta *__r0
03A8 A604 lda #4
03AA X16:
03AA 3400 lsr *__r0
03AC 4BFC dbnza X16
03AE 4E0000 mov *__r0,*__r1
03B1 E608 lda 8,X
03B3 B700 sta *__r3
03B5 E607 lda 7,X
03B7 B700 sta *__r2
03B9 B600 lda *__r1
03BB 5500 ldhx *__r2
03BD F7 sta ,x
03BE 95 tsx
03BF .dbline -2
03BF L37:
03BF A701 ais #1
03C1 .dbline 0 ; func end
03C1 81 rts
03C2 .dbsym l temp 0 c
03C2 .dbsym l buf 7 pc
03C2 .dbsym l channel 5 i
03C2 .dbsym l cs 3 i
03C2 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -