对单片机来说,可以用高级语言编程,也可用汇编语言编程,两种语言各有特点。像8051具有MCS51系列单片机的指令集。用助记符指令组成的计算机语言就称为汇编语言。......
2025-09-30
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窗口。(https://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_();语句。
相关文章
对单片机来说,可以用高级语言编程,也可用汇编语言编程,两种语言各有特点。像8051具有MCS51系列单片机的指令集。用助记符指令组成的计算机语言就称为汇编语言。......
2025-09-30
尽管单片机有许多特点,但仍然属于计算机的范围。这种特殊的语言就是程序设计语言,也就是由一系列语句组成的程序。程序设计语言从原理上可分为机器语言、汇编语言和高级语言三种类型,单片机也不例外。由于汇编语言指令具有直接对应机器语言指令的特点,因而生成的机器代码效率高,执行速度快,至今在单片机程序设计中仍被采用。在众多高级语言中,只有C语言成了应用于单片机系统的高级语言。......
2025-09-30
图3-3 简单的if语句2.在if语句中加elseif-else语句是考虑到不同的情况,能够根据判定条件的真假来执行两种操作中的一种。使用if-else语句的基本格式如下:图3-4 执行if-else语句当条件condition为true时,执行statement1;当condition为false时,则执行statement2语句,其流程图为3-4所示。图3-5 if-else语句多学一招通过上面的实例代码,使读者理解了if-else语句的基本用法。图3-6 if-else-if语句流程图if-else-if可以嵌套无限次,可以说只要遇到正确的condition,就执行相关的语句,然后结束程序。......
2025-09-30
为此,出现了用代表指令意义的助记符表示指令。后面的字节称为“操作数”,表示端口的编号是00。将助记符表示的程序变换为包括地址和机器码在内的可执行程序的过程,称为“汇编”。对“宏”助记符指令进行的“汇编”,称为“简易汇编”。利用“宏”作为学习8051汇编语言和C语言的入门阶梯,对初学者是较好的一种选择。......
2025-09-30
单片机是将CPU+ROM+RAM+I/O集成在一块小小的芯片上,这种结构使用非常灵活,可以“嵌入”任何控制对象内,组成嵌入式系统。单片机中的片内程序存储器是一种可编程可擦除的只读存储器。通用计算机的CPU主要是进行高速数据处理。单片机体积很小,可以直接“嵌入”到机器的控制板上,实际上就是将计算机系统嵌入到机器内,组成所谓的“嵌入式系统”。......
2025-09-30
程序点评:数据传送指令MOV将一组数据分别传送到P1口,做了输出口的操作。将8位立即数传送给累加器A,再由累加器A将数据传送到I/O接口的P1口,使P1.0灯亮。在I/O接口输出操作时不能将间接寄存器中的地址输出到P1口。......
2025-09-30
当然,OB35的周期设置可以根据工艺实际要求而定。表9-3 PID软件编程步骤为了保证执行频率一致,块应当在循环中断OB中调用。图9-3 设置SFB41的背景DB为DB3具体的PID调用程序如图9-4所示。图9-4 PID程序调用在PID程序调用中,“CYCLE”参数对应的是扫描时间,必须将程序块调用的间隔时间赋值在这里。当前值显示在窗口的右上部。9)单击“关闭”按钮,终止曲线记录器的功能。......
2025-09-29
本例是为了进一步熟悉PC上的编程方法。在PC左侧指令表中选SUBX n并双击,弹出对话框,输入标号地址X3,然后单击“确定”按钮,在.asm文件窗口显示语句。子程序的结束要用RETX指令结束。在第3个子程序结束后,选用END做整个程序结束。至此,汇编完成。利用0D、0E输出可以控制74HC164显示任意字形,包括文字和数字,例如“P”、“L”、“0”、“8”等。......
2025-09-30
相关推荐