// ▉▉▉▉▉▉▉ ▉▉▉ ▉ ▉ ▉▉▉ ▉ ▉▉▉▉▉▉▉
// ▉ ▉ ▉ ▉▉ ▉▉ ▉ ▉ ▉ ▉▉ ▉ ▉ ▉ ▉
// ▉ ▉▉▉ ▉ ▉ ▉ ▉ ▉ ▉▉ ▉▉▉▉▉ ▉▉ ▉ ▉▉▉ ▉
// ▉ ▉▉▉ ▉ ▉▉ ▉ ▉ ▉ ▉ ▉▉ ▉ ▉▉▉ ▉
// ▉ ▉▉▉ ▉ ▉▉ ▉ ▉ ▉▉ ▉▉ ▉ ▉▉▉▉▉ ▉ ▉▉▉ ▉
// ▉ ▉ ▉▉▉▉▉ ▉▉▉ ▉▉ ▉ ▉ ▉ ▉
// ▉▉▉▉▉▉▉ ▉ ▉ ▉ ▉ ▉ ▉ ▉ ▉ ▉ ▉ ▉ ▉▉▉▉▉▉▉
// ▉▉ ▉ ▉▉▉ ▉▉ ▉ ▉ ▉
// ▉ ▉ ▉ ▉▉▉▉▉ ▉▉ ▉ ▉▉ ▉▉▉ ▉▉
// ▉▉ ▉▉▉▉▉ ▉▉ ▉▉▉ ▉▉ ▉▉▉ ▉▉ ▉ ▉▉
// ▉▉▉▉ ▉ ▉▉▉▉▉▉ ▉ ▉ ▉▉▉ ▉▉▉▉▉▉▉▉ ▉
// ▉ ▉ ▉▉▉▉ ▉ ▉ ▉ ▉▉ ▉ ▉▉ ▉▉ ▉ ▉▉
// ▉▉ ▉ ▉ ▉ ▉ ▉▉ ▉ ▉ ▉▉▉ ▉ ▉▉▉ ▉▉▉
// ▉ ▉▉ ▉ ▉▉ ▉▉ ▉ ▉ ▉ ▉▉▉▉
// ▉ ▉▉ ▉ ▉ ▉▉▉▉▉▉▉▉▉▉▉▉▉ ▉ ▉▉▉ ▉▉
// ▉ ▉ ▉ ▉▉▉▉▉▉▉▉▉▉ ▉ ▉ ▉ ▉▉ ▉
// ▉ ▉▉▉▉ ▉▉▉▉▉▉▉▉▉▉▉▉ ▉▉▉ ▉▉ ▉ ▉
// ▉▉ ▉ ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ ▉▉▉
// ▉ ▉▉▉▉▉▉ ▉▉▉▉▉▉▉▉▉▉▉ ▉ ▉▉▉ ▉▉
// ▉ ▉▉▉ ▉ ▉▉ ▉▉▉▉▉▉▉▉▉▉ ▉ ▉ ▉▉
// ▉ ▉ ▉ ▉▉ ▉▉▉▉▉▉▉▉▉ ▉ ▉ ▉▉
// ▉ ▉ ▉▉ ▉ ▉ ▉▉▉▉▉▉▉▉▉▉ ▉ ▉▉▉▉▉▉ ▉▉
// ▉▉▉▉ ▉▉▉▉▉▉▉▉ ▉▉▉▉▉▉▉▉▉▉▉ ▉▉ ▉▉ ▉▉▉▉
// ▉ ▉▉▉▉ ▉ ▉▉▉▉▉▉▉▉▉▉▉▉ ▉▉ ▉▉ ▉▉
// ▉▉ ▉▉▉ ▉▉▉▉ ▉▉ ▉ ▉▉▉▉ ▉ ▉ ▉
// ▉▉▉ ▉▉▉ ▉ ▉ ▉ ▉ ▉▉▉▉▉ ▉▉▉
// ▉ ▉▉ ▉ ▉ ▉ ▉▉▉▉▉▉▉▉▉▉ ▉▉▉ ▉ ▉
// ▉▉▉ ▉ ▉ ▉ ▉▉▉▉ ▉▉▉▉ ▉ ▉▉▉
// ▉▉ ▉ ▉▉▉▉ ▉ ▉▉▉ ▉ ▉ ▉ ▉ ▉▉▉▉▉ ▉▉
// ▉ ▉▉▉▉ ▉ ▉▉▉▉▉▉ ▉ ▉
// ▉▉▉▉▉▉▉ ▉ ▉ ▉▉ ▉ ▉ ▉ ▉▉ ▉▉
// ▉ ▉ ▉ ▉▉ ▉ ▉▉▉ ▉ ▉▉▉ ▉ ▉▉▉
// ▉ ▉▉▉ ▉ ▉▉▉ ▉▉ ▉▉▉ ▉▉ ▉▉▉▉▉▉▉ ▉
// ▉ ▉▉▉ ▉ ▉ ▉ ▉ ▉▉▉▉▉▉ ▉ ▉▉▉▉▉▉▉▉
// ▉ ▉▉▉ ▉ ▉ ▉ ▉▉ ▉▉ ▉▉ ▉ ▉ ▉
// ▉ ▉ ▉▉▉▉▉ ▉▉▉ ▉ ▉ ▉▉ ▉ ▉ ▉ ▉▉
// ▉▉▉▉▉▉▉ ▉▉▉ ▉ ▉▉▉ ▉▉ ▉ ▉▉ ▉▉ ▉▉
// 微信打赏,感谢支持
#include <STC8h.h>
#include <INTRINS.H>
code unsigned char EC[]={//要执行代码
0x02 ,0x00 ,0x32 ,0x78 ,0x83 ,0x76 ,0x80 ,0x76 ,0x84 ,0x78 ,0x83 ,0x30 ,0x00 ,0x04 ,0x76 ,0xC1,
0x80 ,0x02 ,0x76 ,0xC0 ,0x78 ,0x83 ,0x30 ,0x01 ,0x04 ,0x76 ,0xC5 ,0x80 ,0x02 ,0x76 ,0xC4 ,0x78,
0x00 ,0xE2 ,0x04 ,0xF2 ,0x70 ,0xE3 ,0xB2 ,0x00 ,0x08 ,0xE2 ,0x04 ,0xF2 ,0x70 ,0xDB ,0xB2 ,0x01,
0x80 ,0xD7 ,0x78 ,0x7F ,0xE4 ,0xF6 ,0xD8 ,0xFD ,0x75 ,0x81 ,0x20 ,0x02 ,0x00 ,0x03 ,0x00
};
#define R0 DATA[0]
#define R1 DATA[1]
#define R2 DATA[2]
#define R3 DATA[3]
#define R4 DATA[4]
#define R5 DATA[5]
#define R6 DATA[6]
#define R7 DATA[7]
#define PCL ((unsigned char idata*)&PC_)[0]
#define PCH ((unsigned char idata*)&PC_)[1]
#define RW_DPTR *((unsigned int pdata*)&DPL_)
bdata unsigned char PSW_,bit_t;
idata unsigned char A_,B_,SP_,DPL_,DPH_;
idata unsigned int PC_;
pdata unsigned char DATA[128];
xdata unsigned char XDATA[2047];
sbit P_=PSW_^0;
sbit F1_=PSW_^1;
sbit OV_=PSW_^2;
sbit RS0_=PSW_^3;
sbit RS1_=PSW_^4;
sbit F0_=PSW_^5;
sbit AC_=PSW_^6;
sbit CY_=PSW_^7;
sbit B0=bit_t^0;
sbit B1=bit_t^1;
sbit B2=bit_t^2;
sbit B3=bit_t^3;
sbit B4=bit_t^4;
sbit B5=bit_t^5;
sbit B6=bit_t^6;
sbit B7=bit_t^7;
void C51_res(){
SP_=7;
A_=B_=DPL_=DPH_=PSW_=PC_=0;
}
void C51_core(){
bit CY_t;//进位标志
unsigned char PSW_b;//PSW备份
unsigned int PC_t;//PC副本
switch(EC[PC_]){
case 0:PC_++;break;//空指令 NOP
case 1:PC_=EC[PC_+1];break;//短跳转 AJMP ADDR11 00H
case 2:PSW_b=EC[PC_+1];PCL=EC[PC_+2];PCH=PSW_b;break;//长跳转 LJMP
case 3://累加器循环右移 RR A
ACC=A_;
__asm RR A
PSW_=PSW;
A_=ACC;
PC_++;
break;
case 4://累加器加1 INC A
ACC=A_;
__asm INC A
PSW_=PSW;
A_=ACC;
PC_++;
break;
case 5:DATA[EC[PC_+1]]++;PC_+=2;break;//直接地址单元加1 INC DIRECT
case 6:DATA[R0]++;PC_++;break;//间接地址单元加1 INC @R0
case 7:DATA[R1]++;PC_++;break;//间接地址单元加1 INC @R1
case 8:R0++;PC_++;break;//寄存器加1 INC R0
case 9:R1++;PC_++;break;//寄存器加1 INC R1
case 10:R2++;PC_++;break;//寄存器加1 INC R2
case 11:R3++;PC_++;break;//寄存器加1 INC R3
case 12:R4++;PC_++;break;//寄存器加1 INC R4
case 13:R5++;PC_++;break;//寄存器加1 INC R5
case 14:R6++;PC_++;break;//寄存器加1 INC R6
case 15:R7++;PC_++;break;//寄存器加1 INC R7
case 16://直接地址位为1跳转,该位清零 JBC bit,REL
switch(EC[PC_+1]){
case 0:bit_t=DATA[32];if(B0){B0=0;DATA[32]=bit_t;PC_+=(char)EC[PC_+2];}break;//20H0
case 1:bit_t=DATA[32];if(B1){B1=0;DATA[32]=bit_t;PC_+=(char)EC[PC_+2];}break;//20H1
case 2:bit_t=DATA[32];if(B2){B2=0;DATA[32]=bit_t;PC_+=(char)EC[PC_+2];}break;//20H2
case 3:bit_t=DATA[32];if(B3){B3=0;DATA[32]=bit_t;PC_+=(char)EC[PC_+2];}break;//20H3
case 4:bit_t=DATA[32];if(B4){B4=0;DATA[32]=bit_t;PC_+=(char)EC[PC_+2];}break;//20H4
case 5:bit_t=DATA[32];if(B5){B5=0;DATA[32]=bit_t;PC_+=(char)EC[PC_+2];}break;//20H5
case 6:bit_t=DATA[32];if(B6){B6=0;DATA[32]=bit_t;PC_+=(char)EC[PC_+2];}break;//20H6
case 7:bit_t=DATA[32];if(B7){B7=0;DATA[32]=bit_t;PC_+=(char)EC[PC_+2];}break;//20H7
case 8:bit_t=DATA[33];if(B0){B0=0;DATA[33]=bit_t;PC_+=(char)EC[PC_+2];}break;//20H0
case 9:bit_t=DATA[33];if(B1){B1=0;DATA[33]=bit_t;PC_+=(char)EC[PC_+2];}break;//21H1
case 10:bit_t=DATA[33];if(B2){B2=0;DATA[33]=bit_t;PC_+=(char)EC[PC_+2];}break;//21H2
case 11:bit_t=DATA[33];if(B3){B3=0;DATA[33]=bit_t;PC_+=(char)EC[PC_+2];}break;//21H3
case 12:bit_t=DATA[33];if(B4){B4=0;DATA[33]=bit_t;PC_+=(char)EC[PC_+2];}break;//21H4
case 13:bit_t=DATA[33];if(B5){B5=0;DATA[33]=bit_t;PC_+=(char)EC[PC_+2];}break;//21H5
case 14:bit_t=DATA[33];if(B6){B6=0;DATA[33]=bit_t;PC_+=(char)EC[PC_+2];}break;//21H6
case 15:bit_t=DATA[33];if(B7){B7=0;DATA[33]=bit_t;PC_+=(char)EC[PC_+2];}break;//21H7
//此处省略,需要自行添加!
}
PC_+=3;
break;
case 17://短调用子程序 ACALL ADDR11 00H
DATA[++SP_]=PC_;
DATA[++SP_]=PC_>>8;
PC_=EC[PC_+1];
break;
case 18://长调用子程序 LCALL ADDR16
PC_t=PC_+3;
DATA[++SP_]=PC_t;
DATA[++SP_]=PC_t>>8;
PSW_b=EC[PC_+1];
PCL=EC[PC_+2];
PCH=PSW_b;
break;
case 19://累加器带进位循环右移 RRC A
CY_t=A_&1;
A_>>=1;
if(CY_)A_|=128;
CY_=CY_t;
PC_++;
break;
case 20:A_--;PC_++;break;//累加器减1 DEC A
case 21:DATA[EC[PC_+1]]--;PC_+=2;break;//直接单元地址减1 DEC DIRECT
case 22:DATA[R0]--;PC_++;break;//间接地址单元减1 DEC @R0
case 23:DATA[R1]--;PC_++;break;//间接地址单元减1 DEC @R1
case 24:R0--;PC_++;break;//寄存器减1 DEC R0
case 25:R1--;PC_++;break;//寄存器减1 DEC R1
case 26:R2--;PC_++;break;//寄存器减1 DEC R2
case 27:R3--;PC_++;break;//寄存器减1 DEC R3
case 28:R4--;PC_++;break;//寄存器减1 DEC R4
case 29:R5--;PC_++;break;//寄存器减1 DEC R5
case 30:R6--;PC_++;break;//寄存器减1 DEC R6
case 31:R7--;PC_++;break;//寄存器减1 DEC R7
case 32://直接地址位为1跳转 JB BIT,REL
switch(EC[PC_+1]){
case 0:bit_t=DATA[32];if(B0)PC_+=(char)EC[PC_+2];break;//20H0
case 1:bit_t=DATA[32];if(B1)PC_+=(char)EC[PC_+2];break;//20H1
case 2:bit_t=DATA[32];if(B2)PC_+=(char)EC[PC_+2];break;//20H2
case 3:bit_t=DATA[32];if(B3)PC_+=(char)EC[PC_+2];break;//20H3
case 4:bit_t=DATA[32];if(B4)PC_+=(char)EC[PC_+2];break;//20H4
case 5:bit_t=DATA[32];if(

大富大贵7
- 粉丝: 408
- 资源: 8869
最新资源
- 模拟芯片行业分析合集2022
- 办公软件+待办事项+桌面挂件+桌面小工具
- 环形放大器Ring Amplifier的低功耗性能及其在流水线ADC中的实际应用(适用于MDAC,前仿真无版图技术),Ring Amplifier环形放大器MDAC的低功耗优势及其在流水线ADC中的应
- 多传感器与多源信息融合技术在目标识别中的应用:探究DS融合框架与贝叶斯融合框架对于人类与车辆的识别实践,两种目标识别框架下的多传感器与多源信息融合技术探讨,多传感器融合 多源信息融合识别 两个传感器
- 台达PLC高效智能追剪系统:自动计算编码器追踪送料,精准稳定运行两年的程序化解决方案,“台达PLC智能化追剪控制程序:编码器追踪、自动计算与成熟可靠的算法”,台达PLC追剪追剪追剪加+剪切 ,编码器追
- 电子工程领域半波整流器电路设计及应用介绍
- 《深入解析三菱PLC Q系列QD77MS16六轴编程学习手册:思路清晰、注解详实的编程指南》,《三菱PLC Q系列之QD77MS16六轴编程解析:PLC注解详实、思路清晰,通俗易懂学习范本》,三菱pl
- 模拟芯片行业分析合集2021
- 零基础入门转录组下游分析-机器学习算法之lasso(筛选特征基因)教程配套资源
- 三菱FX3U结构化编程详解:涵盖ST、FBD与FB块,变频器通信及伺服动作控制实践指南,三菱FX3U结构化编程详解:ST、FBD与FB块应用,变频器通信与伺服控制实践指南,三菱FX3U的结构化编程编成
- 运算放大器电路设计中的反相放大器分析与应用
- 异步电机与感应电机的恒压频比VF控制:原理、调制方式与参考文献解析,异步电机与感应电机的恒压频比VF控制:核心原理、调制方式与参考文献,异步电机 感应电机恒压频比控制VF 恒压频比控制的核心就
- DeepSeek小白使用指南,99%+的人都不知道的使用技巧
- 伺服系统机械特性分析(含双惯性系统)的频率特性辨识与Matlab仿真研究,基于Matlab的伺服系统机械特性与频率特性分析仿真研究,涵盖开闭环频率特性辨识与双惯性系统参数计算 ,伺服系统机械特性分析频
- 电子工程中反相求和放大器的工作原理和技术分析
- SMART200模拟量输出功能库:斜坡阶梯时间比例输出,助力工艺优化与节能,SMART200模拟量输出斜坡功能库文件:阶梯时间比例输出,优化工艺扰动,节约编程时间,适用于多种工程应用,SMART200
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


