产品选型

单片机十六进制数 从一个详细的实例来知道单片机编程,你照着做就行了

小编 2024-11-25 产品选型 23 0

从一个详细的实例来知道单片机编程,你照着做就行了

我们要想使单片机工作,就需要编写程序,再将程序写入单片机,单片机在程序的控制下工作以完成指定的任务。没有程序的控制,单片机就无法工作。那么如何编写单片机程序呢?

1.从一个实例初步了解编程

上面这张图所示是一个边长为100m的正方形跑道,有一个人(称作甲)处于A点,如果要让甲到达B点,可以执行如下的程序:

起点 前进 50m

左转

前进 100m

左转

前进 50m

结束

甲逐条执行程序中的命令:先前进 50m,左转,然后前进100m,左转,再前进50m,结束,就可以到达B点。如果将上述程序改成:

起点 前进 50m

左转

前进 100m

左转

前进 50m

返回到 起点

结束

甲执行上述程序中的命令时会怎样呢?当他执行到第5行命令时,会到达B点,接着执行第6行命令,该命令使他又返回到起点(标号),甲于是又会执行第1行指令……由于执行到第6行的指令时又会返回执行第1行的命令,永远执行不到结束命令,所以,如果甲执行上述程序,就会不断在A、B点之间反复运动,不会停止。如果只要求甲在A、B点之间往返3次,上述程序应如何编写呢?读者可以思考一下,在后面的章节将会讲到这个问题。

2.分析一个单片机汇编语言程序

从前面的介绍初步了解了编程思想后,再来分析用到的汇编语言程序,程序如下:

MAIN: MOV P3,#0FFH

LOOP: MOV P1,P3

LJMP LOOP

END

为了更好地理解上面的程序,下面对照图所示的单片机应用电路来进行讲解。

第1 行指令“MAIN:MOV P3,#0FFH”的含义是将数据11111111(0FFH)送到P3 端口的8个寄存器,让P3端口的P3.0~P3.7这8个引脚全部为高电平。

“MAIN:”为标号,表示该行为主程序开始,这里也可省略,并不影响程序的运行;“MOV”为数据传送指令;“P3”表示单片机P3端口内部的8个寄存器;“#0FFH”中的“#”号表示它后面的“0FFH”是一个数据,而不是地址编号,“0FFH”是一个十六进制数,转换成二进制数就是11111111。

该行指令运行后,图中的单片机P3.0~P3.7这8个引脚内部的寄存器全部为高电平,相应的这8个引脚也为高电平。

第2行指令“LOOP:MOV P1,P3”的含义是将P3端口8个寄存器中的数据送到P1端口的8个寄存器中。

“LOOP:”为标号,用来标识指令“MOV P1,P3”,由于该标号后面的指令会被调用,所以不能省略。

由于第1行指令已经让P3端口8个寄存器内的数据全部为“1”,执行“MOV P1,P3 ”指令后,P1端口8个寄存器内的数据也全部为“1”,单片机的P1.0~P1.7这8个引脚全部为高电平,故发光二极管VD1~VD4全部不亮。

第 3 行指令“LJMP LOOP”的含义是返回执行标号LOOP所在行的指令。也就是说,当执行到该行指令后,又会返回去执行第2行指令“MOV P1,P3”,即不断将 P3 端口 8 个寄存器中的数据送到P1端口的8个寄存器中。

第4行指令“END”的含义是程序结束。由于执行到第 3 行指令时会自动返回执行第 2行指令,所以无法执行到第4行指令,即程序无法结束。

将上面的汇编语言程序汇编成机器语言程序并写入单片机后,在程序的控制下,单片机内部电路不断将P3端口8个寄存器中的数据送给P1端口的8个寄存器。

图示的单片机应用电路的工作过程分析如下。

在没有按下任何按键时,P3端口8个寄存器的数据都为“1”,所以P1端口8个寄存器的数据也为“1”,P1.0~P1.7这8个引脚都为高电平,发光二极管VD1~VD4全部不亮。

若按下S1按键,P3.2引脚变为低电平,P3.2端口内部寄存器的数据变为“0”,P3.7~P3.0端口的数据分别为11111011,在第2条指令的控制下,这些数据被送到P1端口,P1.7~P1.0端口的数据分别为11111011,其中P1.2端口的数据为“0”,P1.2引脚为低电平,于是它外接的发光二极管VD1有电流通过而发光。

如果松开S1按键,P3.2引脚变为高电平,P3.2端口的“1”送到P1.2端口,P1.2引脚为高电平,其外接的发光二极管VD1截止而不亮。

单片机C语言开发离不开它--秒懂二进制和十六进制

单片机C语言开发离不开它--秒懂二进制和十六进制

作为单片机爱好者,入门学习单片机编程一定要学会进制的基本概念,常见的有(二进制、八进制、十进制、十六进制),今天于晓超带大家入门一下单片机C语言编程的二进制和十六进制(技术文章阅读量惨淡,希望大家能够点赞收藏加转发,感谢)。

进制顾名思义,进位计数制是人们定义的进位技术方法,这句话可能比较难理解,以十进制为例,逢十进一,(1、2、3....10--1、2、3....10)由此大家应该也可以理解二进制和十六进制了,二进制就是逢二进一,十六进制逢十六进一,记住这是进位运算的方法。

二进制的应用

二进制在单片机开发过程中必不可少,可以把他理解为高低电平

如图,在单片机时序图中常常这样表示。0和1代表着信息,那么很多的0和1组成的就是一串信息,0和1的不同排列所承载的信息也不同,但是在实际应用过程中二进制承载的信息过多时不易使用和记忆,因此在单片机C语言开发中常常将一串二进制用十六进制来替代。

十六进制的应用

十六进制满十六进一,那么大于10的用什么来表示尼?在十六进制中大于10的数用ABCD等,英文大写来代替,0X01、0XAA这都是16进制,对十六进制和二进制进行相互转换是单片机C语言开发中必备的技能。

进制转换

二进制和十六进制的转换,在开发过程中可以借助计算机自带的计算器进行转换,但是自己熟练掌握相互转换会在开发过程中,节约很多时间而且有利于自身的理解,如何进行相互转换如图所示!

相关问答

为什么 单片机 里面都是 十六进制 ?

首先,赋几进制的值对单片机来说是一样的。因为经过编译之后都是二进制,单片机也只认识二进制。赋值时使用16进制是为了我们容易看。因为单片机的寄存器很多...

怎么将 单片机 接收到的 十六进制数 转为十进制?

你说的数字带小数点的,叫浮点数。小数点的数据用十六进制表示用4个字节。如果小数部分都是0,则可以用整数表示。例如:用长整型表示。longdat;//用于...你说...

把这个数转换为BCD码的十 进制数 ,BCD码的十位和个位放在累...

单片机编程填空会的快来1.RAM中45H单元内存有一个十六进制数,把这个数转换为BCD码的十进制数,BCD码的十位和个位放在累加器A中,百位放在R3中.ORG0000HMOVA,__...

单片机 中AL运算是什么?

单片机中的AL运算是指算术逻辑运算。算术逻辑运算是指单片机中对数据进行加、减、乘、除等算术运算以及逻辑运算(与、或、非等)的操作。单片机中的ALU(算术逻...

0x09代表什么字符?

单片机十六进制0x09是10进制9的意思。单片机十六进制数用0x开头,这是C语言的语法规则,它表示后面的数字和字母是16进制,编译器识别到之后,会把数据视作16进...

单片机 数字1-9怎么表示?

在单片机程序中,数字通常有二进制,十进制和十六进制三种表示法,以数字9为例:二进制写成00001001B,B就是二进制的意思,注意,这个字母不能缺少!十进制写...在...

单片机 bin是什么文件?

bin文件是二进制文件,所有数据就是写入到单片机中的实际数据。HEX文件是十六进制文件,整个文件以行为单位,每行以冒号开头,内容全部为16进制码(以ASCII码形...

单片机 中的存储格式?

1.有多种。2.首先,包括程序存储器和数据存储器。程序存储器用于存储程序指令,常见的格式有汇编语言指令格式、机器语言指令格式等。数据存储器用于存储数据,...

51 单片机 汇编程序的二进制、十进制、 十六进制数 怎么表明!-ZO...

二进制10B十进制10或10D十六进制10H十进制就是0到9这是个数比如MOVA,#8二进制就是01这两个数十六进制是从0到9到ABCDEF这16个数.A表示10B表示1...

单片机 振荡频率计算?

1、系统晶振频率是12M,则机器周期=12/12=1us;2、定时1ms=1*1000=1000us;3、工作在方式0下:最大计数值是2^13=8192;4、定时初值=8192-(1*1000....

猜你喜欢