if-else条件分支语句是选择结构的一种形式,是最常用的语句之一。这意味着如果if后面的表达式成立(不为0),则执行if下面的语句,否则直接向下执行。......
2023-11-07
for循环语句常用于不要求精确延时的程序。
1.流程图(见图4-6)
2.格式
语句的执行过程是,首先计算表达式1,向下执行语句组,转去执行表达式3,将结果按表达式2进行判断,若成立(不为0),则再执行语句组,再执行表达式3,继续循环执行,直到按表达式2进行判断,若结果不成立(为0),则结束循环,向下执行。
图4-6 for语句流程图
3.利用for循环进行延时,控制灯闪烁。
【例4-12】 灯D0闪烁运行,间隔0.5s。
(1)编辑C语言源程序
(2)编译
(3)执行
1)软仿真。在本例中,使用了3个for循环进行延时。但每一个空语句的执行时间,并不是像汇编语言那样是按晶体振荡器频率计算出的空指令的执行时间,而要决定于C语言编译器的空语句时间,可以通过软仿真计算得到。现在让我们进入调试状态,调出P1窗口。(www.chuimin.cn)
主要是计算延时时间。单击“跟踪”,P1.0=0,表示灯D0亮。进入{;}空语句。在目标管理器窗口下方显示执行一次空运行的时间。
①显示时间:0.00080400sec。单击“跟踪”,执行一次空运行。
②显示时间:0.00081000sec,如图4-7所示。
由此可计算出执行一个空语句运行的时间为0.00080400-0.00081000s=0.000006s=6×10-6s=6μs。
③单击“RST”,返回开始状态。单击“跟踪”,执行到delay()。单击“单步”,可以得到整个延时子函数的时间6×167×100×5μs=501000μs=0.5s。实际显示:0.50685s。
图4-7 执行时间
2)下载到实验机。可观察到灯D0的闪烁,间隔时间约为0.5s。
(4)程序点评
本例的目的是理解for循环语句,并通过仿真计算每一个空语句执行时间为6μs。这为以后计算延时时间提供了条件。如果想实际观察for循环语句的执行,可以进行单步执行,即一步步执行即可了解每一个循环的执行过程。为了简化,延时子函数也可以写为如下形式:
这个效果与原来相同。用C语言软件进行的延时与直接用纯硬件NOP空指令的延时时间是不同的。C语言的软件延时除受设置的晶振频率的影响,还受编译器的影响,准确度不是很高。若必须精确延时,要加头文件<intrins.h>及_NOP_();语句。
有关零起点学习单片机多语言编程的文章
if-else条件分支语句是选择结构的一种形式,是最常用的语句之一。这意味着如果if后面的表达式成立(不为0),则执行if下面的语句,否则直接向下执行。......
2023-11-07
增量运算见表4-2。两种形式结果相同。但若增量运算符与其他运算符联合组成一个表达式,则增量运算符在变量前或变量后,其结果是不同的。证明程序运算结果正确。读者可自行在Keil μVision 2平台上验证。若下载到实验机,P0、P2、P3可以用逻辑笔观察结果。......
2023-11-07
将一个二进制数转换成十进制数表示,只需按权展开做一次10进制运算即可以完成。将一个十进制数转换成二进制数表示,是数据转换中较复杂的工作。做乘、除运算时,其法则与十进制数也是相同的。它不同于数值运算。二进制数可以进行按位的逻辑运算,每位之间相互独立,位与位之间不存在进位和借位的关系。......
2023-11-07
程序点评:数据传送指令MOV将一组数据分别传送到P1口,做了输出口的操作。将8位立即数传送给累加器A,再由累加器A将数据传送到I/O接口的P1口,使P1.0灯亮。在I/O接口输出操作时不能将间接寄存器中的地址输出到P1口。......
2023-11-07
尽管单片机有许多特点,但仍然属于计算机的范围。这种特殊的语言就是程序设计语言,也就是由一系列语句组成的程序。程序设计语言从原理上可分为机器语言、汇编语言和高级语言三种类型,单片机也不例外。由于汇编语言指令具有直接对应机器语言指令的特点,因而生成的机器代码效率高,执行速度快,至今在单片机程序设计中仍被采用。在众多高级语言中,只有C语言成了应用于单片机系统的高级语言。......
2023-11-07
对单片机来说,可以用高级语言编程,也可用汇编语言编程,两种语言各有特点。像8051具有MCS51系列单片机的指令集。用助记符指令组成的计算机语言就称为汇编语言。......
2023-11-07
一种良好的程序设计规则和方法是结构化程序设计。结构化程序设计的基本思想是基于这样的考虑,即任何程序都可以用三种基本结构的组合来实现。这三种基本结构为顺序结构、分支结构和循环结构。在本章的程序讲解和编程练习中较多地使用了“延时程序”子程序,其程序结构常用的有单循环和双循环。由于前文所介绍的程序并没有对“延时程序”子程序延时时间的计算进行讲解,因此,在此结合程序的循环结构讲解延时程序的延时时间计算。......
2023-11-07
本例是为了进一步熟悉PC上的编程方法。在PC左侧指令表中选SUBX n并双击,弹出对话框,输入标号地址X3,然后单击“确定”按钮,在.asm文件窗口显示语句。子程序的结束要用RETX指令结束。在第3个子程序结束后,选用END做整个程序结束。至此,汇编完成。利用0D、0E输出可以控制74HC164显示任意字形,包括文字和数字,例如“P”、“L”、“0”、“8”等。......
2023-11-07
相关推荐