本节书摘来自异步社区《例说51单片机(c语言版)(第3版)》一书中的第1章,第1.6节,作者 张义和 , 王敏男 , 许宏昌 , 余春长,更多章节内容可以访问云栖社区“异步社区”公众号查看
例说51单片机(c语言版)(第3版)
单片机系统的设计中,软件与硬件息息相关,不同的电路设计,程序可能就不太一样。因此,在编写程序之前,必须确定电路的连接状态,例如,要利用89s51的p2来控制8个led,让这8个led分成两组(高4位与低4位)交替闪烁,其设计步骤如下。

首先把电路连接妥当,如图1-26所示。当p2的引脚输出低电压(0)时,其所连接的led呈现正向偏压而发亮;若将引脚输出高电压(1)时,其所连接的led不导通而不亮。因此,我们的程序设计就要让p2输出为“00001111”,以十六进制数字表示为“0f”,使左边4个led亮,右边4个led不亮;而在keil c的程序里十六进制数字是以“0x”为前缀。所以,在程序里应表示为“0x0f”。隔一段时间后,再将输出反相(在keil c里可利用“~”操作符),即左边4个led不亮,右边4个led亮,如此周而复始。
图1-26 交替闪烁灯电路
有了电路和思路后,随即将思路画成流程图,如图1-27所示,其中的延迟函数只是一个“0~x-1”的计数程序而已。
图1-27 流程图
除非是很简单的程序,否则,根据流程图来编写程序还是一个比较容易且保险的方法。程序如下。
说明:
若使用本书所推荐的89s51在线刻录实验板,请将程序中的“#define led p2”,改为“#define led p1”。
紧接着单击图片 100按钮(以windows xp为例),在随即弹出的“开始”菜单里选择“程序”→keil uvision3选项,即可开启keil c,如图1-28所示。当然,若桌面上有图片 101图标,则指向这个图标,双击鼠标左键一样可以进入keil μvision 3环境。
图1-28 keil uvision3集成开发环境
首先打开一个项目,启动project菜单下的new project命令,屏幕出现如图1-29所示的对话框。
图1-29 保存项目
在“文件名”栏中指定所要新增的项目名称(如ch01),再单击图片 106按钮,屏幕出现如图1-30所示的对话框。
图1-30 选择器件
在data base栏中选择所要使用的cpu芯片,例如atmel半导体公司的at89s51,再单击图片 109按钮关闭对话框,屏幕出现如图1-31所示的对话框。
图1-31 添加启动代码
这时系统询问我们要不要将8051汇编语言的启动代码放入我们所编辑的项目文件夹里,在此单击图片 112按钮关闭此对话框,则在左边将产生“target 1”项目,如图1-32所示。
图1-32 新建项目界面
单击按钮设置此芯片的选项,屏幕出现如图1-33所示的对话框。
图1-33 晶振频率选择
在这个对话框里设置此芯片的工作频率与所要输出的文件名。首先在target选项卡的xtal(mhz)栏中输入12,指定此芯片的工作频率为12mhz。然后切换到output选项卡,如图1-34所示。
图1-34 选择产生十六进制文件
选择create hex file选项,如此才会产生十六进制文件,单击图片 120按钮关闭对话框即可完成设置。
单击左上方的图片 122按钮,编辑区里将打开一个全新的编辑窗口,再单击图片 123按钮,然后在随即出现的对话框里的文件名称栏中输入所要保存的文件名称(ch01.c),再单击图片 124按钮关闭对话框。
在编辑窗口中输入程序内容(即ch01.c),其中的缩排是单击制表键图片 126所产生的,不用按空格键产生。程序编辑完成后,在编辑窗口的左侧选择target 1节点下面的sourc group 1项,单击鼠标右键,弹出快捷菜单,如图1-31所示。选择add files to group source group 1项,然后在随即出现的对话框里指定刚才编辑的ch01.c文件,再单击
按钮;最后,单击
按钮关闭对话框,即可将 ch01.c文件加入source group 1。
图1-35 添加源文件
紧接着进行编译与连接,单击左上方的图片 131按钮即可进行编译与连接,而其过程将记录在下方的输出窗口中,如图1-36所示。
图1-36 编译与连接
图中的“0 error(s), 0 warnning(s).”表示没有错误,因此就可继续进行调试/仿真。单击图片 134按钮打开调试工具栏,屏幕出现确认对话框,如图1-37所示。
单击
按钮关闭对话框,即进入调试状态。若左下方没有出现监视窗口,可单击图片 137按钮打开,如图1-38所示。
图1-37 进入调试/仿真
图1-38 调试/仿真状态
单击监视窗口底部的watch #1标签,切换到watch #1页。再指向name栏里的项,单击鼠标左键,再单击快捷键图片 141即可输入所要监视的信号名称,在此要跟踪p2,所以输出p2,如图1-39所示。
图1-39 监视窗口
选择view菜单下的periodic window update命令(若已打勾就不用再选择),让窗口随程序运行而变动。再单击
按钮即开始执行程序,监视窗口中,p2的值也在0x0f与0xf0之间交替变化。表示连接在p2的led将分为高4位与低4位交替闪烁。若要停止程序的进行,可单击
按钮。
如果监视窗口还不能满足要求的话,可打开peripherals菜单中的i/o-ports命令,再选择p2选项,即可打开p2窗口,如图1-40所示。
图1-40 i/o端口设置
若要继续运行程序,可单击
按钮,则监视窗口与p2窗口的内容都将随程序的进行而变化。若想从头开始,则单击
按钮停止程序,单击
按钮复位cpu,再单击
按钮。若要关闭此专案,则先单击
按钮离开调试状态,再启动project菜单下的close project命令。最后,启动file菜单下的exit命令,即可关闭keil c程序。
在本项目所存储的文件夹里可找到ch01.hex文件,这个文件就是可执行文件,使用ice加载此文件即可进行在线仿真,至于在线仿真的操作,可参阅附录。