基于SDCC和Edsim51的代码仿真
一. 安装SDCC和Edsim51,采用汇编语言与C语言两种方式,在Edsim51虚拟开发板上点亮一个Led灯,并思考尝试让Led灯周期性闪烁。写作详细操作过程。
1.使用C语言:
在终端中输入指令创建一个led1.c文件
编译内容
继续输入终端指令,生成ihx文件和hex文件
在edsim51仿真器中选择生成的hex文件
update freq选择50000,run后得到结果
可以看到, run 运行后 变为 Pause (点击后可以进行单步调试,我们在后面会介绍),在左下方可以看到LED灯亮了(白色表示灭,最右边的红色表示 LED 0 灯亮),在右边可以看到 P1 口的状态( 0 或 1 )。
2.使用汇编语言:
在edsim51仿真器中直接输入汇编语言
与C语言操作一致,结果也一致
3.周期性闪烁
操作与上述一致,将C语言编码改成
汇编语言改为
二. 参考附件中8051指令集大全手册,在Edsim51,把汇编语言点亮Led1灯的代码,手工翻译转换为机器指令,与Edsim51 编译生成的机器码指令进行对比,查看是否一致。写作详细操作过程。
使用edsim51将指令转化为机器指令
与8051指令集大全手册中一一对应
三. 在Proteus中画出一个与Edsim51虚拟电路原理基本相同的电路,用Proteus仿真完成Led灯的点亮和闪烁,须分别采用以下方式(1)采用Proteus+SDCC 的C程序编程; (2)采用Proteus+Keil C51 的C程序编程;(3)采用Proteus 内置汇编语言编译的方式。
1.采用Proteus+SDCC 的C程序编程
在proteus中绘制电路图
双击at89c51芯片选择(一)(二)中生成的hex文件,led灯正常发光与闪烁
2.采用Proteus+Keil C51 的C程序编程
使用keil c51创建文件,输入C语言编辑生成hex文件
发亮:
闪烁:
选择keil c51生成的hex文件,led正常发亮,闪烁
3.采用Proteus 内置汇编语言编译的方式。
对at89c51芯片右击鼠标选择Edit Source Code,在start处编辑
发亮:
闪烁:
led灯正常发亮与闪烁