0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

51单片机的数制和指令系统的讲解及制作一个单片机最小系统的概述

Wildesbeast 来源:未知 2019-09-08 11:01 次阅读

在讲指令系统前我们先来复习一下数制的概念。

1.十进制(Decimal)

基数是10,它有10个数字符号,即0,l,2,3,4,5,6,7,8,9。其中最大数码是基数减1,即9,最小数码是0。

2.二进制(Binary)

基数是2,它只有两个数字符号,即0和1。这就是说,如果在给定的数中,除0和1外还有其它数,例如 1012,它就决不会是一个二进制数。

3、十六进制(Hexadecilnal)

基数是16,它有16个数字符号,除了十进制中的10个数可用外,还使用了6个英文字母。它的16个数字依次是0,l,2,3,4,5,6,7,8,9,A,B,C,D,E,F。其中A至F分别代表十进制数的10至15,最大的数字也是基数减1。

4、二进制数与十六进制数的相互转换。

(1)、二进制转换为十六进制:

整数部分,从低位开始,小数部分,从高位开始,每四位一组(不够四位的补0),转换为对应的十六进制数。

例:(1 0001 0011.1100 0111)2=(113.C7)H

(2)、十六进制转换为二进制:

将十六进制数的每一位分别转换为对应的四位二进制数。

例:(3E9D)H=(11 1110 1001 1101)B

例:( 2ABE)H= 0010 1010 1011 1110B

以后我们在单片机编程方面采用十六进制,这个请大家注意了!

MCS-51系列单片机的指令系统共有111条指令,其中49条是单字节指令,45条是双字节指令,17条是三字节指令。

MCS-51的指令系统共有33个功能,用汇编编程时只需要42个助记符就能指明这33个功能操作。

1、 指令格式:MCS-51汇编语言指令格式与其他微机的指令格式一样,均由以下几部分组成:[标号:]操作码 [操作数][,操作数][;注释]

标号:又称为指令地址符号,地址的符号化,一般由1到6个字符组成,以字母开头的字母数字串,与操作码之间用冒号分开。

操作码:是由助记符表示的字符串,它规定了指令的操作功能。

操作数:是指参加操作的数据和数据的地址。

注释:是为该条指令作说明,以便于阅读。

注意:[ ]中表示为可选项。操作数可以为1、2、3个,也可以没有。

不同功能的指令,操作数作用不同,如:传送指令多数有两个操作数,写在左面的是目的操作数(表示操作结果存放的单元地址),写在右面的称为源操作数(指出操作数的来源)。操作码和操作数之间必须用空格分隔,操作数与操作数之间必须用逗号“,”分隔。带方括号项可有可无,称为可选项。操作码是指令的核心不可缺少。

2、 指令分类

MCS-51的111条指令分为下面5类:

(1) 数据传送类指令29条,分为片内RAM,片外RAM、程序存储器的传送指令,交换及堆栈操作指令。

(2) 算术运算类24条,分为加,带进位加,减,乘,除,加1,减1指令。

(3) 逻辑运算类24条,分为逻辑与、或、异或、移位指令。

(4) 控制程序转移类17条,分为无条件转移与调用,条件转移,空操作指令。

(5) 布尔变量操作类17条,分为数据传送、位与、位或,位转移指令。

3. 指令代码:

(1) 数据传送类

MOV 传送数据

指令格式:MOV A,#DATA;将立即数DATA送到累加器A中。

例:

MOV P1,#11111110B;把立即数11111110B传送到P1口。

MOVX 片外数据存储器传送数据

指令格式:MOVX A,@DPTR;将DPTR指向的地址单元中的内容传送至A中。

例:MOV DPTR,#1000H;将地址1000H传送到数据指针DPTR中。

MOVX A,@DPTR;将DPTR指向的地址单元(1110H)中的内容传送至A中。

MOVC 程序存储器传送数据

指令格式: MOVC A,@A+DPTR;

例:MOV A,#00H

MOV DPTR,#1000H;将地址1000H传送到数据指针DPTR中。

MOVC A,@A+DPTR;把累加器A的值和DPTR的值相加得到值作为地址,把这个程序存储器的地址单元中的内容传送到A中。

(2) 算术运算指令

ADD 不带进位的加法类指令

指令格式:ADD A,#DATA;把立即数DATA和累加器A的内容相加得到的值存放到累加器A中。A+DATA→A

例:

SETB C;让累加器C置1

MOV A,#01H;A=01H

ADD A,#01H;A=02H

ADDC 带进位的加法类指令

指令格式:ADDC A,#DATA;把立即数DATA和累加器A的内容相加,再加上进位标志C得到的值存放到累加器A中。A+DATA+C→A

例:

SETB C; 把累加器C置1

MOV A,#01H ; A=01H

ADDC A,#01H; A+DATA+C→A ,A=03H

SUBB带借位的减法类指令

指令格式:SUBB A,#DATA;把累加器A的内容减去立即数DATA再减去进位标志C得到的值存放到累加器A中。A-DATA-C→A

例:

SETB C; 让累加器C置1

MOV A,#03H; A=03H

SUBB A,#01H; A=01H

INC加一指令

指令格式:INC A ;把A的内容加1再存储到A中。

例:

MOV A,#01H;A=01H

INC A ;A=02H

DEC 减1指令

指令格式:DEC A ;把A的内容减1再存储到A中。

例:

MOV A,#03H ;A=03H

DEC A ;A=02H

(3) 逻辑运算指令

CLR 清零指令

指令格式:CLR A ;把A的内容清零再存储到A中,A=00H。

MOV A,#00000001B;A=00000001B

CLR A ;A=00000000B

CPL 按位取反

指令格式:CPL A ;把A的内容按位取反后再存储到A中。

例:

MOV A,#00000001B;A=00000001B

CPL A ;A=11111110B

ANL 按位取与

指令格式:ANL A ;把A的内容按位取与后再存储到A中。

例:

MOV A,#01000001B ; A=00000001B

ANL A,#01001111B ; A=01000001B

ORL 按位取或

指令格式:ORL A ;把A的内容按位取或后再存储到A中。

例:

MOV A,#00000001B ;A=00000001B

ORL A,#10001111B ;A=10001111B

XRL 按位取异或,相同为0,不同为1。

指令格式:XRL A ;把A的内容按位取异或后再存储到A中。

例:

MOV A,#00000001B;A=00000001B

XRL A,#00001111B ;A=00001110B

RL左移位指令

指令格式:RL A ;把A的内容按位左移后再存储到A中。

例:

MOV A,#00000001B;A=00000001B

RL A ;A=00000010B

RL A ;A=00000100B

RL A;A=00001000B

RR右移位指令

指令格式:RR A ;把A的内容按位右移后再存储到A中。

例:

MOV A,#00000001B ;A=10000000B

RR A ;A=01000000B

RR A ;A=00100000B

RR A ;A=00010000B

(4) 位操作指令

SETB 置1指令,只能对位操作,不可以对字节操作。

指令格式:SETB BIT ;对位BIT置1。

例:

SETB P1.0 ;P1.0=1

CLR 清零指令,可对位操作,也可对字节操作。

指令格式:CLR BIT ;对位BIT置0。

SETB C

MOV A,#11110000B

CLR C

CLR A

CPL 取反,可对位操作,也可对字节操作。

指令格式:CPL BIT ;对位BIT取反。

SETB C

MOV A,#11110000B

CPL C

CPL A

(5) 控制及转移指令

LJMP 长跳转指令

指令格式: LJMP 标号;程序将跳转到标号处执行。

LCALL长调用子程序指令,常与RET配合使用。

指令格式: LCALL 标号;调用为标号的子程序去执行。

RET子程序返回指令。

DJNZ 条件转移类指令(自减一指令)

指令格式: LOOP:DJNZ R7,LOOP

执行分两步:

(1) 将R7的内容减一后再送到R7中。

(2) 判断R7是不是等于0

如果是等于0,顺序执行下面的程序。

如果不等于0,跳转到标号为LOOP的地方去执行。

例:

MOV R7,#3;送循环次数。

CLR A;对A清零。

LOOP:INC A;对A加1。

DJNZ R7,LOOP;先让R7自减1,后判断是否等于0。

;不等于0跳转,等于零往下执行。

END

运行上面的程序后累加器A的值是多少?

答案:A=03H

学完了指令系统现在我们来实战一下,一个单片机最小系统的制作

单片机最小系统制作

一、确定任务

开发单片机最小系统

二、任务分析:

该系统具有的功能:

(1)具有2位LED数码管显示功能。

(2)具有八路发光二极管显示各种流水灯。

(3)可以完成各种奏乐,报警等发声音类实验。

(4)具有复位功能。

三、功能分析

(1)两位LED数码管显示功能,我们可以利用单片机的P0口接两个数码管来现这个功能;

(2)八路发光二极管显示可以利用P1口接八个发光二极管实现这个功能;

(3)各种奏乐、报警等发声功能可以采用P2.0这个引脚接一蜂鸣器来实现。

(4)利用单片机的第9脚可以设计成复位系统,我们采用按键复位;利用单片机的18、19脚可以设计成时钟电路,我们利用单片机的内部振荡方式设计的。

四、设计框图

五、硬件电路设计

根据本系统的功能,和单片机的工作条件,我们设计出下面的电路图。

六、元件清单的确定:

数码管:共阴极2只(分立)

电解电容:10UF的一只

30PF的电容2只

220欧的电阻9只

4.7K的电阻一只

1.2K的电阻一只

4.7K的排阻一只,

12MHZ的晶振一只

有源5V蜂名器一只

AT89S51单片机一片

常开按钮开关1只

紧锁座一只(方便芯取下来的,绿色的)

发光二极管(5MM红色)8只

万能板电路版15*17CM

S8550三极管一只

4.5V电池盒一只,导线若干。

七、硬件电路的焊接

按照原理图把上面的元件焊接好,详细步骤省略。

八、相关程序编写

针对上面的电路原理图,设计出本系统的详细功能:

(1)、第一个发光二极管点亮,同时数码管显示“1”。

(2)、第二个发光二极管点亮,同时数码管显示“2”。

(3)、依次类推到第八个发光二极管点亮,同时数码管显示“8”。

以上出现的是流水灯的效果

(4)、所有的发光二极管灭了,同时数码管现实“0”。

(5)、数码管显示“1”。

(6)、数码管显示“2、……”直到“9、A、B、C、D、E、F、Y”。

(7)、蜂鸣器发出九声报警声后重复上面所有步骤。

(8)程序如下:

ORG 0000H;伪指令,定义下面的程序代码(机器代码)从地址为0000H的单元存放。

LJMP START;跳转到标号为START的地方去执行。

ORG 0030H;伪指令,定义下面的程序代码(机器代码)从地址为0030H的单元存放。

START:MOV P1,#0FEH ;点亮第一个发光二极管。

CLR P2.7 ;送低电平到第一个数码管,开启数码管。

CLR P2.6 ;送低电平到第二个数码管,开启数码管。

MOV P0,#06H;让数码管显示“1” 。

LCALL DELAY;调用延时子程序,起到延时的目的。

MOV P1,#0FDH;点亮第二个发光二极管。

MOV P0,#5bH;让数码管显示“2” 。

LCALL DELAY;调用延时子程序,起到延时的目的。

MOV P1,#0FBH;点亮第三个发光二极管。

MOV P0,#4fH;让数码管显示“3” 。

LCALL DELAY;调用延时子程序,起到延时的目的。

MOV P1,#0F7H;点亮第四个发光二极管。

MOV P0,#66H;让数码管显示“4” 。

LCALL DELAY;调用延时子程序,起到延时的目的。

MOV P1,#0EFH;点亮第五个发光二极管。

MOV P0,#6dH;让数码管显示“5” 。

LCALL DELAY;调用延时子程序,起到延时的目的。

MOV P1,#0DFH;点亮第六个发光二极管。

MOV P0,#7dH;让数码管显示“6” 。

LCALL DELAY;调用延时子程序,起到延时的目的。

MOV P1,#0BFH;点亮第七个发光二极管。

MOV P0,#07H;让数码管显示“7” 。

LCALL DELAY;调用延时子程序,起到延时的目的。

MOV P1,#7FH;点亮第八个发光二极管。

MOV P0,#7fH;让数码管显示“8” 。

LCALL DELAY;调用延时子程序,起到延时的目的。

MOV P1,#00H;灭了所有的发光二极管。

MOV P0,#3FH;让数码管显示“0” 。

LCALL DELAY;调用延时子程序,起到延时的目的。

MOV P0,#06H;让数码管显示“1” 。

LCALL DELAY;调用延时子程序,起到延时的目的。

MOV P0,#5bH;让数码管显示“2” 。

LCALL DELAY;调用延时子程序,起到延时的目的。

MOV P0,#4fH;让数码管显示“3” 。

LCALL DELAY;调用延时子程序,起到延时的目的。

MOV P0,#66H;让数码管显示“4” 。

LCALL DELAY;调用延时子程序,起到延时的目的。

MOV P0,#6dH;让数码管显示“5” 。

LCALL DELAY;调用延时子程序,起到延时的目的。

MOV P0,#7dH;让数码管显示“6” 。

LCALL DELAY;调用延时子程序,起到延时的目的。

MOV P0,#07H;让数码管显示“7” 。

LCALL DELAY;调用延时子程序,起到延时的目的。

MOV P0,#7fH;让数码管显示“8” 。

LCALL DELAY;调用延时子程序,起到延时的目的。

MOV P0,#6fH;让数码管显示“9” 。

LCALL DELAY;调用延时子程序,起到延时的目的。

MOV P0,#7fH;让数码管显示“A” 。

LCALL DELAY;调用延时子程序,起到延时的目的。

MOV P0,#7fH;让数码管显示“b” 。

LCALL DELAY;调用延时子程序,起到延时的目的。

MOV P0,#7fH;让数码管显示“C” 。

LCALL DELAY;调用延时子程序,起到延时的目的。

MOV P0,#7fH;让数码管显示“d” 。

LCALL DELAY;调用延时子程序,起到延时的目的。

MOV P0,#7fH;让数码管显示“E” 。

LCALL DELAY;调用延时子程序,起到延时的目的。

MOV P0,#7fH;让数码管显示“F” 。

LCALL DELAY;调用延时子程序,起到延时的目的。

MOV P0,#7fH;让数码管显示“Y” 。

LCALL DELAY;调用延时子程序,起到延时的目的。

MOV R4,#9;送蜂鸣器的报警次数。

LOOP:SETB P2.0;不发声

LCALL DELAY;调用延时子程序,起到延时的目的。

CLR P2.0;发声。

LCALL DELAY;调用延时子程序,起到延时的目的。

DJNZ R4,LOOP;发声九次后向下执行。

SETB P2.0;关闭发声

LJMP START;跳转到标号为START处执行,循环本程序。

DELAY:MOV R7,#200;这是延时子程序。

D1:MOV R6,#200

D2:MOV R5,#200

D3:DJNZ R5,D3

DJNZ R6,D2

DJNZ R7,D1

RET;延时子程序返回指令。

END;结束伪指令。

九、利用KEIL C51 软件对上面的程序进行调试和编译,产生*.HEX文件,以便用编程器写入单片机芯片中。

十、编程器的使用:用编程器把电脑里生成的*.HEX文件写到芯片中。

十一、产品调试:通上4.5V(三节电池)的电源,可以调试本系统,如果没有错误就可以正常工作了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储器
    +关注

    关注

    38

    文章

    7485

    浏览量

    163794
  • 51单片机
    +关注

    关注

    274

    文章

    5702

    浏览量

    123537
  • 指令系统
    +关注

    关注

    1

    文章

    81

    浏览量

    15646
收藏 人收藏

    评论

    相关推荐

    单片机最小系统原理图讲解

    单片机最小系统,或者称为最小应用系统,是指能够维持单片机正常工作的最小工作单元。对
    的头像 发表于 11-22 14:13 1.5w次阅读
    <b class='flag-5'>单片机</b><b class='flag-5'>最小系统</b>原理图<b class='flag-5'>讲解</b>

    单片机最小系统的相关知识

    单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。对
    发表于 11-29 15:57 1916次阅读
    <b class='flag-5'>单片机</b><b class='flag-5'>最小系统</b>的相关知识

    单片机最小系统设计介绍

    单片机最小系统设计》 介绍单片机最小系统,及单片机知识讲解
    发表于 11-19 10:23 29次下载

    MCS-51单片机指令系统讲解

    MCS-51单片机指令系统是学习单片机是的难点,所以值得好好学
    发表于 06-08 16:46 4次下载

    51单片机最小系统制作

    51单片机最小系统制作包含电路图,制作材料等资料
    发表于 06-29 15:04 5次下载

    51单片机最小系统

    单片机最小系统,或者称为最小应用系统,AT89S51单片机
    发表于 12-06 13:39 9386次阅读
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>最小系统</b>

    什么是单片机最小系统

    单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。 对
    的头像 发表于 03-05 09:14 7.7w次阅读
    什么是<b class='flag-5'>单片机</b><b class='flag-5'>最小系统</b>

    51单片机最小系统是什么?51单片机最小系统的电路介绍

    单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。 对
    发表于 08-12 17:33 44次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>最小系统</b>是什么?<b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>最小系统</b>的电路介绍

    单片机最小系统的调试方法_单片机最小系统设计制作及开发流程

    本文主要介绍了单片机最小系统的调试方法及单片机最小系统设计制作及开发流程。
    的头像 发表于 04-24 09:35 1.3w次阅读
    <b class='flag-5'>单片机</b><b class='flag-5'>最小系统</b>的调试方法_<b class='flag-5'>单片机</b><b class='flag-5'>最小系统</b>设计<b class='flag-5'>制作</b>及开发流程

    51单片机最小系统讲解和应用的资料总结

    单片机最小系统, 或者称为最小应用系统, 是指用最少的元件组成的单片机可以工作的系统。对
    发表于 11-05 14:53 22次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>最小系统</b>的<b class='flag-5'>讲解</b>和应用的资料总结

    设计并制作单片机最小系统

    设计并制作单片机最小系统方法。
    发表于 03-25 09:47 37次下载
    设计并<b class='flag-5'>制作</b><b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>单片机</b><b class='flag-5'>最小系统</b>

    单片机最小系统的设计与制作讲解

    单片机最小系统的设计与制作讲解说明。
    发表于 04-19 15:19 17次下载

    理解51单片机最小系统的工作原理

    51单片机最小应用系统概述要想使用单片机,第一个要搭
    发表于 11-10 19:05 36次下载
    理解<b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>最小系统</b>的工作原理

    单片机最小系统详解

    单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对
    发表于 11-17 09:36 14次下载
    <b class='flag-5'>单片机</b><b class='flag-5'>最小系统</b>详解

    单片机最小系统

    、复位电路,如图 2-1 所示:这张最小系统的电路图节选自我们的 KST-51 开发板原理图,下面我们就照这张电路图来具体分析最小系统的三要素。电源这个很好理解,电子设备都需要供电,就连我们的家用电器(手电筒_)也不例外。目前主
    发表于 12-29 19:36 69次下载
    <b class='flag-5'>单片机</b><b class='flag-5'>最小系统</b>