微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51单片机数据传输存储

51单片机数据传输存储

时间:10-02 整理:3721RD 点击:

在编写程序时,对于数值数据传输存储,为何要进行各种进制的转换?各种进制及ASCII码有何用处?

在计算机中(单片机属于微型计算机),所有数据在存储和运算时都要使用二进制表示,如字母、数字、符号都要使用,当然每个人都可以约定自己的一套编码,但是不利于通信,于是美国有关的标准化组织出台了所谓的ASCII编码,统一规定上诉常用符号用哪些二进制数来表示。

因此ASCII是一套电脑编码系统。我们想输出我们看得动的字符时,就应该遵循这套编码系统。

字符数据在内存的存储形式及其方法:将一个字符常量放到一个字符变量中,实际上不是把该字符本身放到内存中,而是将该字符相应的ASCII代码放到存储单元中(这样使字符型数据和整型数据之间可以通用。一个字符数据既可以以字符形式输出,也可以以整数形式输出)。

整型数据的整型变量在内存中的存放形式:数据在内存中以二进制的补码表示,正数(原码与补码相同),负数(原码取反加一)

单片机串口只能以半双工单字节输入输出,即字符型数据。若有其他数据形式的数据,应当转成字符型的:


1、为何要进行各种进制的转换

在单片机中,任何进制都可以运算、比较(前提是运算比较的进制应相同),因为编译器反汇编时能自动转换所需的进制。当想让我们看到(也称可视化),就应该转换成ASCII码的输出。

为什么要转换成16进制?

2、各种进制转换成ASCII码

(1)‘X’:单引号表示引用字符,可直接使用

(2)10进制数—>>ASCII(想要serial的准备工作):      a|=0x30

观察ASCII表:ASCII的十进制数0对应ASCII 0x30,于是我们用|(或)关系,相当于+,得到我们想要的a的ASCII码的十进制数。

(3)10进制数-->>16进制数:    a&=0x0F

观察ASCII表:十进制数&0x0F得到该十进制数相对应的十六进制数。


顶一个!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top