📄 tg1286~1.lst
字号:
963F 87 pshA
9640 4F clrA
9641 87 pshA
9642 CD 993E jsr __divmod16u
9645 A7 02 aiS #2
9647 4E 4D41 mov *__rlo,*__r1
964A B6 41 ldA *__r1
964C E7 01 stA 1,X
964E E6 0B ldA 11,X
9650 B7 4D stA *__rlo
9652 E6 0A ldA 10,X
9654 B7 4C stA *__rhi
9656 A6 64 ldA #100
9658 87 pshA
9659 4F clrA
965A 87 pshA
965B CD 993E jsr __divmod16u
965E 86 pulA
965F B7 40 stA *__r0
9661 86 pulA
9662 B7 4D stA *__rlo
9664 4E 404C mov *__r0,*__rhi
9667 A6 0A ldA #10
9669 87 pshA
966A 4F clrA
966B 87 pshA
966C CD 993E jsr __divmod16u
966F A7 02 aiS #2
9671 4E 4D41 mov *__rlo,*__r1
9674 B6 41 ldA *__r1
9676 E7 02 stA 2,X
(0248) Wtite_Command(0b00110110); //扩展指令,绘图开
9678 A6 36 ldA #54
967A 87 pshA
967B CD 959F jsr _Wtite_Command
967E A7 01 aiS #1
9680 95 tSX
(0249) if(Y==1) X+=8; //参数调整
9681 E6 06 ldA 6,X
9683 A1 01 cmp #1
9685 26 06 bne 0x968D
9687 E6 07 ldA 7,X
9689 AB 08 add #8
968B E7 07 stA 7,X
(0250) for(Yi=0;Yi<32;Yi++)
968D 6F 03 clr 3,X
968F CC 978B jmp 0x978B
(0251) {
9692 E6 01 ldA 1,X
9694 27 4E beq 0x96E4
(0252) if(BBit!=0) LcdShGr16P(Yi,X,*(BigNumCodeAdrr+BBit*32+Yi));
9696 3F 40 clr *__r0
9698 B7 41 stA *__r1
969A A6 05 ldA #5
969C 38 41 lsl *__r1
969E 39 40 rol *__r0
96A0 4B FA dbnzA 0x962D
96A2 38 41 lsl *__r1
96A4 39 40 rol *__r0
96A6 B6 41 ldA *__r1
96A8 EB 09 add 9,X
96AA B7 41 stA *__r1
96AC B6 40 ldA *__r0
96AE E9 08 adc 8,X
96B0 B7 40 stA *__r0
96B2 3F 42 clr *__r2
96B4 E6 03 ldA 3,X
96B6 B7 43 stA *__r3
96B8 38 43 lsl *__r3
96BA 39 42 rol *__r2
96BC B6 43 ldA *__r3
96BE BB 41 add *__r1
96C0 B7 41 stA *__r1
96C2 B6 42 ldA *__r2
96C4 B9 40 adc *__r0
96C6 B7 40 stA *__r0
96C8 55 40 ldHX *__r0
96CA E6 01 ldA 1,X
96CC B7 41 stA *__r1
96CE F6 ldA 0,X
96CF 95 tSX
96D0 B7 40 stA *__r0
96D2 B6 41 ldA *__r1
96D4 87 pshA
96D5 B6 40 ldA *__r0
96D7 87 pshA
96D8 E6 07 ldA 7,X
96DA 87 pshA
96DB E6 03 ldA 3,X
96DD 87 pshA
96DE CD 9569 jsr _LcdShGr16P
96E1 A7 04 aiS #4
96E3 95 tSX
(0253) if(SBit!=0) LcdShGr16P(Yi,X+1,*(BigNumCodeAdrr+SBit*32+Yi));
96E4 E6 02 ldA 2,X
96E6 27 50 beq 0x9738
96E8 3F 40 clr *__r0
96EA B7 41 stA *__r1
96EC A6 05 ldA #5
96EE 38 41 lsl *__r1
96F0 39 40 rol *__r0
96F2 4B FA dbnzA 0x975D
96F4 38 41 lsl *__r1
96F6 39 40 rol *__r0
96F8 B6 41 ldA *__r1
96FA EB 09 add 9,X
96FC B7 41 stA *__r1
96FE B6 40 ldA *__r0
9700 E9 08 adc 8,X
9702 B7 40 stA *__r0
9704 3F 42 clr *__r2
9706 E6 03 ldA 3,X
9708 B7 43 stA *__r3
970A 38 43 lsl *__r3
970C 39 42 rol *__r2
970E B6 43 ldA *__r3
9710 BB 41 add *__r1
9712 B7 41 stA *__r1
9714 B6 42 ldA *__r2
9716 B9 40 adc *__r0
9718 B7 40 stA *__r0
971A 55 40 ldHX *__r0
971C E6 01 ldA 1,X
971E B7 41 stA *__r1
9720 F6 ldA 0,X
9721 95 tSX
9722 B7 40 stA *__r0
9724 B6 41 ldA *__r1
9726 87 pshA
9727 B6 40 ldA *__r0
9729 87 pshA
972A E6 07 ldA 7,X
972C AB 01 add #1
972E 87 pshA
972F E6 03 ldA 3,X
9731 87 pshA
9732 CD 9569 jsr _LcdShGr16P
9735 A7 04 aiS #4
9737 95 tSX
(0254) LcdShGr16P(Yi,X+2,*(BigNumCodeAdrr+GBit*32+Yi));
9738 3F 40 clr *__r0
973A F6 ldA 0,X
973B B7 41 stA *__r1
973D A6 05 ldA #5
973F 38 41 lsl *__r1
9741 39 40 rol *__r0
9743 4B FA dbnzA 0x97AE
9745 38 41 lsl *__r1
9747 39 40 rol *__r0
9749 B6 41 ldA *__r1
974B EB 09 add 9,X
974D B7 41 stA *__r1
974F B6 40 ldA *__r0
9751 E9 08 adc 8,X
9753 B7 40 stA *__r0
9755 3F 42 clr *__r2
9757 E6 03 ldA 3,X
9759 B7 43 stA *__r3
975B 38 43 lsl *__r3
975D 39 42 rol *__r2
975F B6 43 ldA *__r3
9761 BB 41 add *__r1
9763 B7 41 stA *__r1
9765 B6 42 ldA *__r2
9767 B9 40 adc *__r0
9769 B7 40 stA *__r0
976B 55 40 ldHX *__r0
976D E6 01 ldA 1,X
976F B7 41 stA *__r1
9771 F6 ldA 0,X
9772 95 tSX
9773 B7 40 stA *__r0
9775 B6 41 ldA *__r1
9777 87 pshA
9778 B6 40 ldA *__r0
977A 87 pshA
977B E6 07 ldA 7,X
977D AB 02 add #2
977F 87 pshA
9780 E6 03 ldA 3,X
9782 87 pshA
9783 CD 9569 jsr _LcdShGr16P
9786 A7 04 aiS #4
9788 95 tSX
(0255) }
9789 6C 03 inc 3,X
978B E6 03 ldA 3,X
978D A1 20 cmp #32
978F 24 03 bcc 0x9794
9791 CC 9692 jmp 0x9692
(0256) Wtite_Command(0b00110000); //基本指令
9794 A6 30 ldA #48
9796 87 pshA
9797 CD 959F jsr _Wtite_Command
979A A7 01 aiS #1
979C 95 tSX
(0257) LcdShBigNum_End:;
979D A7 04 aiS #4
979F 81 rts
_SCISend1:
o --> X+2
97A0 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可以发送
97A1 20 09 bra 0x97AC
(0018) while(1)
(0019) if ((ReSendStatusR & (1<<SendTestBit)) != 0)
97A3 0F 1606 BRclr 7,0x16,0x97AC
(0020) { ReSendDataR=o;
97A6 E6 02 ldA 2,X
97A8 B7 18 stA 0x18
(0021) break;}
97AA 20 02 bra 0x97AE
97AC 20 F5 bra 0x97A3
97AE 81 rts
_SCISendN:
i --> X+0
ch --> X+5
n --> X+4
97AF A7 FE aiS #-2
97B1 95 tSX
(0022) }
(0023) /*SCISendN:串行发送N个字节-----------------------------*
(0024) *功 能:发送数组中的N个字节数据 *
(0025) *参 数:待发送的数据字节数及其要存放的数组首地址 *
(0026) *返 回:无 *
(0027) *-----------------------------------------------------*/
(0028) void SCISendN(unsigned char n,unsigned char ch[])
(0029) {int i;
97B2 6F 01 clr 1,X
97B4 7F clr 0,X
97B5 20 1F bra 0x97D6
(0030) for(i=0;i<n;i++)
(0031) SCISend1(ch[i]);
97B7 E6 01 ldA 1,X
97B9 EB 06 add 6,X
97BB B7 41 stA *__r1
97BD F6 ldA 0,X
97BE E9 05 adc 5,X
97C0 B7 40 stA *__r0
97C2 55 40 ldHX *__r0
97C4 F6 ldA 0,X
97C5 87 pshA
97C6 CD 97A0 jsr _SCISend1
97C9 A7 01 aiS #1
97CB 95 tSX
97CC E6 01 ldA 1,X
97CE AB 01 add #1
97D0 E7 01 stA 1,X
97D2 F6 ldA 0,X
97D3 A9 00 adc #0
97D5 F7 stA 0,X
97D6 3F 40 clr *__r0
97D8 E6 04 ldA 4,X
97DA B7 41 stA *__r1
97DC E6 01 ldA 1,X
97DE B7 43 stA *__r3
97E0 F6 ldA 0,X
97E1 B7 42 stA *__r2
97E3 55 42 ldHX *__r2
97E5 75 40 cpHX *__r0
97E7 95 tSX
97E8 91 CD blt 0x97B7
97EA A7 02 aiS #2
97EC 81 rts
_SCIRe1:
i --> X+0
k --> X+1
p --> X+5
97ED A7 FD aiS #-3
97EF 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;
97F0 6F 02 clr 2,X
97F2 6F 01 clr 1,X
97F4 20 21 bra 0x9817
(0041) unsigned char i;
(0042) //ReStatusR第ReTestBit位为1表示可接收数据
(0043) for(k=0;k<0xfbbb;k++)
(0044) if ((ReSendStatusR & (1<<ReTestBit)) != 0)
97F6 0B 1612 BRclr 5,0x16,0x980B
(0045) {i=ReSendDataR;
97F9 B6 18 ldA 0x18
97FB F7 stA 0,X
(0046) *p=0x00;
97FC E6 06 ldA 6,X
97FE B7 41 stA *__r1
9800 E6 05 ldA 5,X
9802 B7 40 stA *__r0
9804 4F clrA
9805 55 40 ldHX *__r0
9807 F7 stA 0,X
9808 95 tSX
(0047) break;}
9809 20 1C bra 0x9827
980B E6 02 ldA 2,X
980D AB 01 add #1
980F E7 02 stA 2,X
9811 E6 01 ldA 1,X
9813 A9 00 adc #0
9815 E7 01 stA 1,X
9817 E6 02 ldA 2,X
9819 B7 41 stA *__r1
981B E6 01 ldA 1,X
981D B7 40 stA *__r0
981F 55 40 ldHX *__r0
9821 65 FBBB cpHX #0xFBBB
9824 95 tSX
9825 25 CF bcs 0x97F6
(0048) if(k>=0xfbbb)
9827 E6 02 ldA 2,X
9829 B7 41 stA *__r1
982B E6 01 ldA 1,X
982D B7 40 stA *__r0
982F 55 40 ldHX *__r0
9831 65 FBBB cpHX #0xFBBB
9834 95 tSX
9835 25 11 bcs 0x9848
(0049) {i=0xff;
9837 A6 FF ldA #-1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -