📄 ex3_utility.lst
字号:
003c 160000 JSR tx_char0
407: tx_char0(' '); //send space to clear the char
003f c620 LDAB #32
0041 160000 JSR tx_char0
408: tx_char0(echo); //send bs again to move back the cursor
0044 e682 LDAB 2,SP
0046 160000 JSR tx_char0
409: }
410: }
411: if (count<4) //update 4 bit data to buffer
0049 ec83 LDD 3,SP
004b 8c0004 CPD #4
004e 2c3f BGE *+65 ;abs = 008f
412: {
413: if((echo<='f') && (echo>='0'))
0050 e682 LDAB 2,SP
0052 c030 SUBB #48
0054 c136 CMPB #54
0056 2237 BHI *+57 ;abs = 008f
414: {
415: if (echo>='a') echo-=(0x20); //covert upper case
0058 e682 LDAB 2,SP
005a c161 CMPB #97
005c 2504 BCS *+6 ;abs = 0062
005e c020 SUBB #32
0060 6b82 STAB 2,SP
416: if ((echo>='0') && (echo<='9'))
0062 e682 LDAB 2,SP
0064 c030 SUBB #48
0066 c109 CMPB #9
0068 2202 BHI *+4 ;abs = 006c
417: cdata=echo-0x30;
006a 2004 BRA *+6 ;abs = 0070
418: else
419: cdata=echo-0x37;
006c e682 LDAB 2,SP
006e c037 SUBB #55
0070 6b85 STAB 5,SP
420: count++;
0072 ee83 LDX 3,SP
0074 08 INX
0075 6e83 STX 3,SP
421: tx_char0(echo); //send echo to screen
0077 e682 LDAB 2,SP
0079 160000 JSR tx_char0
422: *i_ptr=(*i_ptr<<4);
007c ee80 LDX 0,SP
007e ec00 LDD 0,X
0080 59 ASLD
0081 59 ASLD
0082 59 ASLD
0083 59 ASLD
0084 6c00 STD 0,X
423: *i_ptr+=cdata;
0086 b746 TFR D,Y
0088 e685 LDAB 5,SP
008a 87 CLRA
008b 19ee LEAY D,Y
008d 6d00 STY 0,X
008f e686 LDAB 6,SP
0091 04117a DBEQ B,*-131 ;abs = 000e
424: }
425: }
426: }
427:
428: if(count!=0 && echo==CR)
0094 ec83 LDD 3,SP
0096 2709 BEQ *+11 ;abs = 00a1
0098 e682 LDAB 2,SP
009a c10d CMPB #13
009c 2603 BNE *+5 ;abs = 00a1
429: return(OK);
009e c601 LDAB #1
00a0 21 SKIP1
430: else
431: return(NOTOK);
00a1 c7 CLRB
432: }
00a2 1b87 LEAS 7,SP
00a4 3d RTS
433:
434: /*******************************************************************
435: * Input byte (hex) subroutine
436: * Description : Get the data(byte) from user
437: * :
438: * :
439: * Example : N/A
440: * Input : N/A
441: * Output : *c_ptr
442: * Modify : N/A
443: * Return : status [OK for ('0'-'z') or NOTOK for others chars]
444: *********************************************************************/
445: byte input_byte(byte *c_ptr)
446: {
Function: input_byte
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 6ca9 STD 7,-SP
447: byte echo,cdata,loop=ENABLE;
0002 c601 LDAB #1
0004 6b86 STAB 6,SP
448: int count=0;
0006 c7 CLRB
0007 87 CLRA
0008 6c83 STD 3,SP
449:
450: *c_ptr=0;
000a ee80 LDX 0,SP
000c 6b00 STAB 0,X
451:
452: while(loop == ENABLE)
453: {
454: echo=rx_char0();
000e 160000 JSR rx_char0
0011 6b82 STAB 2,SP
455: if((echo==ESC)||(echo==DOT)||(echo==CR))
0013 c11b CMPB #27
0015 2708 BEQ *+10 ;abs = 001f
0017 c12e CMPB #46
0019 2704 BEQ *+6 ;abs = 001f
001b c10d CMPB #13
001d 2602 BNE *+4 ;abs = 0021
456: loop = DISABLE; //break the while loop
001f 6986 CLR 6,SP
457: if (echo==BS || echo==DEL)
0021 c108 CMPB #8
0023 2704 BEQ *+6 ;abs = 0029
0025 c17f CMPB #127
0027 2620 BNE *+34 ;abs = 0049
458: {
459: if(count>0) //del 4 bit data in buffer
0029 ee83 LDX 3,SP
002b 2f1c BLE *+30 ;abs = 0049
460: {
461: count--;
002d 09 DEX
002e 6e83 STX 3,SP
462: *c_ptr=*c_ptr>>4;
0030 ee80 LDX 0,SP
0032 e600 LDAB 0,X
0034 54 LSRB
0035 54 LSRB
0036 54 LSRB
0037 54 LSRB
0038 6b00 STAB 0,X
463: tx_char0(echo); //send bs the char on screen
003a e682 LDAB 2,SP
003c 160000 JSR tx_char0
464: tx_char0(' '); //send space to clear the char
003f c620 LDAB #32
0041 160000 JSR tx_char0
465: tx_char0(echo); //send bs again to move back the cursor
0044 e682 LDAB 2,SP
0046 160000 JSR tx_char0
466: }
467: }
468: if (count<2) //update 4 bit data to buffer
0049 ec83 LDD 3,SP
004b 8c0002 CPD #2
004e 2c39 BGE *+59 ;abs = 0089
469: {
470: if((echo<='f') && (echo>='0'))
0050 e682 LDAB 2,SP
0052 c030 SUBB #48
0054 c136 CMPB #54
0056 2231 BHI *+51 ;abs = 0089
471: {
472: if (echo>='a') echo-=(0x20); //covert upper case
0058 e682 LDAB 2,SP
005a c161 CMPB #97
005c 2504 BCS *+6 ;abs = 0062
005e c020 SUBB #32
0060 6b82 STAB 2,SP
473: if ((echo>='0') && (echo<='9'))
0062 e682 LDAB 2,SP
0064 c030 SUBB #48
0066 c109 CMPB #9
0068 2202 BHI *+4 ;abs = 006c
474: cdata=echo-0x30;
006a 2004 BRA *+6 ;abs = 0070
475: else
476: cdata=echo-0x37;
006c e682 LDAB 2,SP
006e c037 SUBB #55
0070 6b85 STAB 5,SP
477: count++;
0072 ee83 LDX 3,SP
0074 08 INX
0075 6e83 STX 3,SP
478: tx_char0(echo); //send echo to screen
0077 e682 LDAB 2,SP
0079 160000 JSR tx_char0
479: *c_ptr=(*c_ptr<<4);
007c ee80 LDX 0,SP
007e e600 LDAB 0,X
0080 8610 LDAA #16
0082 12 MUL
0083 6b00 STAB 0,X
480: *c_ptr+=cdata;
0085 eb85 ADDB 5,SP
0087 6b00 STAB 0,X
0089 e686 LDAB 6,SP
008b 041180 DBEQ B,*-125 ;abs = 000e
481: }
482: }
483: }
484:
485: if (echo==DOT||echo ==ESC){
008e e682 LDAB 2,SP
0090 c12e CMPB #46
0092 2704 BEQ *+6 ;abs = 0098
0094 c11b CMPB #27
0096 2606 BNE *+8 ;abs = 009e
486: *c_ptr=echo;
0098 ee80 LDX 0,SP
009a 6b00 STAB 0,X
487: return(OK);
009c 2008 BRA *+10 ;abs = 00a6
488: }
489:
490: if(count!=0 && echo==CR)
009e ee83 LDX 3,SP
00a0 2707 BEQ *+9 ;abs = 00a9
00a2 c10d CMPB #13
00a4 2603 BNE *+5 ;abs = 00a9
491: return(OK);
00a6 c601 LDAB #1
00a8 21 SKIP1
492: else
493: return(NOTOK);
00a9 c7 CLRB
494: }
00aa 1b87 LEAS 7,SP
00ac 3d RTS
495:
496: /*******************************************************************
497: * Input String (ASCII) subroutine
498: * Description : Get the data(byte) from user
499: * :
500: * :
501: * Example : N/A
502: * Input : N/A
503: * Output : *c_ptr
504: * Modify : N/A
505: * Return : status [OK for ('0'-'z') or NOTOK for others chars]
506: *********************************************************************/
507: byte input_string(byte *c_ptr, byte *n)
508: {
Function: input_string
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -