从单片机基础到程序框架(全集 2019pdf版) - 第59页

在电脑串口 助手软件上观察 到的程序执行 现象 如下: 开始... 第 1 个数 十进制:5 十六进制:5 二进制:101 第 2 个数 十进制:1 十六进制:1 二进制:1 分析: 实验结果显 示,两变 量的数值交换 成功。 【13.3 如何在单片机上练习本章节 C 语言程序?】 直接复制前 面章节中第十 一节的模板程 序, 练习代码时只需 要更改 “ C 语言学习区 域” 的 代码就可 以了, 其它 部分的 代码 不要动 。编 译后…

100%1 / 836
十六进制:1
二进制:1
2 个数
十进制:1
十六进制:1
二进制:1
分析:
1 个数 a 和第 2 个数 b 然都是 1!这不是我们想要的结果。我们要的交换结果是:交换后,a 变为 5,
b 变为 1。在哪个环节出了问题?把镜头切换到上述代码的“第一步”“第二步”,由于 b 的数据在执行完
“第一步”b 自己原来的数据 5 被覆盖丢失了变成新的数 1,接着执行“第二步”此时相当于把 b
的新数据 1 赋值给 a并没有 5所以 a b 数据都是 1,不能达到交换后“a 5,b 1”的目的。其实
就是赋值语句的覆盖性在作祟。
上述交换数据的程序宣告失败!怎么办?既然赋值语句具有覆盖性,那么两变量想交换数据,就必须借
助第三方变量来寄存,此时只需要多定义一个第三方变量 t。正确的代码如下:
/*---C 语言学习区域的开始。-----------------------------------------------*/
void main() //主函
{
unsigned char a=1; //定义的变量 a 被分配 1 个字节的 RAM 空间,保存的数据被初始化成 1。
unsigned char b=5; //定义的变量 b 被分配 1 个字节的 RAM 空间,保存的数据被初始化成 5。
unsigned char t; //定义一个第三方变 t,用来临时寄存数值。
t=b; //第一步:为了避免 b 的数据在赋值后被覆盖丢失,先寄存一份在第三方变量 t 那里
b=a; //第二步:把 a 的数赋值给 b,b 原来的数据虽然丢失,但 b t 变量那里有备份。
a=t; //第三步:再把 b t 变量里的备份赋值给 a。注意,这里不能 b,因 b 原数据已被覆盖。
View(a); //把第 1 个数 a 发送到电脑端的串口助手软件上观察。
View(b); //把第 2 个数 b 发送到电脑端的串口助手软件上观察。
while(1)
{
}
}
/*---C 语言学习区域的结束。-----------------------------------------------*/
在电脑串口助手软件上观察到的程序执行现象如下:
开始...
1 个数
十进制:5
十六进制:5
二进制:101
2 个数
十进制:1
十六进制:1
二进制:1
分析:
实验结果显示,两变量的数值交换成功。
【13.3 如何在单片机上练习本章节 C 语言程序?】
直接复制前面章节中第十一节的模板程序,练习代码时只需要更改C 语言学习区域”代码就可以了,
其它部分的代码不要动。编译后,把程序下载进带串口的 51 学习板,通过电脑端的串口助手软件就可以
察到不同的变量数值,详细方法请看第十一节内容。
第十四节:二进制与字节单位,以及常用三种变量的取值范围。
【14.1 为什么要二进制?】
为什么要二进制?我们日常生活明明是十进制的,为何数字电子领域偏要选择二进制?这是由数字硬件
电路决定的。人有十个手指头人可以直接发出十种不同声音来命 0,1,2,3...9 这些数字人可以直接用
眼睛识别出十种不同状态的信息,但是数字底层基础硬件电路要直接处理和识别十种状态却很难,相对来说,
处理和识别两种状态就轻松多了,所以选择二进制。比如,一 LED 灯的亮或灭,一 IO 口的输出高电平
或低电平,识别某一个点的电压是高电平或低电平,只需要三极管等基础元器件就可把硬件处理电路搭建起
来,二进制广泛应用在数字电路的存储,通讯和运算等领域,想学好单片机就必须掌握它。
【14.2 二进制如何表示成千上万的大数值?】
二进制如何表示成千上万的数值?现在 LED 灯的亮和灭来跟大家讲解。
(1)1 LED 灯:
0 种状态
1 种状态
合计:共 2 种状态。
(2)2 LED 灯挨着:
灭灭 0 种状态
灭亮 1 种状态
亮灭 2 种状态
亮亮 3 种状态
合计:共 4 种状态。
(3)3 LED 灯挨着:
灭灭灭 0 种状态
灭灭亮 1 种状态
灭亮灭 2 种状态
灭亮亮 3 种状态
亮灭灭 4 种状态
亮灭亮 5 种状态
亮亮灭 6 种状态
亮亮亮 7 种状态
合计:共 8 种状态。
(4)8 LED 灯挨着:
灭灭灭灭灭灭灭灭 0 种状态
灭灭灭灭灭灭灭亮 1 种状态
...... N 种状态
亮亮亮亮亮亮亮灭 254 种状态
亮亮亮亮亮亮亮亮 255 种状态