📄 adc22p.lis
字号:
00E3 3F00 clr *__r0
00E5 E607 lda 7,X
00E7 B700 sta *__r1
00E9 3800 lsl *__r1
00EB 3900 rol *__r0
00ED B600 lda *__r1
00EF EB0C add 12,X
00F1 B700 sta *__r1
00F3 B600 lda *__r0
00F5 E90B adc 11,X
00F7 B700 sta *__r0
00F9 5500 ldhx *__r0
00FB E601 lda 1,x
00FD B700 sta *__r3
00FF F6 lda ,x
0100 B700 sta *__r2
0102 A604 lda #4
0104 X0:
0104 3400 lsr *__r2
0106 3600 ror *__r3
0108 4BFA dbnza X0
010A B600 lda *__r2
010C 5500 ldhx *__r0
010E F7 sta ,x
010F B600 lda *__r3
0111 E701 sta 1,x
0113 95 tsx
0114 L16:
0114 .dbline 53
0114 6C07 inc 7,X
0116 L18:
0116 .dbline 53
0116 E607 lda 7,X
0118 A115 cmp #21
011A 23C7 bls L15
011C .dbline -2
011C L2:
011C A709 ais #9
011E .dbline 0 ; func end
011E 81 rts
011F .dbsym l j 0 c
011F .dbsym l temp 1 s
011F .dbsym l channel 3 c
011F .dbsym l cs 4 c
011F .dbsym l buff 5 A[2:2]c
011F .dbsym l flag 7 c
011F .dbsym l i 8 c
011F .dbsym l ADValue 11 ps
011F .dbend
011F .dbfunc e TLC2543 _TLC2543 fV
011F ; temp -> 0,X
011F ; buf -> 7,X
011F ; channel -> 5,X
011F ; cs -> 3,X
011F _TLC2543::
011F .dbline -1
011F A7FF ais #-1
0121 95 tsx
0122 .dbline 66
0122 ; ADValue[flag]=ADValue[flag]/16;
0122 ; }
0122 ; /*TLC2543芯片A/D转换子程序(TLC2543.c)--------------------------*
0122 ; *TLC2543的接线: *
0122 ; * ① I/O LOCK(18)接MC08HC908GP32的SPSCK(18) *
0122 ; * ② DATA INPUT(17)接MC08HC908GP32的MOSI(17) *
0122 ; * ③ DATA OUT (16)接MC08HC908GP32的MISO(16) *
0122 ; * ④ 0-1片的片选CS(15)接分别接MC08HC908GP32的PTC0~1 *
0122 ; *入口:cs-片号,channel-通道号0,1,2 ...10 buf-存放数据的首址 *
0122 ; *出口:内存buf开始连续两个地址为取出的数(高4位、低8位) *
0122 ; *--------------------------------------------------------------*/
0122 ; void TLC2543(INT16U cs,INT16U channel,INT8U *buf)
0122 ; {
0122 .dbline 68
0122 ; INT8U temp;
0122 ; CS_D=0xff; //定义PTC为输出
0122 A6FF lda #-1
0124 B706 sta 0x6
0126 .dbline 69
0126 ; CS_P = 0xff; //C口全为高电平
0126 A6FF lda #-1
0128 B702 sta 0x2
012A .dbline 71
012A ; //TLC2543片选CS=1
012A ; CS_P &= ~(1<<cs); //相应片TLC2543的选CS=0,产生高到低的变化
012A 6E0000 mov #0,*__r0
012D 6E0100 mov #1,*__r1
0130 E604 lda 4,X
0132 A40F and #15
0134 2706 beq X4
0136 X3:
0136 3800 lsl *__r1
0138 3900 rol *__r0
013A 4BFA dbnza X3
013C X4:
013C 3300 com *__r1
013E 3300 com *__r0
0140 3F00 clr *__r2
0142 B602 lda 0x2
0144 B400 and *__r1
0146 B700 sta *__r1
0148 B600 lda *__r2
014A B400 and *__r0
014C 4E0002 mov *__r1,0x2
014F .dbline 73
014F ;
014F ; SPIDR = (channel<<4) | 0x0C;//入口通道、16位格式、MSB先送出、二进制
014F E606 lda 6,X
0151 B700 sta *__r1
0153 E605 lda 5,X
0155 B700 sta *__r0
0157 A604 lda #4
0159 X5:
0159 3800 lsl *__r1
015B 3900 rol *__r0
015D 4BFA dbnza X5
015F B600 lda *__r1
0161 AA0C ora #12
0163 B712 sta 0x12
0165 L20:
0165 .dbline 74
0165 L21:
0165 .dbline 74
0165 ; while ((SPISCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1
0165 0711FD brclr #3,0x11,L20
0168 L23:
0168 .dbline 76
0168 L24:
0168 .dbline 76
0168 ; //发送完毕
0168 ; while ((SPISCR & (1<<ReFullBit)) == 0); //为0等待,也就是等待SPRF为1
0168 0F11FD brclr #7,0x11,L23
016B .dbline 78
016B ; //发送控制字,取出上次转换结果高字节
016B ; *buf = SPIDR; //*buf中存放的是D11~D4位
016B E608 lda 8,X
016D B700 sta *__r1
016F E607 lda 7,X
0171 B700 sta *__r0
0173 B612 lda 0x12
0175 5500 ldhx *__r0
0177 F7 sta ,x
0178 95 tsx
0179 .dbline 79
0179 ; SPIDR = *buf; //上次转换结果低字节(后四位为0),握手信号
0179 E607 lda 7,X
017B EE08 ldx 8,X
017D 87 psha
017E 8A pulh
017F F6 lda ,x
0180 95 tsx
0181 B712 sta 0x12
0183 L26:
0183 .dbline 80
0183 L27:
0183 .dbline 80
0183 ; while ((SPISCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1
0183 0711FD brclr #3,0x11,L26
0186 L29:
0186 .dbline 82
0186 L30:
0186 .dbline 82
0186 ; //发送完毕
0186 ; while ((SPISCR & (1<<ReFullBit)) == 0); //为0等待,也就是等待SPRF为1
0186 0F11FD brclr #7,0x11,L29
0189 .dbline 84
0189 ; //接收到数据
0189 ; *(buf+1) = SPIDR;// *(buf+1)中存放D3~D0位
0189 E608 lda 8,X
018B AB01 add #1
018D B700 sta *__r1
018F E607 lda 7,X
0191 A900 adc #0
0193 B700 sta *__r0
0195 B612 lda 0x12
0197 5500 ldhx *__r0
0199 F7 sta ,x
019A 95 tsx
019B .dbline 85
019B ; CS_P= 0xff; //TLC2543片选CS=1
019B A6FF lda #-1
019D B702 sta 0x2
019F .dbline 87
019F ; //整合后*buf存放高四位(D11~D8),*(buf+1)中存放低八位(D7~D0)
019F ; *(buf+1) = (*(buf+1)>>4) | (*buf<<4);
019F E608 lda 8,X
01A1 AB01 add #1
01A3 B700 sta *__r1
01A5 E607 lda 7,X
01A7 A900 adc #0
01A9 B700 sta *__r0
01AB E607 lda 7,X
01AD EE08 ldx 8,X
01AF 87 psha
01B0 8A pulh
01B1 F6 lda ,x
01B2 62 nsa
01B3 A4F0 and #-16
01B5 B700 sta *__r2
01B7 5500 ldhx *__r0
01B9 F6 lda ,x
01BA B700 sta *__r4
01BC A604 lda #4
01BE X6:
01BE 3400 lsr *__r4
01C0 4BFC dbnza X6
01C2 B600 lda *__r4
01C4 BA00 ora *__r2
01C6 5500 ldhx *__r0
01C8 F7 sta ,x
01C9 95 tsx
01CA .dbline 88
01CA ; *buf = *buf>>4;
01CA E607 lda 7,X
01CC EE08 ldx 8,X
01CE 87 psha
01CF 8A pulh
01D0 F6 lda ,x
01D1 95 tsx
01D2 B700 sta *__r0
01D4 A604 lda #4
01D6 X7:
01D6 3400 lsr *__r0
01D8 4BFC dbnza X7
01DA 4E0000 mov *__r0,*__r1
01DD E608 lda 8,X
01DF B700 sta *__r3
01E1 E607 lda 7,X
01E3 B700 sta *__r2
01E5 B600 lda *__r1
01E7 5500 ldhx *__r2
01E9 F7 sta ,x
01EA 95 tsx
01EB .dbline -2
01EB L19:
01EB A701 ais #1
01ED .dbline 0 ; func end
01ED 81 rts
01EE .dbsym l temp 0 c
01EE .dbsym l buf 7 pc
01EE .dbsym l channel 5 s
01EE .dbsym l cs 3 s
01EE .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -