📄 tg1286~1.lst
字号:
861E 95 tSX
861F 25 E0 bcs 0x8601
8621 A7 02 aiS #2
8623 81 rts
_SCISend1:
o --> X+2
8624 95 tSX
FILE: SCI.c
(0001) /*-----------------------------------------------------*
(0002) *文件描述:本文件包含了串行通信的4子程序,分别为: *
(0003) *(1)SCISend1:串行发送1字节 *
(0004) *(2)SCISendN:串行发送n字节 *
(0005) *(3)SCIRe1:串行接收1字节 *
(0006) *(4)SCIReN:串行接收n字节 *
(0007) *-------------《嵌入式应用技术基础教程》--------------*/
(0008) //[以下为子程序源代码]
(0009) //[包含头文件]
(0010) #include "SCI.h"
(0011) /*SCISend1:串行发送1个字节-----------------------------*
(0012) *功 能:串行发送1个字节 *
(0013) *参 数:要发送的数据 *
(0014) *返 回:无 *
(0015) *-----------------------------------------------------*/
(0016) void SCISend1(unsigned char o)
(0017) {//判断ReStatusR的第SendTestBit位是否为1,是1可以发送
8625 20 09 bra 0x8630
(0018) while(1)
(0019) if ((ReSendStatusR & (1<<SendTestBit)) != 0)
8627 0F 1606 BRclr 7,0x16,0x8630
(0020) { ReSendDataR=o;
862A E6 02 ldA 2,X
862C B7 18 stA 0x18
(0021) break;}
862E 20 02 bra 0x8632
8630 20 F5 bra 0x8627
8632 81 rts
_SCISendN:
i --> X+0
ch --> X+5
n --> X+4
8633 A7 FE aiS #-2
8635 95 tSX
(0022) }
(0023) /*SCISendN:串行发送N个字节-----------------------------*
(0024) *功 能:发送数组中的N个字节数据 *
(0025) *参 数:待发送的数据字节数及其要存放的数组首地址 *
(0026) *返 回:无 *
(0027) *-----------------------------------------------------*/
(0028) void SCISendN(unsigned char n,unsigned char ch[])
(0029) {int i;
8636 6F 01 clr 1,X
8638 7F clr 0,X
8639 20 1F bra 0x865A
(0030) for(i=0;i<n;i++)
(0031) SCISend1(ch[i]);
863B E6 01 ldA 1,X
863D EB 06 add 6,X
863F B7 41 stA *__r1
8641 F6 ldA 0,X
8642 E9 05 adc 5,X
8644 B7 40 stA *__r0
8646 55 40 ldHX *__r0
8648 F6 ldA 0,X
8649 87 pshA
864A CD 8624 jsr _SCISend1
864D A7 01 aiS #1
864F 95 tSX
8650 E6 01 ldA 1,X
8652 AB 01 add #1
8654 E7 01 stA 1,X
8656 F6 ldA 0,X
8657 A9 00 adc #0
8659 F7 stA 0,X
865A 3F 40 clr *__r0
865C E6 04 ldA 4,X
865E B7 41 stA *__r1
8660 E6 01 ldA 1,X
8662 B7 43 stA *__r3
8664 F6 ldA 0,X
8665 B7 42 stA *__r2
8667 55 42 ldHX *__r2
8669 75 40 cpHX *__r0
866B 95 tSX
866C 91 CD blt 0x863B
866E A7 02 aiS #2
8670 81 rts
_SCIRe1:
i --> X+0
k --> X+1
p --> X+5
8671 A7 FD aiS #-3
8673 95 tSX
(0032) }
(0033) /*SCIRe1:串行收一个字节数据----------------------------*
(0034) *功 能:从串行口接收1个字节的数据 *
(0035) *参 数:标志指针p *
(0036) *返 回:接收到的数据(若接收失败,返回0xff) *
(0037) *说 明:参数*p带回接收标志=0收到数据,=1未收到数据 *
(0038) *-----------------------------------------------------*/
(0039) unsigned char SCIRe1(unsigned char *p)
(0040) { unsigned int k;
8674 6F 02 clr 2,X
8676 6F 01 clr 1,X
8678 20 21 bra 0x869B
(0041) unsigned char i;
(0042) //ReStatusR第ReTestBit位为1表示可接收数据
(0043) for(k=0;k<0xfbbb;k++)
(0044) if ((ReSendStatusR & (1<<ReTestBit)) != 0)
867A 0B 1612 BRclr 5,0x16,0x868F
(0045) {i=ReSendDataR;
867D B6 18 ldA 0x18
867F F7 stA 0,X
(0046) *p=0x00;
8680 E6 06 ldA 6,X
8682 B7 41 stA *__r1
8684 E6 05 ldA 5,X
8686 B7 40 stA *__r0
8688 4F clrA
8689 55 40 ldHX *__r0
868B F7 stA 0,X
868C 95 tSX
(0047) break;}
868D 20 1C bra 0x86AB
868F E6 02 ldA 2,X
8691 AB 01 add #1
8693 E7 02 stA 2,X
8695 E6 01 ldA 1,X
8697 A9 00 adc #0
8699 E7 01 stA 1,X
869B E6 02 ldA 2,X
869D B7 41 stA *__r1
869F E6 01 ldA 1,X
86A1 B7 40 stA *__r0
86A3 55 40 ldHX *__r0
86A5 65 FBBB cpHX #0xFBBB
86A8 95 tSX
86A9 25 CF bcs 0x867A
(0048) if(k>=0xfbbb)
86AB E6 02 ldA 2,X
86AD B7 41 stA *__r1
86AF E6 01 ldA 1,X
86B1 B7 40 stA *__r0
86B3 55 40 ldHX *__r0
86B5 65 FBBB cpHX #0xFBBB
86B8 95 tSX
86B9 25 11 bcs 0x86CC
(0049) {i=0xff;
86BB A6 FF ldA #-1
86BD F7 stA 0,X
(0050) *p=0x01;}
86BE E6 06 ldA 6,X
86C0 B7 41 stA *__r1
86C2 E6 05 ldA 5,X
86C4 B7 40 stA *__r0
86C6 A6 01 ldA #1
86C8 55 40 ldHX *__r0
86CA F7 stA 0,X
86CB 95 tSX
(0051) return i; //返回接收到的数据
86CC F6 ldA 0,X
86CD A7 03 aiS #3
86CF 81 rts
_SCIReN:
fp --> X+0
m --> X+1
ch --> X+6
n --> X+5
86D0 A7 FD aiS #-3
86D2 95 tSX
(0052) }
(0053) /*SCIReN:HC08串行接收N个字节---------------------------*
(0054) *功 能:接收N个字节数据,并存放在ch数组中 *
(0055) *参 数:待接收的数据字节数及其存放的数组首地址 *
(0056) *返 回:接收标志=0收到数据,=1未收到数据 *
(0057) *-----------------------------------------------------*/
(0058) unsigned char SCIReN(unsigned char n,unsigned char ch[])
(0059) {int m;
86D3 6F 02 clr 2,X
86D5 6F 01 clr 1,X
86D7 20 31 bra 0x870A
(0060) unsigned char fp;
(0061) m=0;
(0062) while (m<n)
(0063) {
86D9 89 pshX
86DA 8B pshH
86DB CD 8671 jsr _SCIRe1
86DE A7 02 aiS #2
86E0 95 tSX
86E1 B7 41 stA *__r1
86E3 E6 02 ldA 2,X
86E5 EB 07 add 7,X
86E7 B7 43 stA *__r3
86E9 E6 01 ldA 1,X
86EB E9 06 adc 6,X
86ED B7 42 stA *__r2
86EF B6 41 ldA *__r1
86F1 55 42 ldHX *__r2
86F3 F7 stA 0,X
86F4 95 tSX
(0064) ch[m]=SCIRe1(&fp);
(0065) if (fp==1) return 1;
86F5 F6 ldA 0,X
86F6 A1 01 cmp #1
86F8 26 04 bne 0x86FE
86FA A6 01 ldA #1
86FC 20 22 bra 0x8720
(0066) m++;
86FE E6 02 ldA 2,X
8700 AB 01 add #1
8702 E7 02 stA 2,X
8704 E6 01 ldA 1,X
8706 A9 00 adc #0
8708 E7 01 stA 1,X
(0067) }
870A 3F 40 clr *__r0
870C E6 05 ldA 5,X
870E B7 41 stA *__r1
8710 E6 02 ldA 2,X
8712 B7 43 stA *__r3
8714 E6 01 ldA 1,X
8716 B7 42 stA *__r2
8718 55 42 ldHX *__r2
871A 75 40 cpHX *__r0
871C 95 tSX
871D 91 BA blt 0x86D9
(0068) return 0;
871F 4F clrA
8720 A7 03 aiS #3
8722 81 rts
FILE: SCIInit.c
(0001) /*SCIInit:串行口初始化子程序---------------------------*
(0002) *功 能:对串行口进行初始化,默认为允许SCI,正常码输出,8位 *
(0003) * 数据,无校验等,允许发送器允许接收器.查询方式收发,*
(0004) * 波特率为9600(设fBUS=2.4576MHz) *
(0005) *参 数:无 *
(0006) *返 回:无 *
(0007) *-----------------------------------------------------*/
(0008) #include "GP32C.H"
(0009) void SCIInit(void)
(0010) { //总线频率fBUS=2.4576MHz,定义波特率Bt=9600
_SCIInit:
8723 A6 02 ldA #2
8725 B7 19 stA 0x19
(0011) SCBR=0b00000010;
(0012) //设置允许SCI,正常码输出、8位数据、无校验
(0013) SCC1=0b01000000;
8727 A6 40 ldA #64
8729 B7 13 stA 0x13
(0014) //设置允许发送、允许接收,查询方式收发
(0015) SCC2=0b00001100;
FILE: <library>
872B A6 0C ldA #12
872D B7 14 stA 0x14
872F 81 rts
__cmp32:
8730 89 pshX
8731 8B pshH
8732 95 tSX
8733 E6 0B ldA 11,X
8735 E0 07 sub 7,X
8737 87 pshA
8738 E6 0A ldA 10,X
873A E2 06 sbc 6,X
873C 87 pshA
873D E6 09 ldA 9,X
873F E2 05 sbc 5,X
8741 87 pshA
8742 E6 08 ldA 8,X
8744 E2 04 sbc 4,X
8746 87 pshA
8747 26 16 bne 0x875F
8749 95 tSX
874A 85 tPA
874B 87 pshA
874C 6D 03 tst 3,X
874E 26 08 bne 0x8758
8750 6D 02 tst 2,X
8752 26 04 bne 0x8758
8754 6D 01 tst 1,X
8756 27 05 beq 0x875D
8758 86 pulA
8759 A4 FD and #-3
875B 20 01 bra 0x875E
875D 86 pulA
875E 84 tAP
875F A7 04 aiS #4
8761 8A pulH
8762 88 pulX
8763 81 rts
__divmod16s:
8764 89 pshX
8765 8B pshH
8766 A7 FF aiS #-1
8768 95 tSX
8769 6F 00 clr 0,X
876B 3D 4C tst *__rhi
876D 2A 0E bpl 0x877D
876F A6 03 ldA #3
8771 E7 00 stA 0,X
8773 4F clrA
8774 B0 4D sub *__rlo
8776 B7 4D stA *__rlo
8778 4F clrA
8779 B2 4C sbc *__rhi
877B B7 4C stA *__rhi
877D 6D 05 tst 5,X
877F 2A 10 bpl 0x8791
8781 A6 02 ldA #2
8783 E8 00 eor 0,X
8785 E7 00 stA 0,X
8787 4F clrA
8788 E0 06 sub 6,X
878A E7 06 stA 6,X
878C 4F clrA
878D E2 05 sbc 5,X
878F E7 05 stA 5,X
8791 E6 06 ldA 6,X
8793 87 pshA
8794 E6 05 ldA 5,X
8796 87 pshA
8797 AD 29 bsr 0x87C2
8799 86 pulA
879A E7 05 stA 5,X
879C 86 pulA
879D E7 06 stA 6,X
879F E6 00 ldA 0,X
87A1 A5 02 bit #2
87A3 27 0A beq 0x87AF
87A5 4F clrA
87A6 B0 4D sub *__rlo
87A8 B7 4D stA *__rlo
87AA 4F clrA
87AB B2 4C sbc *__rhi
87AD B7 4C stA *__rhi
87AF A5 01 bit #1
87B1 27 0A beq 0x87BD
87B3 4F clrA
87B4 E0 06 sub 6,X
87B6 E7 06 stA 6,X
87B8 4F clrA
87B9 E2 05 sbc 5,X
87BB E7 05 stA 5,X
87BD A7 01 aiS #1
87BF 8A pulH
87C0 88 pulX
87C1 81 rts
__divmod16u:
__divmodu_16X16_16:
87C2 89 pshX
87C3 8B pshH
87C4 A7 FC aiS #-4
87C6 95 tSX
87C7 6F 02 clr 2,X
87C9 6F 03 clr 3,X
87CB A6 10 ldA #16
87CD E7 00 stA 0,X
87CF 38 4D lsl *__rlo
87D1 39 4C rol *__rhi
87D3 69 03 rol 3,X
87D5 69 02 rol 2,X
87D7 24 0E bcc 0x87E7
87D9 E6 09 ldA 9,X
87DB EB 03 add 3,X
87DD E7 03 stA 3,X
87DF E6 08 ldA 8,X
87E1 E9 02 adc 2,X
87E3 E7 02 stA 2,X
87E5 20 0C bra 0x87F3
87E7 E6 03 ldA 3,X
87E9 E0 09 sub 9,X
87EB E7 03 stA 3,X
87ED E6 02 ldA 2,X
87EF E2 08 sbc 8,X
87F1 E7 02 stA 2,X
87F3 2B 06 bmi 0x87FB
87F5 A6 01 ldA #1
87F7 BA 4D orA *__rlo
87F9 B7 4D stA *__rlo
87FB 6A 00 dec 0,X
87FD 26 D0 bne 0x87CF
87FF 6D 02 tst 2,X
8801 2A 0C bpl 0x880F
8803 E6 09 ldA 9,X
8805 EB 03 add 3,X
8807 E7 03 stA 3,X
8809 E6 08 ldA 8,X
880B E9 02 adc 2,X
880D E7 02 stA 2,X
880F E6 02 ldA 2,X
8811 E7 08 stA 8,X
8813 E6 03 ldA 3,X
8815 E7 09 stA 9,X
8817 A7 04 aiS #4
8819 8A pulH
881A 88 pulX
881B 81 rts
__mul16:
881C 89 pshX
881D 8B pshH
881E 9EEE 06 ldX 6,S
8821 9EE6 08 ldA 8,S
8824 42 mul
8825 BF 4C stX *__rhi
8827 B7 4D stA *__rlo
8829 9EEE 05 ldX 5,S
882C 9EE6 08 ldA 8,S
882F 42 mul
8830 BB 4C add *__rhi
8832 B7 4C stA *__rhi
8834 9EEE 06 ldX 6,S
8837 9EE6 07 ldA 7,S
883A 42 mul
883B BB 4C add *__rhi
883D B7 4C stA *__rhi
883F 8A pulH
8840 88 pulX
8841 81 rts
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -