图21-10 单片机最小系统电路单片机要正常工作还需要有晶振电路和复位电路,因为没有晶振电路的话,也就没有时钟周期,无法执行程序代码,单片机也就无法工作,单片机的晶振电路是一种典型电路,分为内部时钟方式和外部时钟方式两种,本设计采用的是内部时钟方式,时钟的晶振频率选择11.0592MHz,外接两个30p谐振电容。......
2023-11-04
子程序设计时需注意以下几点:
1)要给每个子程序赋予一个名字,子程序的名字实际上就是其入口地址的代号。
2)要能正确地传递参数。即首先要有入口条件,说明进入子程序时它所要处理的数据如何得到(例如,是把数据放在累加器A中还是某工作寄存器中)。另外,要有出口条件,即处理的结果如何存放。
3)注意保护现场和恢复现场。在执行子程序时,可能要使用到累加器或某些工作寄存器。而在调用子程序之前,这些寄存器可能存放着主程序的中间结果,这些中间结果是不允许被破坏的。因此,在子程序使用这些寄存器之前,要将其中的内容保存起来,即保护现场。当子程序执行完成后,即在返回主程序之前,再将这些内容取出,送至相应的寄存器,这一过程称为恢复现场。保护现场和恢复现场通常是用堆栈来进行的。
4)为了使子程序具有一定的通用性,子程序中的操作对象应尽量用地址或寄存器形式,而不用立即数。另外,子程序中如含有转移指令,应尽量使用相对转移指令,以便它不管放在内存中的哪个区域,都能正确执行。
【例4-12】用程序实现c=a2+b2。设a、b均小于10,a存放在片内RAM的31H单元中,b存放在32H单元中,c存放在33H单元中。
【编程说明】本题中两次用到求平方值,所以在程序中采用把求平方的程序编为子程序的方法。
【程序】
【例4-13】求两个无符号数据块中的最大值。数据块的首地址分别为片内RAM的60H和70H,每个数据块的第一个字节都存放数据块的长度,结果存入40H单元中。
【编程说明】本题可采用分别求两个数据块的最大值,然后比较其大小的方法,求最大值的过程可采用子程序。子程序的入口参数是数据块的首地址,返回参数是最大值,放在累加器A中。
【程序】
习题4
1.简答题(www.chuimin.cn)
(1)试写出汇编语言程序的基本框架。
(2)循环程序由哪几部分组成,分别起什么作用?
(3)子程序设计时应注意什么?
2.编程题
(1)将片内RAM 30H~3FH单元中的内容传送到片外RAM的3000H开始的存储区中。
(2)试分别编写延时20ms、1s的程序
(3)用查表程序求0~8之间整数的立方。
(4)片内RAM中60H开始存放20个数据,试统计正数、负数及为零的数据个数,并将结果分别保存在50H、51H和52H单元中。
(5)外部数据区5000H为首址的数据块中存放有BCD码,将其转换为ASCII码,并传送到内部数据区30H为首址的单元中,数据块长度在内部RAM 60H单元中。
(6)设10次采样值依次放在片内RAM的50H~59H中,试编程去掉一个最大值、去掉一个最小值,求剩余8个数的平均值,结果存放在60H中。
(7)试编写程序,将片外RAM的2000H~200FH数据区中的数据由大到小排列起来。
将片内RAM中22H单元存放的以ASCII码表示的数,转换为十六进制数后,存于片内RAM的21H单元中。
有关单片机基础及应用的文章
图21-10 单片机最小系统电路单片机要正常工作还需要有晶振电路和复位电路,因为没有晶振电路的话,也就没有时钟周期,无法执行程序代码,单片机也就无法工作,单片机的晶振电路是一种典型电路,分为内部时钟方式和外部时钟方式两种,本设计采用的是内部时钟方式,时钟的晶振频率选择11.0592MHz,外接两个30p谐振电容。......
2023-11-04
软件设计包括题目定义、题目细分、确定算法、画流程图和编写程序5部分内容。1.题目定义题目定义是在对软件设计任务书分析后,根据系统软件功能的要求,作出软件的总体规划和详细说明,必须明确如下内容:1)输入/输出信息列表。3.确定算法确定算法是软件非常重要的工作。......
2023-11-17
在单片机应用系统设计时,应按以下6条原则进行:1)明确设计目标。在整个设计过程中要不断地对照设计目标并满足目标要求。2)自上而下设计。3)软、硬件优化设计。大部分子任务可以以硬件为主实现也可以以软件为主实现,必须进行协调优化设计,从而提高性能质量,降低成本。6)组合及开放式设计。......
2023-11-17
AT89S51是一款低功耗、高性能CMOS 8位单片机,可反复擦写1000次的Flash只读程序存储器。中断控制系统 89S51单片机具有5个中断源,两个中断优先级的中断控制系统,以满足控制应用的需要。时钟电路为单片机产生时钟脉冲序列。本设计中单片机的最小系统设计如图17-2所示。当其输出为1时,光耦合器6N137的OUTPUT脚输出为高电平。当其输出为1时,报警系统关闭。......
2023-11-04
如上述C代码中,把延时函数的定义删除了,然后把延时函数的实现搬到main函数的上面,编译后程序代码减少到63个字节,减少了4个字节,如图6-5所示。图6-4 编译结果2图6-5 编译结果3省略函数形参函数带形参,是为了在函数调用时传递实参,不但可以避免重复代码出现,还可以通过传递不同的实参值多次调用函数且实现不同的函数功能,总体代码也会得到精简。......
2023-10-28
评价程序优劣的因素1)正确性,容错性。程序设计过程与基本设计方法1)模块化;结构化;自顶而下与自底而上。4)从原理到程序实现:原理→模型→算法→流程→程序设计→调试→优化→验证→建档。常用的程序调试方法1)原则:先硬后软;先局部,后整体。程序的优化与文件编制1)参照评价因素,修改程序结构、数据结构、算法及程序等。5)使用说明功能、操作方法、出错信息与排除方法、注意事项等。......
2023-10-28
汇编程序如下:第2条指令执行后,如图4-5所示,内部RAM中15H单元的内容已送入R6中;继续执行第3条指令,结果显示与图4-4相同。图4-13 任务2存储器窗口显示5上述程序需要说明的是:1)由于PUSH指令不能寄存器寻址,即R2不能压栈弹栈,因此压栈弹栈操作需对直接地址02H操作。图4-14 任务3存储器窗口显示12)解法2。分析:64H的无符号数和有符号数表示见表4-4。表4-5 64H+64H的CY和OV结果按照PSW定义,由图4-16可知运算后PSW为00000101B。......
2023-10-28
1.系统的组成根据系统的主要技术指标和功能,本系统为一个8路数据实时采集系统,系统选用AT89C52单片机为主机。由于AT89C52片内具有8KB的程序存储器,所以系统不需要外部扩展程序存储器。2.系统的工作原理图10-16系统总体结构框图本系统设计采用定时采样控制方式进行工作,每隔0.5s对8路模拟量进行巡回采集1次。图10-19DAC0832的电压输出电路图打印机的选择在单片机系统中,经常选用微型打印机,如PP40、GP16等。......
2023-11-17
相关推荐