13.2 系统资源仿真
除了强大的调试功能,KeilµVision3集成开发环境中还提供了对单片机强大的仿真支持。在KeilµVision3支持多个厂商的单片机系列,几乎可以囊括市场上所有的51系列单片机。同时,KeilµVision3对每一款单片机上的各种片上资源提供了仿真支持。即使没有外部硬件支持,在KeilµVision3集成开发环境中也可以完美仿真模拟程序的执行。对于标准的8051单片机,其支持的片上资源仿真包括如下几点。
❑并行I/O端口
❑寄存器
❑中断
❑定时器/计数器
❑串行接口
❑定时器/计数器
❑看门狗定时器
❑低功耗模式
对于一些新型的增强型单片机,除了支持标准的8051片上资源外,还可以仿真其他一些片上资源,例如A/D转换器、D/A转换器、Flash/EEPROM存储器、I2C总线和CAN总线等。这里主要介绍8051标准的片上资源的仿真操作。
13.2.1 并行I/O端口仿真
典型的51系列单片机具有4个8位的并行I/O端口,分别为P0、P1、P2和P3。对于其他一些单片机,可能包含更多或者更少的I/O端口。这些并行I/O端口均可以用作输入和输出引脚来使用。KeilµVision3集成开发环境提供了这些并行I/O端口的支持。并行端口0的仿真界面如图13.11所示。
图 13.11 并行端口0的仿真界面
其中,P0为端口寄存器及其值,Pins为引脚电平及其值。被选中的位为1,否则为0。端口寄存器的值可以不同于引脚电平的值。
这里以典型的51系列单片机为例,介绍并行I/O端口的仿真。在51系列单片机中,4组I/O端口分别对应4个特殊功能寄存器,即P0、P1、P2和P3。当在KeilµVision3集成开发环境中建立一个工程项目后,编译系统将自动加载该单片机所支持的并行I/O端口资源。此时,在程序的仿真调试模式下便可以观察各个并行I/O端口的读写。
在KeilµVision3集成开发环境中,并行I/O端口的仿真操作步骤如下。
(1)打开KeilµVision3集成开发环境,选择“Project”→“New”→“µVision Project”命令,新建一个单片机工程项目,并保存。
(2)此时,弹出器件选择对话框,这里选择Atmel公司的AT89S52单片机,如图13.12所示。
图 13.12 选择单片机AT89S52
(3)单击“确定”按钮,此时弹出对话框询问是否加载启动文件,如图13.13所示。
(4)单击“是”按钮,加载启动代码,完成整个工程的建立。
图 13.13 加载启动代码
(5)选择“File”→“New”命令,新建一个文件并保存为*.C文件,同时将该文件添加到当前项目中。在其中输入如下程序源代码。
include<reg52.h>//头文件
void main()//主函数
{
char PortValue;//声明变量
while(1)//主循环
{
PortValue=P1;//读端口P1,并赋值给PortValue
P2=PortValue;//将PortValue写入端口P2
}
}
在该程序中,首先定义变量PortValue。在while主循环中,首先读端口P1,并将端口值赋值给变量PortValue,接着将变量PortValue写入端口P2,即P2端口的引脚电平将保持和P1端口一致。因此,在程序执行时,每次改变P1端口的值,P2端口也将随之改变。
(6)选择“Debug”→“Start/Stop Debug Session”命令,进入仿真调试模式。
(7)选择“Peripherals”→“I/O-Ports”→“Port 1”命令,打开并行I/O端口P1的仿真界面。同样,可以打开并行I/O端口P2的仿真界面,如图13.14所示。
注意必须进入调试模式后才能从“Peripherals”菜单中选择查看仿真设备。
(8)选择“Debug”→“Run”命令,程序便开始运行。此时,手工更改P1端口各个引脚的值,P2端口的值也将随之改变,如图13.15所示。
图 13.14 P1端口和P2端口的仿真界面
图 13.15 P1端口和P2端口引脚的变化
(9)当仿真操作完毕后,选择“Debug”→“Stop Running”命令,便可以结束程序仿真。
(10)选择“Debug”→“Start/Stop Debug Session”命令,可以退出程序仿真调试模式。