⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmdproc.src

📁 C51单片机的C语言例程,可实现定时器中断及其时钟功能的源代码
💻 SRC
字号:
; .\cmdproc.SRC generated from: cmdproc.c
; COMPILER INVOKED BY:
;        D:\KeilC51\C51\BIN\C51.EXE cmdproc.c ROM(COMPACT) BROWSE DEFINE(evalboard) DEBUG OBJECTEXTEND LISTINCLUDE SYMBOLS SRC(.\cmdproc.SRC)


NAME	CMDPROC

?PR?_cmdid_search?CMDPROC                SEGMENT CODE INBLOCK 
?DT?_cmdid_search?CMDPROC                SEGMENT DATA OVERLAYABLE 
?PR?_strupr?CMDPROC  SEGMENT CODE INBLOCK 
?DT?_strupr?CMDPROC  SEGMENT DATA OVERLAYABLE 
?PR?_cmd_proc?CMDPROC                    SEGMENT CODE INBLOCK 
?DT?_cmd_proc?CMDPROC                    SEGMENT DATA OVERLAYABLE 
?CO?CMDPROC          SEGMENT CODE 
?C_INITSEG           SEGMENT CODE 
?PD?CMDPROC          SEGMENT XDATA INPAGE 
?XD?_cmd_proc?CMDPROC                    SEGMENT XDATA OVERLAYABLE 
	EXTRN	CODE (_strtotm)
	EXTRN	DATA (?_strtotm?BYTE)
	EXTRN	CODE (_clock_set)
	EXTRN	CODE (_alarm_set)
	EXTRN	CODE (alarm_clr)
	EXTRN	CODE (_com_puts)
	EXTRN	CODE (clock_out_time)
	EXTRN	CODE (alarm_out_time)
	EXTRN	CODE (_toupper)
	EXTRN	CODE (_strcat)
	EXTRN	DATA (?_strcat?BYTE)
	EXTRN	CODE (_clock_scan)
	EXTRN	CODE (_strncpy)
	EXTRN	DATA (?_strncpy?BYTE)
	EXTRN	CODE (_strchr)
	EXTRN	CODE (?C?PLDPTR)
	EXTRN	CODE (?C?STRCMP)
	EXTRN	CODE (?C?CLDOPTR)
	EXTRN	CODE (?C?CLDPTR)
	EXTRN	CODE (?C?CSTPTR)
	EXTRN	CODE (?C?STRCPY)
	EXTRN	CODE (?C?LMUL)
	EXTRN	CODE (?C?ULDIV)
	PUBLIC	_cmd_proc
	PUBLIC	_strupr

	RSEG  ?DT?_strupr?CMDPROC
?_strupr?BYTE:
        src?142:   DS   3
	ORG  3
          s?143:   DS   3

	RSEG  ?DT?_cmd_proc?CMDPROC
?_cmd_proc?BYTE:
        cmd?244:   DS   3
	ORG  6
         tm?245:   DS   4
	ORG  3
     argsep?248:   DS   3

	RSEG  ?DT?_cmdid_search?CMDPROC
?_cmdid_search?BYTE:
     cmdstr?040:   DS   3
	ORG  3
        ctp?041:   DS   3

	RSEG  ?PD?CMDPROC
        cmd_tbl:   DS   24
       helptext:   DS   224

	RSEG  ?XD?_cmd_proc?CMDPROC
 cmdstr_buf?246:   DS   41

	RSEG  ?XD?_cmd_proc?CMDPROC
 argstr_buf?247:   DS   41

	RSEG  ?CO?CMDPROC
?SC_0:
	DB  'S' ,'T' ,'C' ,'L' ,'K' ,000H

?SC_6:
	DB  'R' ,'D' ,'C' ,'L' ,'K' ,000H

?SC_12:
	DB  'S' ,'C' ,'C' ,'L' ,'K' ,000H

?SC_18:
	DB  'S' ,'T' ,'A' ,'L' ,'M' ,000H

?SC_24:
	DB  'R' ,'D' ,'A' ,'L' ,'M' ,000H

?SC_30:
	DB  'C' ,'L' ,'A' ,'L' ,'M' ,000H

?SC_36:
	DB  'O' ,'N' ,000H

?SC_39:
	DB  'O' ,'F' ,'F' ,000H

?SC_43:
	DB  '0' ,'0' ,000H


	RSEG  ?C_INITSEG
	DB	0A0H
	DB	0E0H
	DB	LOW (helptext)
	DB  00DH,00AH,'H' ,'E' ,'L' ,'P' ,':' ,00DH,00AH,'S' 
	DB  'T' ,'C' ,'L' ,'K' ,' ' ,'h' ,'h' ,'m' ,'m' ,'s' 
	DB  's' ,' ' ,'-' ,'-' ,' ' ,'S' ,'e' ,'t' ,' ' ,'C' 
	DB  'l' ,'o' ,'c' ,'k' ,' ' ,'T' ,'i' ,'m' ,'e' ,00DH
	DB  00AH,'R' ,'D' ,'C' ,'L' ,'K' ,' ' ,' ' ,' ' ,' ' 
	DB  ' ' ,' ' ,' ' ,' ' ,'-' ,'-' ,' ' ,'D' ,'i' ,'s' 
	DB  'p' ,'l' ,'a' ,'y' ,' ' ,'C' ,'l' ,'o' ,'c' ,'k' 
	DB  ' ' ,'T' ,'i' ,'m' ,'e' ,00DH,00AH,'S' ,'C' ,'C' 
	DB  'L' ,'K' ,' ' ,'O' ,'N' ,'|' ,'O' ,'F' ,'F' ,' ' 
	DB  '-' ,'-' ,' ' ,'D' ,'i' ,'s' ,'p' ,'l' ,'a' ,'y' 
	DB  ' ' ,'C' ,'l' ,'o' ,'c' ,'k' ,' ' ,'T' ,'i' ,'m' 
	DB  'e' ,' ' ,'E' ,'v' ,'e' ,'r' ,'y' ,' ' ,'S' ,'e' 
	DB  'c' ,'o' ,'n' ,'d' ,00DH,00AH,'S' ,'T' ,'A' ,'L' 
	DB  'M' ,' ' ,'h' ,'h' ,'m' ,'m' ,' ' ,' ' ,' ' ,'-' 
	DB  '-' ,' ' ,'S' ,'e' ,'t' ,' ' ,'A' ,'l' ,'a' ,'r' 
	DB  'm' ,00DH,00AH,'R' ,'D' ,'A' ,'L' ,'M' ,' ' ,' ' 
	DB  ' ' ,' ' ,' ' ,' ' ,' ' ,' ' ,'-' ,'-' ,' ' ,'D' 
	DB  'i' ,'s' ,'p' ,'l' ,'a' ,'y' ,' ' ,'A' ,'l' ,'a' 
	DB  'r' ,'m' ,' ' ,'T' ,'i' ,'m' ,'e' ,00DH,00AH,'C' 
	DB  'L' ,'A' ,'L' ,'M' ,' ' ,' ' ,' ' ,' ' ,' ' ,' ' 
	DB  ' ' ,' ' ,'-' ,'-' ,' ' ,'C' ,'l' ,'e' ,'a' ,'r' 
	DB  ' ' ,'A' ,'l' ,'a' ,'r' ,'m' ,' ' ,'T' ,'i' ,'m' 
	DB  'e' ,00DH,00AH,000H


	DB	098H
	DB	LOW (cmd_tbl)
	DB	0FFH	 ; ptr3
	DW	?SC_0	 ; ptr2
	DB	000H
	DB	0FFH	 ; ptr3
	DW	?SC_6	 ; ptr2
	DB	001H
	DB	0FFH	 ; ptr3
	DW	?SC_12	 ; ptr2
	DB	002H
	DB	0FFH	 ; ptr3
	DW	?SC_18	 ; ptr2
	DB	003H
	DB	0FFH	 ; ptr3
	DW	?SC_24	 ; ptr2
	DB	004H
	DB	0FFH	 ; ptr3
	DW	?SC_30	 ; ptr2
	DB	005H

; #include <ctype.h>
; #include <string.h>	
; #include "tdp.h"	
; 
; /* 定义帮助提示 */
; static pdata char helptext [] =	
;   "\r\n"	
;   "HELP:\r\n"	
;   "STCLK hhmmss -- Set Clock Time\r\n"	
;   "RDCLK        -- Display Clock Time\r\n"	
;   "SCCLK ON|OFF -- Display Clock Time Every Second\r\n"	
;   "STALM hhmm   -- Set Alarm\r\n"	
;   "RDALM        -- Display Alarm Time\r\n"	
;   "CLALM        -- Clear Alarm Time\r\n";	
; enum {
;   CID_SET_CLK,	
;   CID_READ_CLK,	
;   CID_SCAN_CLK,		
;   CID_SET_ALM,	
;   CID_READ_ALM,	
;   CID_CLR_ALM,		
;   CID_LAST	
; };	
; 	
; struct cmd_st {	
;   const char *cmdstr;	
;   unsigned char id;	
; };	
; 	
; static pdata struct cmd_st cmd_tbl [] =	{	
;     { "STCLK",		CID_SET_CLK },	
;     { "RDCLK",		CID_READ_CLK },	
;     { "SCCLK",		CID_SCAN_CLK },	
;     { "STALM",		CID_SET_ALM },	
;     { "RDALM",		CID_READ_ALM },	
;     { "CLALM",		CID_CLR_ALM },	
; };	
; 	
; #define CMD_TBL_LEN (sizeof (cmd_tbl) / sizeof (cmd_tbl [0]))	
; 		
; static unsigned char cmdid_search (char *cmdstr) {	

	RSEG  ?PR?_cmdid_search?CMDPROC
_cmdid_search:
	USING	0
			; SOURCE LINE # 41
	MOV  	cmdstr?040,R3
	MOV  	cmdstr?040+01H,R2
	MOV  	cmdstr?040+02H,R1
; 	struct cmd_st *ctp;	
; 	for (ctp = cmd_tbl; ctp < &cmd_tbl [CMD_TBL_LEN]; ctp++) {	
			; SOURCE LINE # 43
	MOV  	ctp?041,#0FEH
	MOV  	ctp?041+01H,#HIGH (cmd_tbl)
	MOV  	ctp?041+02H,#LOW (cmd_tbl)
?C0001:
	CLR  	C
	MOV  	DPTR,#cmd_tbl+018H
	MOV  	A,ctp?041+02H
	SUBB 	A,DPL
	MOV  	A,ctp?041+01H
	SUBB 	A,DPH
?C0028:
	JNC  	?C0002
; 	  if (strcmp (ctp->cmdstr, cmdstr) == 0)	
			; SOURCE LINE # 44
	MOV  	R3,ctp?041
	MOV  	R2,ctp?041+01H
	MOV  	R1,ctp?041+02H
	LCALL	?C?PLDPTR
	MOV  	R0,AR1
	MOV  	R4,AR2
	MOV  	R5,AR3
	MOV  	R3,cmdstr?040
	MOV  	R2,cmdstr?040+01H
	MOV  	R1,cmdstr?040+02H
	LCALL	?C?STRCMP
	MOV  	A,R7
	JNZ  	?C0003
; 	    return (ctp->id);	
			; SOURCE LINE # 45
	MOV  	R3,ctp?041
	MOV  	R2,ctp?041+01H
	MOV  	R1,ctp?041+02H
	MOV  	DPTR,#03H
	LCALL	?C?CLDOPTR
	MOV  	R7,A
	RET  	
; 	  }		
			; SOURCE LINE # 46
?C0003:
	MOV  	A,#04H
	ADD  	A,ctp?041+02H
	MOV  	ctp?041+02H,A
	CLR  	A
	ADDC 	A,ctp?041+01H
	MOV  	ctp?041+01H,A
	SJMP 	?C0001
?C0002:
; 	return (CID_LAST);	
			; SOURCE LINE # 47
	MOV  	R7,#06H
; }	
			; SOURCE LINE # 48
?C0005:
	RET  	
; END OF _cmdid_search

; 	
; char *strupr ( char *src )	{	

	RSEG  ?PR?_strupr?CMDPROC
_strupr:
	USING	0
			; SOURCE LINE # 50
	MOV  	src?142,R3
	MOV  	src?142+01H,R2
	MOV  	src?142+02H,R1
; char *s;	
; 	for (s = src; *s != '\0'; s++)	
			; SOURCE LINE # 52
	MOV  	s?143,R3
	MOV  	s?143+01H,R2
	MOV  	s?143+02H,R1
?C0006:
	MOV  	R3,s?143
	MOV  	R2,s?143+01H
	MOV  	R1,s?143+02H
	LCALL	?C?CLDPTR
	MOV  	R7,A
	JZ   	?C0007
;   *s = toupper (*s);	
			; SOURCE LINE # 53
	LCALL	_toupper
	MOV  	R3,s?143
	MOV  	R2,s?143+01H
	MOV  	R1,s?143+02H
	MOV  	A,R7
	LCALL	?C?CSTPTR
	MOV  	A,#01H
	ADD  	A,s?143+02H
	MOV  	s?143+02H,A
	CLR  	A
	ADDC 	A,s?143+01H
	MOV  	s?143+01H,A
	SJMP 	?C0006
?C0007:
; 	return (src);	
			; SOURCE LINE # 54
	MOV  	R3,src?142
	MOV  	R2,src?142+01H
	MOV  	R1,src?142+02H
; }	
			; SOURCE LINE # 55
?C0009:
	RET  	
; END OF _strupr

; 	
; /* 命令处理 */
; void cmd_proc (const char *cmd) {	

	RSEG  ?PR?_cmd_proc?CMDPROC
_cmd_proc:
	USING	0
			; SOURCE LINE # 58
	MOV  	cmd?244,R3
	MOV  	cmd?244+01H,R2
	MOV  	cmd?244+02H,R1
; 	xdata char cmdstr_buf [1 + MAX_CMD_LEN];    
; 	xdata char argstr_buf [1 + MAX_CMD_LEN];	
; 	char *argsep;	
; 	unsigned char id;	
; 	
; 	strncpy (cmdstr_buf, cmd, sizeof (cmdstr_buf) - 1);	
			; SOURCE LINE # 64
	MOV  	?_strncpy?BYTE+03H,R3
	MOV  	?_strncpy?BYTE+04H,R2
	MOV  	?_strncpy?BYTE+05H,R1
	MOV  	?_strncpy?BYTE+06H,#00H
	MOV  	?_strncpy?BYTE+07H,#028H
	MOV  	R3,#01H
	MOV  	R2,#HIGH (cmdstr_buf?246)
	MOV  	R1,#LOW (cmdstr_buf?246)
	LCALL	_strncpy
; 	cmdstr_buf [sizeof (cmdstr_buf) - 1] = '\0';	
			; SOURCE LINE # 65
	CLR  	A
	MOV  	DPTR,#cmdstr_buf?246+028H
	MOVX 	@DPTR,A
; 	strupr (cmdstr_buf);			
			; SOURCE LINE # 66
	MOV  	R3,#01H
	MOV  	R2,#HIGH (cmdstr_buf?246)
	MOV  	R1,#LOW (cmdstr_buf?246)
	LCALL	_strupr
; 	argsep = strchr (cmdstr_buf, ' ');		
			; SOURCE LINE # 67
	MOV  	R3,#01H
	MOV  	R2,#HIGH (cmdstr_buf?246)
	MOV  	R1,#LOW (cmdstr_buf?246)
	MOV  	R5,#020H
	LCALL	_strchr
	MOV  	argsep?248,R3
	MOV  	argsep?248+01H,R2
	MOV  	argsep?248+02H,R1
; 	if (argsep == NULL)  {	
			; SOURCE LINE # 68
	MOV  	A,R1
	ORL  	A,R2
	ORL  	A,R3
	JNZ  	?C0010
; 	  argstr_buf [0] = '\0';	
			; SOURCE LINE # 69
	MOV  	DPTR,#argstr_buf?247
	MOVX 	@DPTR,A
;     }	
			; SOURCE LINE # 70
	SJMP 	?C0011
?C0010:
; 	else {	
			; SOURCE LINE # 71
; 	  strcpy (argstr_buf, argsep + 1);	
			; SOURCE LINE # 72
	MOV  	R3,argsep?248
	MOV  	A,argsep?248+02H
	ADD  	A,#01H
	MOV  	R1,A
	CLR  	A
	ADDC 	A,argsep?248+01H
	MOV  	R2,A
	MOV  	R0,#LOW (argstr_buf?247)
	MOV  	R4,#HIGH (argstr_buf?247)
	MOV  	R5,#01H
	LCALL	?C?STRCPY
; 	  *argsep = '\0';	
			; SOURCE LINE # 73
	MOV  	R3,argsep?248
	MOV  	R2,argsep?248+01H
	MOV  	R1,argsep?248+02H
	CLR  	A
	LCALL	?C?CSTPTR
;     }		     
			; SOURCE LINE # 74
?C0011:
; 	id = cmdid_search (cmdstr_buf);	
			; SOURCE LINE # 75
	MOV  	R3,#01H
	MOV  	R2,#HIGH (cmdstr_buf?246)
	MOV  	R1,#LOW (cmdstr_buf?246)
	LCALL	_cmdid_search
;---- Variable 'id?249' assigned to Register 'R7' ----
; switch (id) {	
			; SOURCE LINE # 76
	MOV  	A,R7
	CJNE 	A,#07H,?C0030
?C0030:
	JC   	$ + 4H
	AJMP 	?C0027
	MOV  	DPTR,#?C0031
	ADD  	A,ACC
	JMP  	@A+DPTR
?C0031:
	AJMP 	?C0013
	AJMP 	?C0016
	AJMP 	?C0017
	AJMP 	?C0022
	AJMP 	?C0024
	AJMP 	?C0025
	AJMP 	?_cmd_proc?CMDERR
; 	  unsigned long tm;			
; 	  case CID_SET_CLK:	
			; SOURCE LINE # 78
?C0013:
; 	    if (strtotm (&tm, argstr_buf) != 0)	
			; SOURCE LINE # 79
	MOV  	?_strtotm?BYTE+03H,#01H
	MOV  	?_strtotm?BYTE+04H,#HIGH (argstr_buf?247)
	MOV  	?_strtotm?BYTE+05H,#LOW (argstr_buf?247)
	MOV  	R3,#00H
	MOV  	R2,#HIGH (tm?245)
	MOV  	R1,#LOW (tm?245)
	LCALL	_strtotm
	MOV  	A,R7
	JZ   	$ + 4H
	AJMP 	?_cmd_proc?CMDERR
; 	      goto CMDERR;	
			; SOURCE LINE # 80
?C0014:
; 	    clock_set (tm * 100);	
			; SOURCE LINE # 81
	CLR  	A
	MOV  	R7,#064H
	MOV  	R6,A
	MOV  	R5,A
	MOV  	R4,A
	MOV  	R3,tm?245+03H
	MOV  	R2,tm?245+02H
	MOV  	R1,tm?245+01H
	MOV  	R0,tm?245
	LCALL	?C?LMUL
	LJMP 	_clock_set
; 	    break;			
			; SOURCE LINE # 82
; 	  case CID_READ_CLK:	
			; SOURCE LINE # 83
?C0016:
; 	    clock_out_time ();	
			; SOURCE LINE # 84
	LJMP 	clock_out_time
; 	    break;		    	
			; SOURCE LINE # 85
; 	  case CID_SCAN_CLK:	
			; SOURCE LINE # 86
?C0017:
; 	    if (strcmp (argstr_buf, "ON") == 0)	
			; SOURCE LINE # 87
	MOV  	R0,#LOW (argstr_buf?247)
	MOV  	R4,#HIGH (argstr_buf?247)
	MOV  	R5,#01H
	MOV  	R3,#0FFH
	MOV  	R2,#HIGH (?SC_36)
	MOV  	R1,#LOW (?SC_36)
	LCALL	?C?STRCMP
	MOV  	A,R7
	JNZ  	?C0018
; 	      clock_scan (1);	
			; SOURCE LINE # 88
	MOV  	R7,#01H
	SJMP 	?C0032
?C0018:
; 	    else if (strcmp (argstr_buf, "OFF") == 0)	
			; SOURCE LINE # 89
	MOV  	R0,#LOW (argstr_buf?247)
	MOV  	R4,#HIGH (argstr_buf?247)
	MOV  	R5,#01H
	MOV  	R3,#0FFH
	MOV  	R2,#HIGH (?SC_39)
	MOV  	R1,#LOW (?SC_39)
	LCALL	?C?STRCMP
	MOV  	A,R7
	JNZ  	?_cmd_proc?CMDERR
; 	      clock_scan (0);	
			; SOURCE LINE # 90
	MOV  	R7,A
?C0032:
	LJMP 	_clock_scan
; 	    else	
; 	      goto CMDERR;	
			; SOURCE LINE # 92
; 	    break;			
			; SOURCE LINE # 93
; 	  case CID_SET_ALM:	
			; SOURCE LINE # 94
?C0022:
; 	    strcat (argstr_buf, "00");	
			; SOURCE LINE # 95
	MOV  	?_strcat?BYTE+03H,#0FFH
	MOV  	?_strcat?BYTE+04H,#HIGH (?SC_43)
	MOV  	?_strcat?BYTE+05H,#LOW (?SC_43)
	MOV  	R3,#01H
	MOV  	R2,#HIGH (argstr_buf?247)
	MOV  	R1,#LOW (argstr_buf?247)
	LCALL	_strcat
; 	    if (strtotm (&tm, argstr_buf) != 0)	
			; SOURCE LINE # 96
	MOV  	?_strtotm?BYTE+03H,#01H
	MOV  	?_strtotm?BYTE+04H,#HIGH (argstr_buf?247)
	MOV  	?_strtotm?BYTE+05H,#LOW (argstr_buf?247)
	MOV  	R3,#00H
	MOV  	R2,#HIGH (tm?245)
	MOV  	R1,#LOW (tm?245)
	LCALL	_strtotm
	MOV  	A,R7
	JNZ  	?_cmd_proc?CMDERR
; 	      goto CMDERR;	
			; SOURCE LINE # 97
?C0023:
; 	    alarm_set (tm / 60);	
			; SOURCE LINE # 98
	CLR  	A
	MOV  	R3,#03CH
	MOV  	R2,A
	MOV  	R1,A
	MOV  	R0,A
	MOV  	R7,tm?245+03H
	MOV  	R6,tm?245+02H
	MOV  	R5,tm?245+01H
	MOV  	R4,tm?245
	LCALL	?C?ULDIV
	LJMP 	_alarm_set
; 	    break;			
			; SOURCE LINE # 99
; 	  case CID_READ_ALM:	
			; SOURCE LINE # 100
?C0024:
; 	    alarm_out_time ();	
			; SOURCE LINE # 101
	LJMP 	alarm_out_time
; 	    break;			
			; SOURCE LINE # 102
; 	  case CID_CLR_ALM:	
			; SOURCE LINE # 103
?C0025:
; 	    alarm_clr ();	
			; SOURCE LINE # 104
	LJMP 	alarm_clr
; 	    break;			
			; SOURCE LINE # 105
; 	  case CID_LAST:	
			; SOURCE LINE # 106
; 	CMDERR:	
			; SOURCE LINE # 107
?_cmd_proc?CMDERR:
; 	    com_puts (helptext);	
			; SOURCE LINE # 108
	MOV  	R3,#0FEH
	MOV  	R2,#HIGH (helptext)
	MOV  	R1,#LOW (helptext)
	LCALL	_com_puts
; 	    break;	
			; SOURCE LINE # 109
; 	}	
			; SOURCE LINE # 110
; }	
			; SOURCE LINE # 111
?C0027:
	RET  	
; END OF _cmd_proc

	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -