找回密码
 立即注册
查看: 2945|回复: 9

学习《STC8051单片机原理及应用-STC8H8K64U》| 建议送实验箱提高学习效率

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:341
  • 最近打卡:2025-05-06 08:16:33

19

主题

205

回帖

832

积分

高级会员

积分
832
发表于 2023-12-12 14:29:34 | 显示全部楼层 |阅读模式

以前学习了STC的单片机,上半年也跟冲哥学习了STC32的单片机。现在有点时间又来跟陈教授学STC8H8K64U单片机。

上班没有时间,只有下载视频晚上学习。学习过程发现有的视频有的部分没有声音,有的部分掐顿。可以是我下载的视频
出现问题,因为有的视频下载没有办法播放,又重新下载。


第一集:STC最新8051单片机原理及应用—STC8H8K64U单片机发展历程。

心得:了解单片机的发展历史,STC8系列单片机的资源特点,学习单片机需要的条件。

课程特点:理论与实践结合,软件和硬件结合,线上学习和线下实践结合。

STC8系列单片机的资源特点:

  1.超高速8051内核(1T),指令代码完全兼容传统8051单片机。
  2.集成64KB Flash程序存储器、256B内部RAM、8192B内部扩展RAM、1280B数据RAM用于USB。
  3.5个16位可自动重装载的定时/计数器(T0~T4)、可编程时钟输出功能。
  4.至多60根I/O口线。
  5.4个全双工异步串行口(UART)、1个高速同步通信端口(SPI)、1个12C接口、1个USB接口。
  6.15通道12位高速ADC。
  7.8路高级PWM。
  8.DMA、实时时钟RTC、液晶模块接口、专用复位电路和硬件看门狗、高精度R/C时钟等资源。

学习条件:

常用元件:电阻、电容、二极管、三极管、晶体振荡器、数码管、面包板、万能板+套件、试验箱

试验箱的功能介绍。

开发仿真软件、STC程序下载工具




第二集: 点灯大师启航,看到效果再理论
下载的视频不能播放,重新下载。看视频后补充内容,先占位。

心得:了解Keil软件开发单片机的流程,学习了计算机的基本知识。
重新下载视频看后笔记:
1、入门实例
   让灯闪烁
   利用KEIL软件开发程序步骤:
   创建项目
   新建源文件,加入项目中
   编译项目程序文件,生成HEX文件
  利用STCISP工具下载程序到单片机
  运行验证程序
  项目实战:LED闪烁
2、有关基础概念
  计算机中的数制
  数制的概念
  十进制     D
  二进制      B
  十六进制  H

  需要不同进制的原因

  不同数制之间的转换方法
   十进制转二进制:
    整数部分:除二取余法
    小数部分:乘二取整法

  有关基础概念

  常用单位:
  位(bit
  字节(Byte
  数量单位:
  1K=1024
  1M = 1024K
  1G = 1024M
  1T = 1024G
计算机系统:
  计算机软件:操作系统、应用软件
  计算机的微观构成
有关概念
  微处理器、微型计算机和微型计算机系统
  微型计算机的基本结构
  总线:地址总线、数据总线、控制总线
  访问:写入、读出
单片微型计算机
  简称单片机(MCU
单片机厂商和单片机介绍
单片机应用系统



第三集 :数字逻辑与基本数字电路

心得:学习了数字电路的基本知识,了解单片机的应用场景,如何用Keil软件实现仿真。

1、数字逻辑和基本的数字电路
  逻辑电平(高电平和低电平)
  上升沿和下降沿
  逻辑运算
  逻辑变量01
  与(AND  Y=A.B 00,全出1
  或(OR  Y=A+B 11,全00 )   
  非(NOT  Y = ā  10,有01,即取反)  
  异或(XOR   Y=AB  ,输入相同输出为0,输入不同输出为1)


2、单片机的应用场景

单片机的特点:
  集成度高、体积小,北京工业大学TP801
  功耗低,
  可靠性高,看门狗的介绍
  价格低廉,
  应用范围:
  仪器仪表,电表
  工业农业实时监控,
  计算机网络和通信领域,
  家用电器,
  医用设备领域,
  汽车设备领域,
  其他设备,办公设备、商业活动、机械制造、国防航天航空

仿真介绍:
  在线仿真步骤:
    Keil仿真设置
        单片机型号
        使用USB口进行仿真
        将所选目标单片机设置为仿真芯片
    Target => Xtal 11.0592MHz
    Debug => Use STC Monitor-51 Driver
                    Run to main()
    Setting => USB


第四集: 单片机的内部结构,STC补充外围电路设计讲解

心得:熟悉单片机的结构和STC的外围电路。

1、微型计算机的框架结构
2、传统8051单片机的内部结构
3STC8H8K64U单片机的内部介绍
  CPU结构-1
  由运算器和控制器组成。

  运算器:以8位算术/逻辑运算部件ALU为核心,加上通过内部总线而挂在周围的
               暂存器TMP1TMP2、累加器ACC、寄存器B、程序状态标志寄存器PSW 以及
               布尔处理器组成了整个运算器的逻辑思    路。运算器中包含程序状态寄存器PSW
  控制器:CPU的大脑中枢,包括定时控制逻辑,指令寄存器、译码器、地址指针DRTR
               及程序计数器PC、堆栈指针SPRAM地址寄存器、16位地址缓存器等。
  CPU结构-2
        程序状态寄存器
  CPU结构-3
       控制器
       存储器空间及存储器

计算机结构:
   

单片机内部结构:
      
   

一些词汇:
    TMP1、TMP2:暂存器
    ACC:累加器
    B寄存器:用于乘法运算
    PSW:程序状态寄存器
    PC:程序计数器,指向程序存储器
    WDT:看门狗
    LVD:低电压监测
    MDU16:16位硬件乘法器
    LCM:液晶接口
    DPTR:地址指针
    SP:堆栈指针
    SFR:特殊功能寄存器

IO接口:通道(锁存器、驱动器)
中断、串行口、定时/计数器 => P3口
SPI(SS、MOSI、MISO、SCLK)

程序存储器:
    地址范围:0000H~FFFFH
    复位后起始地址:0000H

数据存储器:
    内部数据存储区(内部RAM,00H~FFH,256B)、扩展数据存储区

内部RAM:
1、低128字节:00H~7FH
    基本RAM区(工作寄存器区、位寻址区、用户RAM、堆栈区),可直接寻址和间接寻址,指令:MOV或MOV @Ri
2、高128字节:80H~FFH
    只能间接寻址:MOV @Ri
3、特殊功能寄存器 SFR区:80H~FFH
    只能直接寻址:MOV

程序状态寄存器:


   

内部RAM地址分布:

   



整个存储器地址分布:

   


回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:341
  • 最近打卡:2025-05-06 08:16:33

19

主题

205

回帖

832

积分

高级会员

积分
832
发表于 2023-12-13 08:12:35 | 显示全部楼层
本帖最后由 lclbf 于 2023-12-14 18:00 编辑

第五集:存储器空间及存储器,单片机的引脚

心得:单片机的结构和引脚的深入了解。

存储器空间及存储器
数据存储器
特殊功能寄存器:传统特殊功能寄存器(SFR)、扩展特殊功能寄存器(XFR)


特殊功能寄存器:
    传统特殊功能寄存器(SFR):
        80H~FFH,直接寻址
    扩展特殊功能寄存器(XFR):
        扩展RAM(XDATA)区,P_SW2(BAH)最高位EAXFR置1,
        MOVX A, @DPTR或MOVX @DPTR, A

扩展数据存储区 -> XRAM
    STC8H8K64U 64K地址空间,内部集成了8192B(0000H~1FFFH)
    汇编语言:
        MOVX @DPTR
        MOVX @Ri
    C语言:
        xdata声明
        例如:unsigned char xdata i = 0;
        或者:keil设置:Target -> MemoryModer = Large

单片机的引脚
1、输入输出接口
2、PDIP40
3、最小系统
4、逻辑符号
姚总介绍了为啥没有P1.2脚
5、引脚介绍
电源引脚
   Vcc/AVcc
   Gnd/AGnd
外接晶振引脚
   XTAL1、XTAL0
控制和复位引脚
    NRST(P5.4)
    ALE(P4.5
输入输出引脚
  STC8H8K64U有60个IO脚
        a、开关量的输入输出
        b、复用功能

I/O的作用:进行开关量(高低电平)的输入输出,用在复用功能(总线接口、串行通信接口)
I/O的工作模式:准双向口,推挽输出,高阻输入,开漏模式。由PnM1和PnM0来配置,可以利用STC的ISP软件中的I/O口配置工具来快速配置。
注意:
P3.0 P3.1上电后位弱上拉/准双向口模式。
其余口上电后状态均为高阻输入,用户使用I/O前必须先设置I/O口模式。
上电如果不使用USB进行ISP下载,P3.0,P3.1,P3.2不能同时为低电平,否则会进入USB下载模式而无法运行用户代码。

第六集 :IO口的工作模式,STC8H8K64U的汇编语言程序设计,初步入门



心得:I/O口的用法和汇编语言指令的深入了解以及汇编语言的仿真方法。
I/O口的复用功能:也就是功能引脚切换

I/O口的使用:

  上拉电阻:5.1K、10K
   拉电流和灌电流
   典型的三极管控制电路:

      达林顿管驱动器ULN2803
       场效应管
   I/O口外部状态输入:
        软件设置后加延时、然后再读取状态




单片机应用系统的典型构成
非总线扩展方式的单片机应用系统构成:
总线扩展方式的单片机应用系统构成:



总线扩展方式:
    8位数据总线:P0
    16位地址总线:P2、P0
    写控制(/WR):P4.2
    读控制(/RD):P4.4
    锁存控制(ALE):P4.5

注:P2口没有用到的口线,不能再用做其他功能。



汇编语言:
有助于原理理解。
在嵌入式操作系统的移植过程中,还会用到少许的汇编语言。
姚总介绍汇编语言的重要性。

1、汇编语言程序设计基础知识
伪指令:

  设置起始地址(ORG),
       ORG    addr16


  定义字节(DB,定义8位),
      <标号:>    DB    <项或项表,多个逗号分隔>
        注:项若为数值(00H~FFH),若为字符串(最多80个字符)


  定义字(DW,定义16位),
       <标号:>    DW    <项或项表,多个逗号分隔>
        注:项存放16位数据,低位字节在前,高位在后;常用于建立地址表
        DB、DW一般放在源程序末尾定义



  为标号赋值(EQU),
      <标号>    EQU    数值或表达式

  DATA指令,

     符号名    DATA    表达式
       注:将内部RAM的地址赋值给指定的符号名,表达式(00H~FFH)


  XDATA指令,
       符号名    XDATA    表达式
        注:表达式(0000H~FFFFH)


  定义位命令BIT,
    符号名    BIT    位地址


  文件包含(INCLUDE),
     $INCLUDE (文件名)
        例:$INCLUDE (STC8H.INC)
        备注:
            可以直接引用stc8h.h,但是需要增加$NOMOD51指令
            $NOMOD51
            $INCLUDE (stc8h.h)



  源程序结束(END),


补充:汇编语言中,可以使用C语言的注释方法。

2、汇编语言程序仿真过程
新建工程项目
新建源文件main.asm
点灯程序编写





回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:341
  • 最近打卡:2025-05-06 08:16:33

19

主题

205

回帖

832

积分

高级会员

积分
832
发表于 2023-12-14 09:24:30 | 显示全部楼层
本帖最后由 lcl*** 于 2023-12-14 18:01 编辑
lclbf 发表于 2023-12-13 08:12
第五集:存储器空间及存储器,单片机的引脚

第七集: STC8H8K64U的汇编语言程序设计进阶,宏汇编

心得: 汇编指令能够与之前讲的单片机内部结构结合起来,理解起来更容易了

1、助记符语言描述
  机器语言是用二进制数表示的指令,是CPU唯一能够直接识别和执行的程序形式。
  机器语言的缺点是不直观,不易识别、理解和记忆,因此编写、调试程序时都不采用这种形式的语言,引入了助记符。

    MOV 是数据的传送
    ADD 是数据的相加运算
    ANL 是数据的逻辑与运算

    #8BH,前面带井号,说明是立即数

2、操作码

    (1)数据传送类
            MOV、MOVX、MOVC
            必须指明操作对象从哪来,到哪去。(源地址、目的地址)


    (2)数据操作类
            ADD、SUBB、MUL、DIV
            一般靠运算器完成,一般需要两个操作对象


    (3)程序控制类
            AJMP(SJMP、LJMP)
            JZ、JC、JB(JNZ、JNC、JNB)
            ACALL(LCALL)
            RET

            CJNE

            操作对象是程序计数器PC和一个数


    (4)逻辑操作类
            ANL、ORL、XRL


3、操作数

    可以是数据,也可以是地址

注意:
    a、数据只能是整数,不能是小数;
    b、数据是十六进制且是以字母开头时,该数据应该加一个前导0;
    c、数据前有前缀#,则表示数据是立即数,如果没有前缀#,则数据为直接地址


指令格式及分类

    [标号: ] 操作码助记符 [第一操作数][, 第二操作数][, 第三操作数] [; 注释]

    标号,也用过子程序的名字。
    操作数,可能有0~3个操作数。

    指令的存储格式:
        指令长度:单字节、双字节、三字节


    指令中的符号约定:
        A:累加器ACC
        B:寄存器B
        C:进位借位标志
        addr8:8位内部RAM地址

        bit:位地址,内部RAM中的可寻址位和SFR中的可寻址位
        #data8:8位立即数

        #data16:16位立即数

        @:间接寻址

        rel:8位带符号偏移量

        Rn:当前工作区(0~3区)的工作寄存器,(n=0,1,...,7)

        Ri:可用作地址寄存器的工作寄存器R0和R1

        (X):X寄存器的内容

        ((X)):由X寄存器寻址的存储器单元内容,即X中存放的值作为地址,相当于指针的功能

        ->:数据传送方向

        /:按位取反


寻址方式(7种)

    A、立即寻址
        指令中的源操作数是立即数。

    B、寄存器寻址
        指定寄存器的内容为操作数,对寄存器ACC、B、DPTR和CY寻址时,具体的寄存器已隐含在其操作码中。
        而对选定的8个工作寄存器R7~R0,则用指令操作码的低3位指明所用的寄存器。

    C、直接寻址
        指令中包含了操作数的地址。
        a、特殊功能寄存器SFR;
        b、内部数据RAM中的00H~7FH(128个字节单元);
        c、位寻址空间。

    D、寄存器间接寻址
        指定某一个寄存器的内容作为操作数地址,使用时,前面加“@”表示间接寻址。

    E、变址寻址
        由偏移量寄存器和基址寄存器DPTR或PC相加所得结果作为操作数地址。
        例:MOVEC A, @A + PC

    F、相对寻址
        主要用于相对跳转指令。
        注:该偏移量有正负号,所转移的范围为相对于当前PC值的 -128~+127 之间。

    G、位寻址
        对位地址空间的每一位进行运算和传送。

备注:
    00H~1FH:工作寄存器区(32个单元,分为4组,每组R0~R7)
    20H~2FH:可位寻址区(00H~FFH,256个位)


   操作数是一条指令操作的对象。操作数可以是数据,也可以是地址。不同功能的指令,操作对象形式不同。
   不同指令的操作数特点如下:
     1. 传送类指令,必须指明操作对象从哪丿L来(源地址),传到何处去(目的地址)。
     2. 数据操作类指令,一般靠运算器完成,数据操作类指令的对象一般是两个。
     3. 程序控制类指令的操作对象是程序计数器pc和一个数。
     4. 逻辑操作类有单操作数和双操作数之分。
注意事项:
1. 数据只能是整数,不能是小数。
2. 当汇编指令中的数据是十六进制且是以字母开头时,该数据应加个前导0,以表示后面的字母不是变量而是数字。
3. 在8051内核单片机中,一个数据的前面有前缀#号则表示后面的数据是立即数,如果数据的前面没有#号,则说明该数据表示的是直接地址

第八集 :汇编指令一 数据传送 逻辑运算 算术运算

学习心得:陈教授对汇编语言指令讲得详细,并且举例仿真验证。对汇编语言有重新认识。

数据传送指令简介


对程序状态字PSW一般不产生影响
    分为三种:
        数据传送
        数据交换
        栈操作

传送指令:MOV
    主要是内部数据存储器和特殊功能寄存器
    MOV <目的字节>, <源字节>

    MOV    A, #data8            ; (A) <- #data8
    MOV    addr8, #data8      ; (addr8) <- #data8
    MOV    @Ri, #data8         ; ((Ri)) <- #data8

    MOV    Rn, #data8           ; (Rn) <- #data8

    @符号表示间接寻址,Ri中 i=0或 i=1

外部数据传送指令:MOVX
   外部数据存储器(或扩展并行I/O口)与累加器A传送  MOVX
    只能使用寄存器间接寻址,有两种方式:
    1、用R1或R0进行寄存器间接寻址
        需要使用P2口输出高8位地址,先给P2和Ri赋值,然后执行MOVX
        MOVX    A, @Ri        ;(A) <- ( (P2 Ri) )
        MOVX    @Ri, A        ;( (P2 Ri) ) <- (A)
    2、用16位的数据存储器地址指针DPTR进行寄存器间接寻址
        能遍历64KB的外部存储器的任何单元
        MOVX    A, @DPTR
        MOVX    @DPTR, A

程序存储器向累加器传送指令:MOVC
      程序存储器向累加器A传送指令  MOVC
      MOVC    A, @A + PC            ;PC <- (PC) + 1, (A) <- ( (A) + (PC) )
      MOVC    A, @A + DPTR        ;(A) <- ( (A) + (DPTR) )
      (变址寻址,PC或DPTR作为基址寄存器)
   
数据交换指令
   1、字节交换指令
         XCH    A, addr8        ;(A) <--> (addr8)
         XCH    A, @Ri          ;(A) <--> ( (Ri) )

         XCH    A, Rn            ;(A) <--> (Rn)


    2、半字节交换指令(低半字节交换)
         XCHD    A, @Ri        ;(A低三位字节) <--> ( (Ri)低三位字节 )

字节交换指令:XCH
         字节交换指令
         XCH    A, addr8        ;(A) <--> (addr8)
         XCH    A, @Ri          ;(A) <--> ( (Ri) )

         XCH    A, Rn            ;(A) <--> (Rn)

半字节交换指令:XCHD
        半字节交换指令(低半字节交换)
        XCHD    A, @Ri        ;(A低三位字节) <--> ( (Ri)低三位字节 )

堆栈操作指令:
        概念:断点地址、压栈(保护现场  PUSH)、出栈(恢复现场  POP)
        PUSH    addr8        ;(SP) <- (SP) + 1, ( (SP) ) <- (addr8)
        POP      addr8        ;(addr8) <- ( (SP) ), (SP) <- (SP) - 1
   
截图202312140957551925.jpg
传送指令注意事项:
    1、向累加器传送数据时,会影响PSW中的P标志
    2、执行传送指令时,源地址中的内容不变
    3、特殊功能寄存器SFR只能使用直接寻址
   4、80H~FFH单元只能使用@Ri间接寻址方式
   5、累加器A压栈和出栈时,应使用 PUSH ACC 或者 POP ACC。(* 使用A表示寄存器寻址,使用ACC表示直接寻址)

双操作数的逻辑指令:

算数运算指令:



第九集: 汇编指令二(位操作 控制转移)

心得:汇编语言操作指令的学习。

位操作指令以位为处理对象,分别完成位传送、位状态控制、位逻辑操作、位条件转移等功能。

位操作指令:
MOV SP #80H,
姚总对为啥用80H做出了原因说明。

位传送,位状态控制、位逻辑操作、位条件转移等17条。
    (1)、直接使用位地址。
    (2)、写成“字节地址.位号”,例如:0B8H.0
    (3)、位寄存器的定义名称,例如C、EA等
    (4)、对于位寻址寄存器,可以用“字节寄存器名.位号”,例如P1.0、PSW.4
    (5)、伪指令事先定义的符号地址,EQU

1、位数据传送指令
    MOV    C, bit        ;(C) <- (bit)
    MOV    bit, C        ;(bit) <- (C)
    注:其中一个操作数必须为累加器(进位标志CY)

2、位状态控制指令

    位状态控制指令包括位的清零、取反和置位

    位清零指令
    CLR    bit        ;(bit) <- 0
    CLR    C          ;(C) <- 0

    位求反指令
    CPL    bit        ;(bit) <- (/bit)
    CPL    C          ;(C) <- (/C)

    位置位指令
    SETB    bit        ;(bit) <- 1
    SETB    C          ;(C) <- 1


3、位逻辑操作

    位逻辑与
    ANL    C, bit
    ANL    C, /bit

    位逻辑或
    ORL    C, bit
    ORL    C, /bit


4、位条件转移

     一般在rel的位置写入欲跳转到的标号地址,偏移量由汇编程序自动进行计算。这样做有两个好处,一是程序的可读性好,二是不必进行偏移量的计算。

    判断进位标志C
    JC    rel        ;若(CY) == 1, 则(PC) <- (PC) + rel
    JNC  rel        ;若(CY) == 0, 则(PC) <- (PC) + rel

    判断直接寻址位
    JB    bit, rel
    JNB  bit, rel
    JBC  bit, rel        ;若(bit) == 1, 则(PC) <- (PC) + rel, (bit) <- 0

5、控制转移类指令


6、程序转移指令,子程序调用和返回指令

    程序转移指令
    LJMP    addr16
    AJMP    addr11
    SJMP    rel
    JMP      @A + DPTR

    JZ      rel
    JNZ    rel
    CJNZ
    DJNZ

    子程序调用
    LCALL    addr16
    ACALL    addr11
    RET                         ;子程序返回

    其他
    RETI        ;中断返回
    NOP         ;空操作


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:341
  • 最近打卡:2025-05-06 08:16:33

19

主题

205

回帖

832

积分

高级会员

积分
832
发表于 2023-12-15 08:05:22 | 显示全部楼层
本帖最后由 lcl*** 于 2023-12-15 08:44 编辑
lclbf 发表于 2023-12-14 09:24
第七集: STC8H8K64U的汇编语言程序设计进阶,宏汇编

心得: 汇编指令能够与之前讲的单片机内部结构结合 ...


第十集 :汇编语言程序设计的一般步骤和基本框架


心得:详细,结合仿真讲解。对于初学的我来说,听一次不不懂,要多几次学习才 能理解。
汇编语言程序设计的一般步骤和基本框架

1、汇编语言程序设计的一般步骤
    A、分析课题,确定算法或解题思路
    B、根据算法或思路画出流程图
    C、根据算法要求分配资源,包含内部RAM、定时器、中断等
    D、根据流程图编写程序
    E、上机调试源程序,进而确定源程序软件模拟和在线调试(硬件仿真调试)
       对于复杂的程序可以按照功能分为不同的模块,按模块功能确定结构编写程序时采用模块化的程序设计方法。


2、汇编语言的程序框架

   
  • $NOMOD51
  • $INCLUDE (STC8H.H)
  • ;...这里可以编写程序中用到的一些符号定义(使用EQU、DATA、BIT等伪指令)
  •             ORG     0000H
  • START:    LJMP    MAIN            ;跳转到主程序
  •             ORG     0003H
  •             LJMP    INT0_ISR      ;外部中断0入口(ISR Interrupt Service Rowtine 中断服务程序)
  •             ORG     000BH
  •             LMP     T0_ISR          ;定时器0中断入口
  •             ORG     0013H
  •             LJMP    INT1_ISR      ;外部中断1入口
  •             ORG     001BH
  •             LMP     T1_ISR          ;定时器1中断入口</div>
  •             ORG     0023H
  •             LJMP    UART1_ISR    ;串口1中断入口</div>
  •             ......
  •             ORG     0200H
  • MAIN:     MOV     SP, #80H        ;设置堆栈指针(可根据情况修改)
  •             ...... ;初始化内存区域内容
  •             ...... ;设置有关特殊功能寄存器(SFR)的控制字
  •             ...... ;根据需要开放相应的中断控制
  • MAINLOOP:
  •             ;主程序循环
  •             LJMP    MAINLOOP
  • INT0_ISR:                      ;外部中断0服务子程序
  •             ......                 ;根据需要填入适当的内容
  •             RETI
  •             ......                 ;编写其他子程序或者定义程序中所用的常数
  •             END

   注意:姚总建议 没有用到的中断服务程序,使用复位程序,提高可靠性

程序流程图:根据实现功能编写流程图,规划逻辑
    程序流程图可以简洁清晰地将程序分支走向标示清楚,说明流程图的重要性。


流程图的结构:
循环程序的设计


2、典型汇编语言程序设计举例:
  分支程序设计
  查表程序设计
  循环程序设计
  定点数运算子程序设计
  数据排序程序设计
  代码转换程序设计


第十一集: 单片机C语言程序设计导入一


心得:对C语言的基础知识讲解比较详细

单片机的C语言和传统的C语言有区别
1、C51对ANSI C的扩展
   ANSI C是标准的C语言


  C51扩展的关键字 19个

  _at_ sbit sfr bit sfr16 idata bdata xdata pdata data code clien small compact large using reentrant interrupt _task
变量或数据类型


A、bit型变量
    可用于变量类型和函数声明、函数返回值等,存储于内部RAM的20H~2FH单元中。
    注意:位不能声明为指针
             不能有bit数组

B、可位寻址区声明
    使用sbit声明可独立访问可位寻址对象的位。
    sbit声明要求基址对象的存储器类型为“bdata”。
    位的位置(^操作符号后的数字)的最大值依赖于制定的基类型。
    可位寻址对象的声明只能放到main函数的外部作为全局变量使用。

    例如:
    int bdata bittest _at_ 0x20;
    sbit bit0 = bittest^0;
    sbit bit15 = bittest^15;

C、特殊功能寄存器(SFR)
    sfr:字节寻址
    语法:
    sfr sfr_name = int_constant;
    例如:
    sfr P0=0x80;

    sfr16:字寻址
    sfr16 DPTR = 0x82;        // 指定DPTR的地址DPL=0x82,DPH=0x83

    sbit:位寻址
    sbit bitname = sfr_name^bit_number;


  内存区域指定
程序存储器
code关键字表示将变量保存到程序存储区。可以使用code定义表格常数,节省内部RAM使用

内部RAM
data:直接寻址区,内部RAM的低128字节,地址范围为00H~7FH。在声明变量时,默认都保存在该区域
idata:间接寻址区,包括整个内部RAM区256字节,地址范围为00H~0FFH
bdata:可位寻址区,地址范围为20H~2FH


外部数据存储器
外部RAM视使用情况可由以下关键字标识:
xdata:可指定多达64KB的外部直接寻址区,地址范围0000H~0FFFFH,在程序中,需要声明较人的数组时,可以使用xdata关键字将变量数组保存到扩展RAM中。例如:
unsigned char xdat aarr[300][2];
pdata:能访问1页(256B)的外部RAM(很少用)。姚总建议不用


Keil C51指针

    以下声明pt为指向外部RAM中unsigned char数据的指针
    unsigned char xdata * pt;               // pt本身依存储模式存放
    unsigned char xdata * data pt;        // pt被保存在内部RAM中
    unsigned char xdata * xdata pt;        // pt被保存在外部RAM中

    基于存储器的指针
    char data * str;        // str指向data区中的char型数据
    int xdata * pow;       // pow指向外部RAM的int型整数

注:volatile 关键字,告诉编译器不要进行编译优化,一般用于声明特殊功能寄存器。


C51 对函数的扩展
A.中断函数声明
   中断函数通过使用interrupt关键字和中断号来声明。中断号高速编译器中断服务程序的入口地址。
   串行口1的中断函数声明如下
   void UART1_ISR (void) interrupt 4
   {/*代码*/}
   其中 interrupt 4说明中断号为4.中断函数具体执行哪个中断,与中断号有关,与函数名无关


B.指定工作寄存器区
   当需要指定函数中使用的工作寄存器区时,使用关键字 using 后跟0~3的数,对应着工作寄存器0~3区
   unsigned char GetKey(void) using 1 {/*代码*/}


C.指定存储模式
   用户可以使用 small、compact及large说明存储模式
   void disp_data(void) small {/*代码*/}
   small说明函数内部变量全部使用内部RAM。提高运行速度


2、单片机C语言程序中的常用运算

   关系运算符
大于   >
   大于等于 >=
   小于   <
   小于等于 <=
   等于   ==
   不等于  !=
逻辑运算符
  与 &&
  或 ||
  非 !
位运算
  位与 &
  位或 |
  取反 ~
  左移 <<
  右移 >>


3、STC8H8K64U单片机C51程序框架
   





第十二集 :单片机C语言程序设计导入二

心得:通过两个程序更详细地介绍了C语言的应用,强调规范,进一步介绍了仿真,说明仿真的重要性。

多用while,少用do while。
延时函数中用data的原因,姚总和陈教授说明了使用的原因

头文件的介绍。


仿真方法


LED灯闪烁的不同写法:

  A:
   P60 = 1;
    Delay500ms();
    P60 = 0;
    Delay500ms();


B:
    for(i,i<8,i++)
   {
      P6 = ~LEDdata;
     LEDdata <<1;
     if(LEDdata == 0)
     LEDdata = 0x01;
     Delay500ms();
   }



IAP是使用和介绍

手把手结合仿真方法介绍两个程序程序:


A、流水灯
B、读写EEPROM



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:341
  • 最近打卡:2025-05-06 08:16:33

19

主题

205

回帖

832

积分

高级会员

积分
832
发表于 2023-12-16 07:58:23 | 显示全部楼层
本帖最后由 lcl*** 于 2023-12-18 08:26 编辑
lclbf 发表于 2023-12-15 08:05
第十集 :汇编语言程序设计的一般步骤和基本框架

心得:详细,结合仿真讲解。对于初学的我来说,听一次 ...

第十三集: 中断原理及工作机制一

心得:陈教授用生活中的例子说明中断的工作原理,简单易懂。


1、中断的相关概念
    中断源
    中断响应
    中断服务
    中断返回
    中断优先级
    优先级别,中断嵌套


中断的优势:
    A、解决快速CPU和速度外设之间的矛盾
    B、及时处理控制系统中许多随机参数和信息
    C、具备处理故障的能力,提高机器自身的可靠性
开中断和关中断
保护现场和恢复现场
堆栈:后进先出
中断的撤出


2、STC8H8K64U单片机的中断源


STC8H8K64U比传统8051单片机多了三个定时器中断,且中断最高支持1T24位自动重载,可实现1秒的精确中断间隔

有44中断源:
    5个外部中断
    5个定时/计数器溢出中断
    4个异步串口中断
    1个串行外设接口中断
    1个I2C中断
    1个USB中断
    1个模数转换中断
    1个低压检测中断
    2个PWM中断
    8个端口中断
    12个DMA中断
    1个RTC中断
    1个LCM中断

中断源有4个优先级


中断查询次序(中断号)


中断标志位


姚总补充学习方法。

第十四集 :中断原理及工作机制二



中断流程:
    总中断EA打开 ——> 需要用的外设中断打开 ——>如有需要就设置中断优先级 ——> 中断处理函数(相应中断标志位 如需清零操作),尽量简短,不要用延时函数

中断标志位
单片机中断的处理过程:
   1、中断源有请求
   2、中断允许寄存器IE相应位置1
   3CPU中断开放(EA = 1
单片机对中断优先级的处理原则:
   1、不同级的中断源同时申请中断时,先高后低。
   2、处理低级中断又收到高级中断请求时,停低转高。
   3、处理高级中断却收到低级中断请求时,高不理睬低。
   4、同一级的中断源同时申请中断时事先确定。
下面情况中断不会响应:
   1、中断允许总控制位EA=0或者发出中断请求的中断所对应的中断允许控制位为0.
   2CPU正在执行一个同级或者高一级的中断服务程序。
   3、当前执行的机器周期不是指令周期的最后一个机器周期。
   4、正在执行的指令是中断返回指令RETI或者是访问专用寄存器IE或者IP的指令,CPU至少要再执行一条指令才能响应中断请求。
中断服务程序包含四部分:保护现场、中断服务、恢复现场、中断返回
中断请求的撤出
中断开发举例:


第十五集 :定时器原理及STC拓展

心得:通过手册对定时器的原理做了详细的讲解,姚总也做了补充说明


STC8H8K64U单片机的定时/计数器结构
   定时/计数器的应用
   在自动控制系统或者自动检测系统中。


1、定时器/计数器的作用:
    A、定时控制
    B、用作分频器和用于事件记录
    C、可编程时钟输出功能,用于给外部器件提供时钟
    D、可用作串口的波特率发生器


2.定时/计数器的一般结构


STC8H8K64U单片机的定时/计数器相关寄存器
    1、单片机CPU和定时器相关寄存器
    2、定时/计数器的工作模式
T2的工作模式固定为16位自动重装模式

    16位模式时:
    T0 工作在 1T 模式(AUXR.7/T0x12=1)时的输出时钟频率 = (SYSclk)/(TM0PS+1)/(65536-[RL_TH0, RL_TL0])/2
    T0 工作在 12T 模式(AUXR.7/T0x12=0)时的输出时钟频率 = (SYSclk)/(TM0PS+1)/12/(65536-[RL_TH0, RL_TL0])/2
    8位模式时:
   T0 工作在 1T 模式(AUXR.7/T0x12=1)时的输出时钟频率 = (SYSclk)/(TM0PS+1)/(256-TH0)/2
   T0 工作在 12T 模式(AUXR.7/T0x12=0)时的输出时钟频率 = (SYSclk)/(TM0PS+1)/12/(256-TH0)/2






回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:59
  • 最近打卡:2025-05-06 09:22:11

718

主题

1万

回帖

1万

积分

管理员

积分
15706
发表于 2023-12-16 19:18:08 | 显示全部楼层
建议送实验箱提高学习效率
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:341
  • 最近打卡:2025-05-06 08:16:33

19

主题

205

回帖

832

积分

高级会员

积分
832
发表于 2023-12-18 08:27:33 | 显示全部楼层
本帖最后由 lcl*** 于 2023-12-18 08:29 编辑
lclbf 发表于 2023-12-16 07:58
第十三集: 中断原理及工作机制一

心得:陈教授用生活中的例子说明中断的工作原理,简单易懂。

第十六集 :定时器原理及STC拓展二

定时/计数器量程的扩展
    1、定时器的最大能力
    2、定时器定时量程的扩展
       A、软件的扩展方法
      B、硬件的扩展方法


姚总建议可以多个定时器串联来延长定时时间,也可以用单片机的RTC来长定时

定时/计数器应用举例
编程要点:
   1、能正确初始化包含写入控制字和进行时间常数的计算并装入。
   2、中断服务程序的编写

第十七集: 串行口原理一


串行通信的相关概念


注意通信和通讯的区别:


基本的数据通信方式有两种:
   A、并行通信
   B、串行通信

串行通信的分类
   1、按照通信格式的同步方式分:异步和同步。
   2、按照数据的传送方向分:单工方式,双工方式,半双工方式
通用异步接收器/发送器UART
   1、串行接口
   2、通用异步接收器/发送器UART的结构
   3、通用异步接收器/发送器UART的出错标志
   4、通用异步接收器/发送器UART的同步过程


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:341
  • 最近打卡:2025-05-06 08:16:33

19

主题

205

回帖

832

积分

高级会员

积分
832
发表于 2023-12-19 08:23:24 | 显示全部楼层
本帖最后由 lcl*** 于 2023-12-19 08:25 编辑
lclbf 发表于 2023-12-18 08:27
第十六集 :定时器原理及STC拓展二

定时/计数器量程的扩展

第十八集: 串行口原理二

STC8H8K64U单片机的串口简介



4个全双工串行通信接口

STC8H8K64U的UART接口的寄存器


   1、串口控制寄存器SCON
        实现多机通信的过程
   2.串口2控制寄存器S2CON
   3.串口3控制寄存器S3CON
   4.串口4控制寄存器S4CON
   5、掉电控制寄存器PCON
   6、辅助寄存器AUXR
   7、从机地址控制寄存器
   8、数据缓冲器

STC8H8K64U单片机的串口工作模式




第十九集: 串口通信,多机通信


1、波特率的设定


工作模式


编程注意:当定时器作为波特率发送器使用时,应禁止定时器产生中断。典型用法是将定时器设置为工作在自动重装入时间常数的定时方式。设置完成后,启动定时器。


2、UART的应用举例


通信方式:查询方式、中断方式、DMA方式


编程要点:
   1、设置串口工作模式。
   2、 设置正确的波特率。
   3、设置串口的中断优先级。
   4、将发送数据送入SBUF.
   5、编制串行中断服务程序,在中断服务程序中要清出中断标志位。



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:341
  • 最近打卡:2025-05-06 08:16:33

19

主题

205

回帖

832

积分

高级会员

积分
832
发表于 2023-12-20 07:55:39 | 显示全部楼层
lcl*** 发表于 2023-12-19 08:23
第十八集: 串行口原理二

STC8H8K64U单片机的串口简介

第二十集 :SPI接口的结构
STC8H8K64U单片机SPI接口的结构

简介:操作模式:主模式和从模式

   1、SPI接口的信号
        MISO、MOSI、SCLK、/SS4(低电平有效)
   2、SPI接口的数据通信方式
       A、单主机-单从机方式
       B、双器件方式
       C、单主机-多从机方式
   3、SPI接口的数据通信过程
   4、SPI中断
   5、写冲突
   6、数据格式
   7、SPI时钟预分频选择

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:341
  • 最近打卡:2025-05-06 08:16:33

19

主题

205

回帖

832

积分

高级会员

积分
832
发表于 2023-12-24 08:06:42 | 显示全部楼层
本帖最后由 lclbf 于 2023-12-24 08:08 编辑

第二十一集: SPI接口的通信

STC8H8K64U单片机SPI接口寄存器
       SPICTL、SPSTAT、SPDAT
STC8H8K64U单片机SPI接口的应用举例
   1、SPI初始化
       A、设置与SPI接口有关的I/O口工作模式
       B、通过SPI控制寄存器SPCTL设置相关功能
       C、清零寄存器SPSTAT中的标志位
       D、开放SPI中断
       E、开放总中断
2、SPI中断服务函数

第二十二集 :I2C总线介绍一

I2C总线的相关概念
1、简介
2、特点
3、术语


I2C总线的工作原理
1、同一个时钟工作
2、两根线SDA和SCL
3、所有器件并联都是开漏模式,需要上拉电阻
4、传输条件:开始条件,停止条件
5、每个器件都有唯一的地址

  A、控制字节
  B、写操作
  C、读操作


I2C总线的基本操作


回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-6 18:05 , Processed in 0.133610 second(s), 107 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表