③if-else-if形式:当有多个分支选择时,采用if-else-if语句,形式为if语句1;else if语句2;else if语句3;…使用switch语句时注意以下几点:①case后的各常量表达式的值是不一样的,否则会出现错误。②在case后,允许出现多条语句,可以不用{}括起来。③各case和default语句位置的先后顺序可以改变,而不会影响程序执行结果。......
2023-11-04
通过单片机与程序设计语言的学习,如C语言程序设计,最好的方法是直接操作实践,以下通过编写简单的C语言程序创建一个工程文件,对工程文件进行编译和调试引导大家学习Keil C51软件的基本使用方法。
(1)首先创建一个新的工程,单击Project菜单,在下拉菜单中选择new μvision project如图2-17所示,弹出创建工程窗口如图2-18所示,设定好保存创建工程的路径,在文件名中给创建工程命名如test,扩展名为Uvproj,鼠标单击保存。
(2)工程文件命名保存后弹出一个工程编译选择单片机型号的窗口如图2-19所示,根据使用的单片机来选择相应的型号,如Atmel公司的AT89C51,注意这里选择单片机型号只是软件上的编译,与实际使用的型号没有直接的关联,使用的时候可以选择其他型号的单片机,只要是51系列有40个引脚都可以。型号选择正确后鼠标单击OK弹出一个代码添加界面,如图2-20所示,在进入C语言编程之前执行一段汇编代码,并添加到工程中,鼠标单击Y添加成功,工程文件建立完成界面如图2-21所示。
图2-17 创建工程菜单
图2-18 创建一个新的工程
图2-19 选择单片机型号窗口
图2-20 代码添加界面
图2-21 工程创建成功后的工作界面
(3)在创建工程成功的界面下进行C语言编程,执行File菜单中的New选项如图2-22所示,新建一个程序编译文件,新建的文件界面如图2-23所示,可以在text2区域编写C语言程序。
图2-22 执行新建程序编辑指令
图2-23 新建完成的程序编辑界面text2
(4)编写一段流水灯移位的C语言程序在text2区域内,程序如下:
将编辑好的程序书写到text2区域内,鼠标单击保存按钮。在输入程序时,Keil C51会自动识别关键字,并以不同的颜色提示用户注意,减少用户编写程序出现的错误,有利于提高编程效率。屏幕如图2-24所示,在文件名栏右侧的编辑框中,输入使用的文件名如test,同时必须输入正确的扩展名。注意使用C语言编写程序,则扩展名为(.c);若采用汇编语言编写程序,则扩展名为(.asm)。本书只是讨论用C语言编写程序,汇编不做讨论,单击保存按钮。
图2-24 保存编辑的C程序文件
(5)返回新建工程界面,单击Target1前面的“+”号,在出现的source group1上鼠标右键单击,弹出添加test编辑好的C语言文件加入到source group1中如图2-25所示。
出现图2-26添加文件界面,鼠标选中test.c文件单击Add,会看到在source group1中有test.c文件加入成功如图2-27所示。
图2-25 将程序文件加入到source group1中
图2-26 添加文件界面
图2-27 文件加入成功界面
(6)以上工程和编写的程序创建完成,接下来对编写的程序进行编译来检验程序的正确性。单击project菜单中的built target选项(快捷键F7)如图2-28所示,进行程序编译。输出编译的结果如图2-29所示。
若编写的程序无错误,则输出结果提示“0 Error(s),0 Warning(s)”,可以将程序利用2.4节的知识下载到单片机中实现单片机对设计的硬件进行控制。
若编写的程序有错误,则输出结果会有错误提示如“Target not created”目标无法创建,需要对程序进行一步步调试直到找到错误,程序修改正确为止。(www.chuimin.cn)
(7)调试是为了检查程序中看不见的错误,程序调试包括单步执行和全速执行。单步执行是每次执行一行程序,执行完该行程序即停止,等待命令执行下一行程序,此时可以观察该行程序执行完后得到的结果是否与我们设计的结果一致,以便发现程序存在的问题;全速执行指的是执行一段程序时,中间不间断,执行速度快可以看到程序最终的结果,但是若程序本身有错,全速执行很难发现错误的地方;在调试程序时可以将单步执行和全速执行交叉使用,确保调试的程序的准确性。
图2-28 对编辑的程序执行编译
在对设计的程序进行调试时,单击debug菜单选中start/stop debug session(快捷键ctrl+F5),则进入到Keil C51程序调试界面如图2-30所示。
图2-29 程序编译后的输出结果
图2-30 调试工作界面
全速执行时,单击debug菜单中的run选项,对编辑的程序进行调试运行,再单击de-bug菜单中的stop选项,则程序编译调试结束如图2-31所示。查看程序运行结果可以通过观察窗口(watch&call stack window)来观察变量值P3值的变化,通过执行view菜单中的watch windows中的watch 1如图2-32所示,查看P3调试结果如图2-33所示。
图2-31 全速调试执行结果
图2-32 观察窗口执行菜单
单步执行时,灵活地使用调试快捷选项,进行单步调试,单步调试结果如图2-34所示,大大提高了调试程序的效率。
:单步执行命令。
:单步执行遇到循环子程序时,选择过程单步命令不会进入循环子程序内部。
:当次数很多的循环子程序中,选择单步执行到函数外命令。
:当次数很多的循环子程序中,运行到光标所在行命令跳出循环子程序。
图2-33 观察窗口查看P3值变化
图2-34 单步调试结果
(8)另外,在调试程序时,有时候程序需满足一些特定的条件才能执行,如程序中某些变量达到一定的值,按键被按下,串口接收到数据,定时或者中断发生等情况,单步调试很难实现,此时需要设置断点才能调试。所谓的断点调试指的是在一段程序中设置断点,一旦调试运行到该断点则程序停止,可以观察设置断点处的变量值找出问题。将光标定位于需要设置断点的程序中,通过执行debug菜单中的inster/remove breakpoint设置和删除断点如图2-35所示,可以设置断点亦可以删除该断点,设置好的断点如图2-36所示。对设定好的断点调试运行,调试结果如图2-37所示。
图2-35 设置和删除断点操作
图2-36 断点设置成功界面
图2-37 断点设置成功后调试结果图
(9)以上为Keil C51完整的工程应用过程和软件开发过程,若程序调试无错误,需要将调试正确的程序下载到单片机芯片中,供单片机驱动设计的电路正常工作。通过单击pro-ject菜单中的options for target“target 1”,弹出options for target选项如图2-38所示。
图2-38 options for target选项图
在图2-38中单击output,选中create HEX File选项,使得程序编译后产生HEX代码,重新对test.c文件进行built target二次编译,在创建工程路径文件夹下生成一个扩展名为.hex文件,供下载软件将生成的.hex文件下载到单片机中。
有关51单片机初级入门实战教程的文章
③if-else-if形式:当有多个分支选择时,采用if-else-if语句,形式为if语句1;else if语句2;else if语句3;…使用switch语句时注意以下几点:①case后的各常量表达式的值是不一样的,否则会出现错误。②在case后,允许出现多条语句,可以不用{}括起来。③各case和default语句位置的先后顺序可以改变,而不会影响程序执行结果。......
2023-11-04
手机电池的使用寿命和单次使用时间以及充电过程密切相关。设计比较科学的充电器往往采用专用充电器控制芯片配合单片机控制的方式。例如在充电后增加及时关断电源、蜂鸣报警和液晶显示等功能。充电器种类繁多,但从严格意义上讲,只有单片机参与处理和控制的充电器才能称为智能充电器。在众多的51系列单片机中,AT89系列单片机在我国得到了极其广泛的应用。而51单片机在实现手机电池充电器方面的应用就更具有意义了。......
2023-11-04
提供内部上电自动复位电路,当外加电源电压超过4.5V时,自动对模块进行初始化操作,将模块设置为默认的显示工作状态。1602LCD芯片逻辑工作电压4.5~5.5V,LCD驱动电压3~5V,最佳工作电压5.0V,显示容量16×2个字符;工作电流2.0mA;字符尺寸2.95×4.35(W×H)mm。表14-1 LCD1602引脚描述第1引脚:VSS为地电源。LCD1602基本操作时序见表14-2。......
2023-11-04
对于基本数据类型量,根据变量值在程序执行过程中是否发生变化,又可分为常量和变量两种。常量——与变量相对应,在程序执行的过程中,其值不能发生改变。习惯上用大写字母来表示符号常量的标识符,用小写字母表示变量标的识符。程序中使用变量须先用标识符作为变量名,并指出所用的数据类型和存储模式。各变量名之间用逗号间隔,类型说明符与变量名之间至少用一个空格间隔。......
2023-11-04
本节主要介绍下载软件STC-ISP在Windows 7系统中的应用,网络下载STC-ISP安装软件,在软件包中找到可执行文件,鼠标右击在弹出选项中找到属性选项如图2-39所示。图2-39 STC-ISP属性菜单操作图2-40 STC-ISP属性对话框设置完成后运行,STC-ISP可以正常进行程序烧写工作,如图2-41所示。......
2023-11-04
本文所设计的用来提供充电电压的模块是由一个光耦合器6N137和一个模式管NDS332组成,之所以要接一个模式管NDS332,是因为通过光耦合器6N137的内部消耗,它所输出的电流非常小,无法带动后面的负载。图17-4 提供电压的电路图光耦合器6N137的引脚说明:①+:内部接的是发光二极管的正极,外部接的是5V,用来驱动发光二极管。......
2023-11-04
②然后求循环条件表达式2的值,当满足循环条件时执行循环体语句并计算更新表达式3。④一直进行到循环条件表达式2的结果为假时,退出循环体。......
2023-11-04
表18-1 PT2262引脚说明图18-4 PT2262引脚图2.发射模块电路设计编码电路原理图如图18-5所示。图18-5 编码电路图该部分电路主要由315MHz无线数据发射模块和编码集成在PT2262芯片中。发射模块采用ASK方式调制,以降低功耗。无按键操作时,晶体管Q截止,编码集成IC1处于断电状态,无线数据发射模块没有发射信号。如果按钮一直按住,则发射模块连续发射无线信号。......
2023-11-04
相关推荐