• 【单片机51】顺便在这里建一个单片机的总结吧


    首先,现在接触的单片机是89C51,用的是89C52,内核是以51做的。只是52的内部程序空间是8kb。51为4kb。这些信息也包含在他们的名字里。

    数字8表示该芯片为8051内核芯片。

    9表示内部含Flash E^2PROM储存器。(其他数字代表啥并不能记住。。)

    C表示CMOS

    5固定不变

    1代表该芯片内部程序储存空间的大小,1为4kb,2为8kb。

    RC-STC单片机内部RAM(很熟悉吧)为512B,RD+  表示内部RAM为1280B(真小。)

    感觉上面的参数可能会用到,详细的就不写了,毕竟它的全名是STC 89C51RC 40C-PDIP 0707CU8138.00D(说真的,脑残才记全名)

    详细的看图吧

    开始用Keil来编程,至于为什么要用它呢,我也不知道,猜想的原因是它能够生成hex文件(十六进制文件hexadecimal)吧。而单片机只能下载hex或者bin文件(二进制文件 binary)。

    下面列举关于编程时注意到的内容:

    1.sfr关键字和sbit关键字

        sfr   特殊功能寄存器的数据声明,声明一个8位的寄存器,声明16位的时要用sfr16。

        例 sfr P0 = 0x80;表示把单片机内部地址0x80处的这个寄存器重新起名叫P0,我们就可以用P0来直接操作寄存器了。简单说就是给单片机内部的东西起个名字,方便我们访问它。

       sbit   特殊功能位声明,也就是声明某一个特殊功能寄存器中的某一位。

       例  sbit led = P1^0;表示把P1口的最低位定义为led。感觉也像是起个名字拿来用的,和上面的不同之处是sfr声明的是一个寄存器,sbit声明的是一个功能位,是个位。

       另还有一个bit,它是用来定义一个位变量的,虽然我一次也没用到,不过我也没见到啊。。

    2.位操作和总线操作(点亮led灯的时候)

       位操作 在控制led灯亮的时候见到过,一条语句只能控制一个I/O口。形如led1 = 0;(点亮第一个灯)。

       总线操作 不用定义位了,因为在reg52.h这个头文件里P1被sfr定义过了。单片机知道P1是什么东西。这时候就用十六进制数来表示灯的状态了。

       点亮1,3,5,7就写P1 = 0xaa;。

    3.无符号数uint(16位)和无符号字符(8位)

    uint是宏定义来的,这个就不解释了,原称是unsigned int。

    uint 是无符号整型,16位二进制,需要2个字节表达,其值范围为:0到65535。
    uchar是无符号字符型,8位二进制,只需要1个字节表达,其值范围为:0到255。

    4.数码管的位选和段选

      位选来控制哪个数码管亮,段选控制数码管输出什么,例 P0 = 0x7F;。表示数码管显示数字8,0x7F的二进制是01111111。

      书上的程序位选和段选都是由P0这个口来传输信号的,不知道其他是不是。(有点搞不清的感觉)

    5.键盘

    这个貌似最简单,直接几个if去判断键有没有按下去,按下去干什么,松开干什么,自己就随意玩去吧(可是并没啥好玩的)

    6.中断啊,LCD啊,其他的下次再总结吧。

     

  • 相关阅读:
    Java课程设计---实现登录(2)
    Java课程设计---项目数据库设计(含实体类)
    Java课程设计---学生信息管理系统需求分析及总体设计
    Java课程设计---索引
    【软件测试】基础-概念篇
    【计算机网络】定义、作用、特点计算机网络
    【计算机网络】趣谈网络协议-测试习题
    【Java】Java注释
    【Java】一个简单的Java应用程序
    【Java】Java关键字、含义
  • 原文地址:https://www.cnblogs.com/iteou/p/5631362.html
Copyright © 2020-2023  润新知