📄 sci_po~1.lst
字号:
823D 39 40 rol *__r0
823F B6 41 ldA *__r1
8241 EB 0C add 12,X
8243 B7 41 stA *__r1
8245 B6 40 ldA *__r0
8247 E9 0B adc 11,X
8249 B7 40 stA *__r0
824B 55 40 ldHX *__r0
824D E6 01 ldA 1,X
824F B7 43 stA *__r3
8251 F6 ldA 0,X
8252 95 tSX
8253 B7 42 stA *__r2
8255 B6 43 ldA *__r3
8257 EB 03 add 3,X
8259 B7 43 stA *__r3
825B B6 42 ldA *__r2
825D E9 02 adc 2,X
825F 55 40 ldHX *__r0
8261 F7 stA 0,X
8262 B6 43 ldA *__r3
8264 E7 01 stA 1,X
8266 95 tSX
(0038) flag++;
8267 6C 06 inc 6,X
(0039) }
8269 6C 07 inc 7,X
826B E6 07 ldA 7,X
826D A1 0A cmp #10
826F 23 82 bls 0x81F3
(0040) }
8271 6C 01 inc 1,X
8273 E6 01 ldA 1,X
8275 A1 10 cmp #16
8277 22 03 bhi 0x827C
8279 CC 81ED jmp 0x81ED
(0041)
(0042) //4 求22路A/D数据的16次平均值
(0043) for(flag=0;flag<=10;flag++)
827C 6F 06 clr 6,X
827E 20 33 bra 0x82B3
(0044) ADValue[flag]=ADValue[flag]/16;
8280 3F 40 clr *__r0
8282 E6 06 ldA 6,X
8284 B7 41 stA *__r1
8286 38 41 lsl *__r1
8288 39 40 rol *__r0
828A B6 41 ldA *__r1
828C EB 0C add 12,X
828E B7 41 stA *__r1
8290 B6 40 ldA *__r0
8292 E9 0B adc 11,X
8294 B7 40 stA *__r0
8296 55 40 ldHX *__r0
8298 E6 01 ldA 1,X
829A B7 43 stA *__r3
829C F6 ldA 0,X
829D B7 42 stA *__r2
829F A6 04 ldA #4
82A1 34 42 lsr *__r2
82A3 36 43 ror *__r3
82A5 4B FA dbnzA 0x8294
82A7 B6 42 ldA *__r2
82A9 55 40 ldHX *__r0
82AB F7 stA 0,X
82AC B6 43 ldA *__r3
82AE E7 01 stA 1,X
82B0 95 tSX
82B1 6C 06 inc 6,X
82B3 E6 06 ldA 6,X
82B5 A1 0A cmp #10
82B7 23 C7 bls 0x8280
82B9 A7 08 aiS #8
82BB 81 rts
_TLC2543:
temp --> X+0
buf --> X+7
channel --> X+5
cs --> X+3
82BC A7 FF aiS #-1
82BE 95 tSX
(0045) }
(0046)
(0047) //TLC2543芯片A/D转换子程序(TLC2543.c)--------------------------------------*
(0048) //TLC2543的接线: *
(0049) // ① I/O LOCK(18)接MC08HC908GP32的SPSCK(18) *
(0050) // ② DATA INPUT(17)接MC08HC908GP32的MOSI(17) *
(0051) // ③ DATA OUT (16)接MC08HC908GP32的MISO(16) *
(0052) // ④ 0-1片的片选CS(15)接分别接MC08HC908GP32的PTC0~1 *
(0053) //参 数:cs-片号,cs=0~7对应PTC0~7 *
(0054) // channel-通道号0,1,2 ...10 buf-存放数据的首址 *
(0055) //返 回:内存buf开始连续两个地址为取出的数(高4位、低8位) *
(0056) //说 明:(070418)将CS_D=0xff; CS_P=0xff *
(0057) // 改为CS_D|=1<<cs; CS_P|= 1<<cs;以避免影响PTC其他口 *
(0058) //-------------------------------------------------------------------------*
(0059) void TLC2543(INT16U cs,INT16U channel,INT8U *buf)
(0060) {
82BF 6E 0040 mov #0,*__r0
82C2 6E 0141 mov #1,*__r1
82C5 E6 04 ldA 4,X
82C7 A4 0F and #15
82C9 27 06 beq 0x82D1
82CB 38 41 lsl *__r1
82CD 39 40 rol *__r0
82CF 4B FA dbnzA 0x8312
82D1 3F 42 clr *__r2
82D3 B6 06 ldA 0x06
82D5 BA 41 orA *__r1
82D7 B7 41 stA *__r1
82D9 B6 42 ldA *__r2
82DB BA 40 orA *__r0
82DD 4E 4106 mov *__r1,0x06
(0061) INT8U temp;
(0062)
(0063) //1 初始化片选信号为1
(0064) CS_D |=1<<cs; //定义PTC的第cs引脚为输出
(0065) CS_P |=1<<cs; //C口的第cs引脚为高电平
82E0 6E 0040 mov #0,*__r0
82E3 6E 0141 mov #1,*__r1
82E6 E6 04 ldA 4,X
82E8 A4 0F and #15
82EA 27 06 beq 0x82F2
82EC 38 41 lsl *__r1
82EE 39 40 rol *__r0
82F0 4B FA dbnzA 0x8333
82F2 3F 42 clr *__r2
82F4 B6 02 ldA 0x02
82F6 BA 41 orA *__r1
82F8 B7 41 stA *__r1
82FA B6 42 ldA *__r2
82FC BA 40 orA *__r0
82FE 4E 4102 mov *__r1,0x02
(0066)
(0067) //2 相应片TLC2543的选CS=0,产生高到低的变化
(0068) CS_P &= ~(1<<cs);
8301 6E 0040 mov #0,*__r0
8304 6E 0141 mov #1,*__r1
8307 E6 04 ldA 4,X
8309 A4 0F and #15
830B 27 06 beq 0x8313
830D 38 41 lsl *__r1
830F 39 40 rol *__r0
8311 4B FA dbnzA 0x8354
8313 33 41 com *__r1
8315 33 40 com *__r0
8317 3F 42 clr *__r2
8319 B6 02 ldA 0x02
831B B4 41 and *__r1
831D B7 41 stA *__r1
831F B6 42 ldA *__r2
8321 B4 40 and *__r0
8323 4E 4102 mov *__r1,0x02
(0069)
(0070) //3 写控制字到相应片TLC2543
(0071) SPDR = (channel<<4) | 0x0C;//入口通道、16位格式、MSB先送出、二进制
8326 E6 06 ldA 6,X
8328 B7 41 stA *__r1
832A E6 05 ldA 5,X
832C B7 40 stA *__r0
832E A6 04 ldA #4
8330 38 41 lsl *__r1
8332 39 40 rol *__r0
8334 4B FA dbnzA 0x8338
8336 B6 41 ldA *__r1
8338 AA 0C orA #12
833A B7 12 stA 0x12
(0072)
(0073) //4 等待发送器空
(0074) while ((SPSCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1
833C 07 11FD BRclr 3,0x11,0x833C
(0075)
(0076) //5 等待接收器满
(0077) while ((SPSCR & (1<<ReFullBit)) == 0); //为0等待,也就是等待SPRF为1
833F 0F 11FD BRclr 7,0x11,0x833F
(0078)
(0079) //6 取出上次转换结果高字节
(0080) *buf = SPDR; //*buf中存放的是D11~D4位
8342 E6 08 ldA 8,X
8344 B7 41 stA *__r1
8346 E6 07 ldA 7,X
8348 B7 40 stA *__r0
834A B6 12 ldA 0x12
834C 55 40 ldHX *__r0
834E F7 stA 0,X
834F 95 tSX
(0081) SPDR = *buf; //上次转换结果低字节(后四位为0),握手信号
8350 E6 07 ldA 7,X
8352 EE 08 ldX 8,X
8354 87 pshA
8355 8A pulH
8356 F6 ldA 0,X
8357 95 tSX
8358 B7 12 stA 0x12
(0082)
(0083) //7 等待发送结束
(0084) while ((SPSCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1
835A 07 11FD BRclr 3,0x11,0x835A
(0085)
(0086) //8 等待新数据到达
(0087) while ((SPSCR & (1<<ReFullBit)) == 0); //为0等待,也就是等待SPRF为1
835D 0F 11FD BRclr 7,0x11,0x835D
(0088)
(0089) //9 取出上次转换结果的低4位
(0090) *(buf+1) = SPDR;// *(buf+1)中存放D3~D0位(后四位为0)
8360 E6 08 ldA 8,X
8362 AB 01 add #1
8364 B7 41 stA *__r1
8366 E6 07 ldA 7,X
8368 A9 00 adc #0
836A B7 40 stA *__r0
836C B6 12 ldA 0x12
836E 55 40 ldHX *__r0
8370 F7 stA 0,X
8371 95 tSX
(0091)
(0092) //10 TLC2543片选CS=1
(0093) CS_P |=1<<cs;
8372 6E 0040 mov #0,*__r0
8375 6E 0141 mov #1,*__r1
8378 E6 04 ldA 4,X
837A A4 0F and #15
837C 27 06 beq 0x8384
837E 38 41 lsl *__r1
8380 39 40 rol *__r0
8382 4B FA dbnzA 0x83C5
8384 3F 42 clr *__r2
8386 B6 02 ldA 0x02
8388 BA 41 orA *__r1
838A B7 41 stA *__r1
838C B6 42 ldA *__r2
838E BA 40 orA *__r0
8390 4E 4102 mov *__r1,0x02
(0094)
(0095) //11 整合后*buf存放高四位(D11~D8),*(buf+1)中存放低八位(D7~D0)
(0096) *(buf+1) = (*(buf+1)>>4) | (*buf<<4);
8393 E6 08 ldA 8,X
8395 AB 01 add #1
8397 B7 41 stA *__r1
8399 E6 07 ldA 7,X
839B A9 00 adc #0
839D B7 40 stA *__r0
839F E6 07 ldA 7,X
83A1 EE 08 ldX 8,X
83A3 87 pshA
83A4 8A pulH
83A5 F6 ldA 0,X
83A6 62 nsa
83A7 A4 F0 and #-16
83A9 B7 42 stA *__r2
83AB 55 40 ldHX *__r0
83AD F6 ldA 0,X
83AE B7 44 stA *__r4
83B0 A6 04 ldA #4
83B2 34 44 lsr *__r4
83B4 4B FC dbnzA 0x83B8
83B6 B6 44 ldA *__r4
83B8 BA 42 orA *__r2
83BA 55 40 ldHX *__r0
83BC F7 stA 0,X
83BD 95 tSX
(0097) *buf = *buf>>4;
FILE: <library>
83BE E6 07 ldA 7,X
83C0 EE 08 ldX 8,X
83C2 87 pshA
83C3 8A pulH
83C4 F6 ldA 0,X
83C5 95 tSX
83C6 B7 40 stA *__r0
83C8 A6 04 ldA #4
83CA 34 40 lsr *__r0
83CC 4B FC dbnzA 0x83D0
83CE 4E 4041 mov *__r0,*__r1
83D1 E6 08 ldA 8,X
83D3 B7 43 stA *__r3
83D5 E6 07 ldA 7,X
83D7 B7 42 stA *__r2
83D9 B6 41 ldA *__r1
83DB 55 42 ldHX *__r2
83DD F7 stA 0,X
83DE 95 tSX
83DF A7 01 aiS #1
83E1 81 rts
__HC08Setup:
83E2 81 rts
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -