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

📄 genmcs51.c

📁 circuit calculation program
💻 C
字号:
/*
 * generates decode code for mcs51
 */


#include <mcs51.h>

#define NELEMS(a) (sizeof (a)/sizeof (a[0]))

main ()
{
	int i,j;
	
	printf ("/*\n"
	        "* Instruction fetch:\n"
	        "*\n"
	        "* @ STATE2 and STATE5, gen ALE and drive p0/p2 by PCL/PCH\n"
	        "* @ STATE1_1 and STATE4_1, smaples p0\n"
	        "*/\n"
	        "\tswitch (state->state) {\n"
	        "\tcase STATE4_1:\n"     	        
			"\t     if (state->ext_mem_op) break;\n"
	        "\tcase STATE1_1:\n"		
			"\t     state->insn = mcu8051_sample_p0	(state);\n"
			"\t     break;\n"
	        "\tcase STATE2_1:\n"
			"\t     if (state->ext_mem_op) break;\n"
	        "\tcase STATE5_1:\n"     
	        "\t    state->ALE = 1;\n" 
	        "\t    state->p0_control = 1;\n"
	        "\t    state->p2_control = 1;\n\n"	        
	        "\t    state->p0 = fetch_pcl;\n" 
	        "\t    state->p2 = fetch_pch;\n" 
	        "\t    break;\n"
	        "\tcase STATE3_1:\n"
			"\t     if (state->ext_mem_op) break;\n"
	        "\tcase STATE6_1:\n"     
	        "\t    state->ALE = 0;\n" 
	        "\t    state->p0_control = 0;\n"
	        "\t    state->p2_control = 0;\n\n"	        	        
	        "\t}\n" );
	for (i = 0; i < NELEMS (mcs51_optab); i ++) {
		char *name;
		int wait;     /* how many clk required */
		int alu;      /* need n times alu ops  */
		int reg_addr; /* need n times reg_addr */
		
		if (mcs51_optab[ i ].name) name = mcs51_optab[ i ].name;
		
		alu = 0;
		wait = 0;		
		reg_addr = 0;

		for (j = 0; j < mcs51_optab[ i ].op_num; j++ ) {
			if (OPERAND_TYPE (mcs51_optab[ i ].op[ j ]) == mcs51_Rn 
			    || OPERAND_TYPE (mcs51_optab[ i ].op[ j ]) == mcs51_direct )
				reg_addr ++;	
 
		}
		
		/* mov reg,reg/imm */
		if (!strcmp (name, "mov")) {
			 

		}
	}
}

⌨️ 快捷键说明

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