📄 ex3_utility.lst
字号:
Source : D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\sources\ex3_utility.c
Options : -DNON_BANK -Env"GENPATH=D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31;D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\bin;D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\cmd;D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\prm;D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM 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\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\bin" -Env"TEXTPATH=D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\bin" -Lasm=%n.lst -ObjN="D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\S12_Ex5_EEPROM_ICD_CW31_Data\FCS\ObjectCode\ex3_utility.c.o" -Ol0
0000 6cab STD 5,-SP
509: byte echo,loop=ENABLE;
0002 c601 LDAB #1
0004 6b84 STAB 4,SP
510: byte count=0;
0006 6982 CLR 2,SP
511:
512: while(loop == ENABLE)
513: {
514: echo=rx_char0();
0008 160000 JSR rx_char0
000b 6b83 STAB 3,SP
515: 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
516: loop = DISABLE; //break the while loop
0019 6984 CLR 4,SP
517: 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
518: {
519: if(count>0) //del 4 bit data in buffer
0023 e682 LDAB 2,SP
0025 2716 BEQ *+24 ;abs = 003d
520: {
521: count--;
0027 6382 DEC 2,SP
522: c_ptr--;
0029 ee87 LDX 7,SP
002b 09 DEX
002c 6e87 STX 7,SP
523: tx_char0(echo); //send bs the char on screen
002e e683 LDAB 3,SP
0030 160000 JSR tx_char0
524: tx_char0(' '); //send space to clear the char
0033 c620 LDAB #32
0035 160000 JSR tx_char0
525: tx_char0(echo); //send bs again to move back the cursor
0038 e683 LDAB 3,SP
003a 160000 JSR tx_char0
526: }
527: }
528: 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
529: {
530: count++;
004d 6282 INC 2,SP
531: tx_char0(echo); //send echo to screen
004f 160000 JSR tx_char0
532: *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
533: }
534: }
535:
536: 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
537: *c_ptr++=echo;
0069 ee87 LDX 7,SP
006b 6b30 STAB 1,X+
538: *c_ptr='\r';
539: *n=count;
540: return(OK);
006d 200f BRA *+17 ;abs = 007e
541: }
542:
543: 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
544: {
545: tx_char0('\n'); //send echo to screen
0077 c60a LDAB #10
0079 160000 JSR tx_char0
546: *c_ptr='\r';
007c ee87 LDX 7,SP
007e c60d LDAB #13
0080 6b00 STAB 0,X
547: *n=count;
0082 ee80 LDX 0,SP
0084 a682 LDAA 2,SP
0086 6a00 STAA 0,X
548: return(OK);
0088 c601 LDAB #1
008a 21 SKIP1
549: }
550: else
551: return(NOTOK);
008b c7 CLRB
552: }
008c 1b85 LEAS 5,SP
008e 3d RTS
553:
554: /*******************************************************************
555: * Input byte (dec) subroutine
556: * Description : Get the data(byte) from user
557: * :
558: * :
559: * Example : N/A
560: * Input : N/A
561: * Output : *c_ptr
562: * Modify : N/A
563: * Return : status [OK for ('0'-'z') or NOTOK for others chars]
564: *********************************************************************/
565: byte input_dec(byte *c_ptr)
566: {
Function: input_dec
Source : D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\sources\ex3_utility.c
Options : -DNON_BANK -Env"GENPATH=D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31;D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\bin;D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\cmd;D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\prm;D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM 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\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\bin" -Env"TEXTPATH=D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\bin" -Lasm=%n.lst -ObjN="D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\S12_Ex5_EEPROM_ICD_CW31_Data\FCS\ObjectCode\ex3_utility.c.o" -Ol0
0000 1b92 LEAS -14,SP
0002 3b PSHD
567: byte echo,cdata,loop=ENABLE;
0003 c601 LDAB #1
0005 6b8d STAB 13,SP
568: int count=0,i_data,i_data1,i_data2,i,j;
0007 c7 CLRB
0008 87 CLRA
0009 6c84 STD 4,SP
569:
570: i_data=0;
000b 6c82 STD 2,SP
571: *c_ptr=0;
000d ee80 LDX 0,SP
000f 6b00 STAB 0,X
572: while(loop == ENABLE)
573: {
574: echo=rx_char0();
0011 160000 JSR rx_char0
0014 6b88 STAB 8,SP
575: 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
576: loop = DISABLE; //break the while loop
0022 698d CLR 13,SP
577: 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
578: {
579: if(count>0) //del 4 bit data in buffer
002c ee84 LDX 4,SP
002e 2f1b BLE *+29 ;abs = 004b
580: {
581: count--;
0030 09 DEX
0031 6e84 STX 4,SP
582: i_data=i_data>>4;
0033 ed82 LDY 2,SP
0035 c604 LDAB #4
0037 160000 JSR _ISHRS
003a 6c82 STD 2,SP
583: tx_char0(echo); //send bs the char on screen
003c e688 LDAB 8,SP
003e 160000 JSR tx_char0
584: tx_char0(' '); //send space to clear the char
0041 c620 LDAB #32
0043 160000 JSR tx_char0
585: tx_char0(echo); //send bs again to move back the cursor
0046 e688 LDAB 8,SP
0048 160000 JSR tx_char0
586: }
587: }
588: if (count<3) //update 4 bit data to buffer
004b ee84 LDX 4,SP
004d 8e0003 CPX #3
0050 2c1f BGE *+33 ;abs = 0071
589: {
590: if((echo<='9') && (echo>='0'))
0052 e688 LDAB 8,SP
0054 c030 SUBB #48
0056 c109 CMPB #9
0058 2217 BHI *+25 ;abs = 0071
591: {
592: // if ((echo>='0') && (echo<='9'))
593: cdata=echo-0x30;
594: count++;
005a 08 INX
005b 6e84 STX 4,SP
595: tx_char0(echo); //send echo to screen
005d 37 PSHB
005e e689 LDAB 9,SP
0060 160000 JSR tx_char0
596: 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
597: 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
598: }
599: }
600: }
601:
602: 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
603: *c_ptr=echo;
0080 ee80 LDX 0,SP
0082 6b00 STAB 0,X
604: return(OK);
0084 204d BRA *+79 ;abs = 00d3
605: }
606:
607: if(count!=0 && echo==CR)
0086 ee84 LDX 4,SP
0088 274c BEQ *+78 ;abs = 00d6
008a c10d CMPB #13
008c 2648 BN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -