📄 ex3_utility.lst
字号:
520: if((echo==ESC)||(echo==DOT)||(echo==CR))
000d c11b CMPB #27
000f 2708 BEQ *+10 ;abs = 0019
0011 c12e CMPB #46
0013 2704 BEQ *+6 ;abs = 0019
0015 c10d CMPB #13
0017 2602 BNE *+4 ;abs = 001b
521: loop = DISABLE; //break the while loop
0019 6984 CLR 4,SP
522: if (echo==BS || echo==DEL)
001b c108 CMPB #8
001d 2704 BEQ *+6 ;abs = 0023
001f c17f CMPB #127
0021 261a BNE *+28 ;abs = 003d
523: {
524: if(count>0) //del 4 bit data in buffer
0023 e682 LDAB 2,SP
0025 2716 BEQ *+24 ;abs = 003d
525: {
526: count--;
0027 6382 DEC 2,SP
527: c_ptr--;
0029 ee87 LDX 7,SP
002b 09 DEX
002c 6e87 STX 7,SP
528: tx_char0(echo); //send bs the char on screen
002e e683 LDAB 3,SP
0030 160000 JSR tx_char0
529: tx_char0(' '); //send space to clear the char
0033 c620 LDAB #32
0035 160000 JSR tx_char0
530: tx_char0(echo); //send bs again to move back the cursor
0038 e683 LDAB 3,SP
003a 160000 JSR tx_char0
531: }
532: }
533: if ((count<0x80)&&(echo!=DEL)&&(echo!=BS)) //update 4 bit data to buffer
003d e682 LDAB 2,SP
003f c180 CMPB #128
0041 2417 BCC *+25 ;abs = 005a
0043 e683 LDAB 3,SP
0045 c17f CMPB #127
0047 2711 BEQ *+19 ;abs = 005a
0049 c108 CMPB #8
004b 270d BEQ *+15 ;abs = 005a
534: {
535: count++;
004d 6282 INC 2,SP
536: tx_char0(echo); //send echo to screen
004f 160000 JSR tx_char0
537: *c_ptr++=echo;
0052 ee87 LDX 7,SP
0054 e683 LDAB 3,SP
0056 6b30 STAB 1,X+
0058 6e87 STX 7,SP
005a e684 LDAB 4,SP
005c 0411a9 DBEQ B,*-84 ;abs = 0008
538: }
539: }
540:
541: if (echo==DOT||echo ==ESC){
005f e683 LDAB 3,SP
0061 c12e CMPB #46
0063 2704 BEQ *+6 ;abs = 0069
0065 c11b CMPB #27
0067 2606 BNE *+8 ;abs = 006f
542: *c_ptr++=echo;
0069 ee87 LDX 7,SP
006b 6b30 STAB 1,X+
543: *c_ptr='\r';
544: *n=count;
545: return(OK);
006d 200f BRA *+17 ;abs = 007e
546: }
547:
548: if(count!=0 && echo==CR)
006f a682 LDAA 2,SP
0071 2718 BEQ *+26 ;abs = 008b
0073 c10d CMPB #13
0075 2614 BNE *+22 ;abs = 008b
549: {
550: tx_char0('\n'); //send echo to screen
0077 c60a LDAB #10
0079 160000 JSR tx_char0
551: *c_ptr='\r';
007c ee87 LDX 7,SP
007e c60d LDAB #13
0080 6b00 STAB 0,X
552: *n=count;
0082 ee80 LDX 0,SP
0084 a682 LDAA 2,SP
0086 6a00 STAA 0,X
553: return(OK);
0088 c601 LDAB #1
008a 21 SKIP1
554: }
555: else
556: return(NOTOK);
008b c7 CLRB
557: }
008c 1b85 LEAS 5,SP
008e 3d RTS
558:
559: /*******************************************************************
560: * Input byte (dec) subroutine
561: * Description : Get the data(byte) from user
562: * :
563: * :
564: * Example : N/A
565: * Input : N/A
566: * Output : *c_ptr
567: * Modify : N/A
568: * Return : status [OK for ('0'-'z') or NOTOK for others chars]
569: *********************************************************************/
570: byte input_dec(byte *c_ptr)
571: {
Function: input_dec
Source : D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\sources\ex3_utility.c
Options : -DNON_BANK -Env"GENPATH=D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31;D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\bin;D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\cmd;D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\prm;D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\sources;C:\Program Files\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\LIB;C:\Program Files\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\SRC;C:\Program Files\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\INCLUDE" -Env"LIBPATH=C:\Program Files\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\INCLUDE" -Env"OBJPATH=D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\bin" -Env"TEXTPATH=D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\bin" -Lasm=%n.lst -ObjN="D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\S12_Ex4_Portb_ICD_CW31_Data\Flash_Application\ObjectCode\ex3_utility.c.o" -Ol0
0000 1b92 LEAS -14,SP
0002 3b PSHD
572: byte echo,cdata,loop=ENABLE;
0003 c601 LDAB #1
0005 6b8d STAB 13,SP
573: int count=0,i_data,i_data1,i_data2,i,j;
0007 c7 CLRB
0008 87 CLRA
0009 6c84 STD 4,SP
574:
575: i_data=0;
000b 6c82 STD 2,SP
576: *c_ptr=0;
000d ee80 LDX 0,SP
000f 6b00 STAB 0,X
577: while(loop == ENABLE)
578: {
579: echo=rx_char0();
0011 160000 JSR rx_char0
0014 6b88 STAB 8,SP
580: if((echo==ESC)||(echo==DOT)||(echo==CR))
0016 c11b CMPB #27
0018 2708 BEQ *+10 ;abs = 0022
001a c12e CMPB #46
001c 2704 BEQ *+6 ;abs = 0022
001e c10d CMPB #13
0020 2602 BNE *+4 ;abs = 0024
581: loop = DISABLE; //break the while loop
0022 698d CLR 13,SP
582: if (echo==BS || echo==DEL)
0024 c108 CMPB #8
0026 2704 BEQ *+6 ;abs = 002c
0028 c17f CMPB #127
002a 261f BNE *+33 ;abs = 004b
583: {
584: if(count>0) //del 4 bit data in buffer
002c ee84 LDX 4,SP
002e 2f1b BLE *+29 ;abs = 004b
585: {
586: count--;
0030 09 DEX
0031 6e84 STX 4,SP
587: i_data=i_data>>4;
0033 ed82 LDY 2,SP
0035 c604 LDAB #4
0037 160000 JSR _ISHRS
003a 6c82 STD 2,SP
588: tx_char0(echo); //send bs the char on screen
003c e688 LDAB 8,SP
003e 160000 JSR tx_char0
589: tx_char0(' '); //send space to clear the char
0041 c620 LDAB #32
0043 160000 JSR tx_char0
590: tx_char0(echo); //send bs again to move back the cursor
0046 e688 LDAB 8,SP
0048 160000 JSR tx_char0
591: }
592: }
593: if (count<3) //update 4 bit data to buffer
004b ee84 LDX 4,SP
004d 8e0003 CPX #3
0050 2c1f BGE *+33 ;abs = 0071
594: {
595: if((echo<='9') && (echo>='0'))
0052 e688 LDAB 8,SP
0054 c030 SUBB #48
0056 c109 CMPB #9
0058 2217 BHI *+25 ;abs = 0071
596: {
597: // if ((echo>='0') && (echo<='9'))
598: cdata=echo-0x30;
599: count++;
005a 08 INX
005b 6e84 STX 4,SP
600: tx_char0(echo); //send echo to screen
005d 37 PSHB
005e e689 LDAB 9,SP
0060 160000 JSR tx_char0
601: i_data=(i_data<<4);
0063 ec83 LDD 3,SP
0065 59 ASLD
0066 59 ASLD
0067 59 ASLD
0068 59 ASLD
0069 6c83 STD 3,SP
602: i_data+=cdata;
006b 33 PULB
006c 87 CLRA
006d e382 ADDD 2,SP
006f 6c82 STD 2,SP
0071 e68d LDAB 13,SP
0073 04119b DBEQ B,*-98 ;abs = 0011
603: }
604: }
605: }
606:
607: if (echo==DOT||echo ==ESC){
0076 e688 LDAB 8,SP
0078 c12e CMPB #46
007a 2704 BEQ *+6 ;abs = 0080
007c c11b CMPB #27
007e 2606 BNE *+8 ;abs = 0086
608: *c_ptr=echo;
0080 ee80 LDX 0,SP
0082 6b00 STAB 0,X
609: return(OK);
0084 204d BRA *+79 ;abs = 00d3
610: }
611:
612: if(count!=0 && echo==CR)
0086 ee84 LDX 4,SP
0088 274c BEQ *+78 ;abs = 00d6
008a c10d CMPB #13
008c 2648 BNE *+74 ;abs = 00d6
613: {
614: for (i=0;i<count;i++)
008e c7 CLRB
008f 87 CLRA
0090 6c86 STD 6,SP
0092 2039 BRA *+59 ;abs = 00cd
615: {
616: i_data1 = ((i_data)>>((unsigned char)(4*i))&0xf);
0094 e687 LDAB 7,SP
0096 58 ASLB
0097 58 ASLB
0098 ed82 LDY 2,SP
009a 160000 JSR _ISHRS
009d c40f ANDB #15
009f 87 CLRA
00a0 6c8e STD 14,SP
617: i_data2=1;
0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -