找回密码
 立即注册
查看: 1636|回复: 22

陈桂友教授《STC8051单片机原理及应用-STC8H8K64U》学习记录 | 已建议送实验箱

[复制链接]
  • TA的每日心情
    开心
    2024-4-25 11:42
  • 签到天数: 31 天

    [LV.5]常住居民I

    4

    主题

    27

    回帖

    298

    积分

    中级会员

    积分
    298
    发表于 2023-7-20 17:43:51 | 显示全部楼层 |阅读模式
    之前就已经了解STC的单片机,还买了最新的STC单片机的书,还看了一点别的老师的视频课程,但是很惭愧,没有坚持下去,至于为啥没坚持下去,原因也比较复杂,多种原因组合起来,导致最终没有持续学下去。偶然的机会,得知陈教授开设了一个暑期线上培训班,突然又燃起了心中的热情,希望再一次重新开始学习STC单片机。

    初次听陈教授的课,感觉陈教授讲课,语言条理清晰,普通话标准,感受还是不错的。只可惜上课的时间正好是上班的时间,只能带着耳机,也没法看上课的屏幕,边干活,边听课,实在是没有听到多少东西,不过好在课程是有回放的,到时候回放里重新看一看。
    第一次课,陈教授讲了许多单片机的历史,确实刷新了自己的认知,然后还讲了单片机点灯的知识,不过对于我来说,点灯可能很简单了,因为已经点过各种单片机的灯了。
    我希望能通过这次学习STC单片机的过程,能同时将汇编语言和C语言学好,学会硬件通讯的各种协议,比如IIC,SPI这些,我只知道这些东西,但其细节可能不是那么清楚。
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-25 11:42
  • 签到天数: 31 天

    [LV.5]常住居民I

    4

    主题

    27

    回帖

    298

    积分

    中级会员

    积分
    298
     楼主| 发表于 2023-7-22 21:21:10 | 显示全部楼层
    今天又看了一下回放的第一集,顺便做了一下笔记,把一些自己记不住的东西记录一下:

    单片机的历史经历了以下时期:
        Z80时期
        8086时期
        Intel 8081
        Intel 8051
        Intel 8751
        Atmel AT89C51
        STC89C51
        STC12系列、STC15系列
        STC8系列(感觉还应该加上STC32系列)

    STC8的代表作:STC8H8K64U,它具有以下资源:
        64KB Flash
        256B RAM
        8192B 内部扩展RAM
        280B 用于USB的RAM
        5个16位定时/计数器(T0~T4)(可自动重装载)
        至多60根I/O口线
        4个USART
        1个SPI
        1个IIC
        1个USB
        15通道12位高速ADC
        8路PWM
        其他(DMA、RTC等)

    比我上学那会的51单片机要强大多了
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-25 11:42
  • 签到天数: 31 天

    [LV.5]常住居民I

    4

    主题

    27

    回帖

    298

    积分

    中级会员

    积分
    298
     楼主| 发表于 2023-7-23 21:30:47 | 显示全部楼层
    第二个视频:LED点灯

    点灯的步骤:
    1、配置IO口工作模式
    2、配置IO口的值
    问题:IO口的4种工作模式的区别和使用场景,不是,十分清楚
    其他:陈教授引用的头文件是stc8.h,在我的环境下无法找到该文件,我引入的头文件是stc8h.h

    STC_ISP软件的使用:
        确保芯片型号选择正确;
        打开程序文件
        按住INT0,再按电源键,松开电源键,再松开INT0
        扫描串口出出现HID1
    小工具:软件延时计算器

    数值转换:
        十进制:D
        二进制:B
        十六进制:H

    十进制转二进制:
        整数部分:除二取余法
        小数部分:乘二取整法

    总线分为:地址总线、数据总线、控制总线
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    550

    主题

    9349

    回帖

    1万

    积分

    管理员

    积分
    13928
    发表于 2023-7-28 10:44:57 | 显示全部楼层
    认真学习认真总结,为祖国强大家庭幸福而学习的  勤劳的中国人啊 !
    必须立即【免费+包邮】送 您STC8H8K64U实验箱


    您主动联系如下我们的同事,帮您申请
    【免费+包邮】 送/申样/采购 可加 如下 QQ微信联系
    加STC华南区客服刘经理QQ: 3398500488 ;微信:18106296592  要求 【免费+包邮】 送, 还免费教仿真  
    加STC华南区客服曹经理QQ:1933892258 ;微信:18106296595 要求 【免费+包邮】 送, 还免费教仿真
    加STC华东区客服聂经理QQ:2593903262;微信:18106296598  要求 【免费+包邮】 送, 还免费教仿真
    加STC西北区客服孙经理QQ: 1347154513 ;微信:18106296593  要求 【免费+包邮】 送, 还免费教仿真
    加STC华北区客服石经理QQ: 1638975601 ;微信:19952583876  要求 【免费+包邮】 送, 还免费教仿真
    加STC华中区客服唐经理QQ:2571301708 ;微信:18106296589 要求 【免费+包邮】 送, 还免费教仿真
    加STC东北区客服张经理QQ:3141888640 ;微信:19952583265   要求 【免费+包邮】 送, 还免费教仿真
    加STC西南区客服张经理QQ:3141888640 ;微信:19952583265   要求 【免费+包邮】 送, 还免费教仿真
    工作时间:  8:30-12:00,13:00-17:30(周一 到 周五, 法定节假日除外)

    【免费+包邮】 送/申样/采购传统电话热线:0513-55012928、0513-55012929、0513-55012966
    工作时间:  8:30-12:00,13:00-17:30(周一 到 周五, 法定节假日除外)








    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-25 11:42
  • 签到天数: 31 天

    [LV.5]常住居民I

    4

    主题

    27

    回帖

    298

    积分

    中级会员

    积分
    298
     楼主| 发表于 2023-7-30 14:13:07 | 显示全部楼层
    第三集学习记录

    1、逻辑电平:高电平、低电平
    2、上升沿、下降沿
    3、逻辑0,逻辑1

    逻辑运算是按位运算,没有进位和借位的问题,也没有符号问题

    逻辑运算:
    1、逻辑与(AND)
        运算符号:· 或者 ∧
        Y = A · B

    逻辑与(符号)

    逻辑与(符号)


    2、逻辑或(OR)

        运算符号:+ 或者 ∨
        Y = A + B

    逻辑或(符号)

    逻辑或(符号)


    3、逻辑非(NOT)
        Y = ā

    逻辑非(符号)

    逻辑非(符号)


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



    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-25 11:42
  • 签到天数: 31 天

    [LV.5]常住居民I

    4

    主题

    27

    回帖

    298

    积分

    中级会员

    积分
    298
     楼主| 发表于 2023-7-30 18:01:14 | 显示全部楼层
    第四集学习记录:单片机的内部结构

    计算机结构:
       截图_选择区域_20230730141706.png

    单片机内部结构:
           截图_选择区域_20230730141758.png
       截图_选择区域_20230730143823.png

    一些词汇:
        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

    程序状态寄存器:

        截图_选择区域_20230730144925.png

    内部RAM地址分布:

       截图_选择区域_20230730172941.png



    整个存储器地址分布:

       截图_选择区域_20230730145635.png


    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-25 11:42
  • 签到天数: 31 天

    [LV.5]常住居民I

    4

    主题

    27

    回帖

    298

    积分

    中级会员

    积分
    298
     楼主| 发表于 2023-8-5 12:41:23 | 显示全部楼层
    第五集视频学习:


    特殊功能寄存器:
        传统特殊功能寄存器(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、电源引脚
            Vcc/AVcc
            Gnd/AGnd
        2、外接晶体引脚
            XTAL1、XTAL0
        3、控制和复位引脚
            NRST(P5.4)
            ALE(P4.5)
        4、输入输出引脚(I/O脚)
            STC8H8K64U有60个IO脚
            a、开关量的输入输出
            b、复用功能

    IO工作模式
        1、准双向口/弱上拉模式
        2、推挽输入/强上拉模式
        3、仅为输入(高阻)
        4、开漏模式(需外接上拉电阻)
        使用PnM1和PnM0寄存器配置

    P3.0和P3.1 上电默认准双向口/弱上拉模式
    除此之外,上电默认高阻输入,使用前需配置模式




    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-25 11:42
  • 签到天数: 31 天

    [LV.5]常住居民I

    4

    主题

    27

    回帖

    298

    积分

    中级会员

    积分
    298
     楼主| 发表于 2023-8-8 08:51:29 | 显示全部楼层
    本帖最后由 cuisheng 于 2023-8-8 19:05 编辑

    第六集视频学习


    IO口的复用功能:
        比较重要的是P3口:外部终端输入、串口1(程序下载仿真调试)

    1、上拉电阻:5.1K、10K
    2、拉电流、灌电流
    3、三极管控制电路
        达林顿管驱动器ULN2803
        场效应管
    4、I/O外部状态输入
        软件设置后加延时、然后再读取状态

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

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

    --------------------------------------------------------------------
    汇编语言学习记录:

    一、伪指令
        1、设置起始地址
            ORG    addr16

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

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

        4、为标号复制EQU
            <标号>    EQU    数值或表达式

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

        6、XDATA指令

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


        7、定义位命令BIT
            符号名    BIT    位地址

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

        9、源程序结束
            END


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

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-25 11:42
  • 签到天数: 31 天

    [LV.5]常住居民I

    4

    主题

    27

    回帖

    298

    积分

    中级会员

    积分
    298
     楼主| 发表于 2023-8-8 20:43:59 | 显示全部楼层
    本帖最后由 cuisheng 于 2023-8-8 20:45 编辑

    第7集视频学习:



    1、助记符语言描述

        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种)

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

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

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

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

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

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

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

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

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-25 11:42
  • 签到天数: 31 天

    [LV.5]常住居民I

    4

    主题

    27

    回帖

    298

    积分

    中级会员

    积分
    298
     楼主| 发表于 2023-8-9 19:17:13 | 显示全部楼层
    本帖最后由 cuisheng 于 2023-8-11 22:51 编辑

    第8集视频学习

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

    1、传送指令: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

    汇编语言测试模板:

    1. $NOMOD51
    2. $include (stc8h.h)
    3.     ORG        0000H
    4.     LJMP       MAIN        ;跳转到主程序
    5.     ORG        0100H
    6. MAIN
    7.     MOV        SP, #70H
    8. LOOP:
    9.     LJMP       LOOP
    10.     END
    复制代码

    观察内部RAM的内容,Address:D:0
    查看IO口的内容:Menu: Peripherals -> I/O-Ports -> Port X

    * Rn、内部RAM、SFR与累加器A传送数据。共6条:
    MOV    A, addr8        ;(A) <- (addr8)
    MOV    A, @Ri           ;(A) <- ( (Ri) )
    MOV    A, Rn             ;(A) <- (Rn)
    MOV    addr8, A        ;(addr8) <- (A)
    MOV    @Ri, A          ;( (Ri) ) <- (A)

    MOV    Rn, A            ;(Rn) <- (A)


    手工修改Memory内容,鼠标右键,单击Modify Memory at D:0xXX

    MOV    R1, #82H
    MOV    A, @R1
    内部80H~FFH的RAM单元,只能使用如上方式的间接寻址方式

    * Rn、SFR和内部RAM之间的数据传送,共5条:
    MOV    addr8, addr8        ;(addr8目) <- (addr8源)
    MOV    addr8, @Ri          ;(addr8) <- ( (Ri) )

    MOV    addr8, Rn            ;(addr8) <- (Rn)

    MOV    @Ri, addr8          ;( (Ri) ) <- (addr8)

    MOV    Rn, addr8            ;(Rn) <- (addr8)


    * 目标地址传送
    MOV    DPTR, #data16

    * 外部数据存储器(或扩展并行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

    Keil仿真,查看外部存储单元数据:X:0100H

    * 程序存储器向累加器A传送指令  MOVC
    MOVC    A, @A + PC            ;PC <- (PC) + 1, (A) <- ( (A) + (PC) )
    MOVC    A, @A + DPTR        ;(A) <- ( (A) + (DPTR) )
    (变址寻址,PC或DPTR作为基址寄存器)

    注:保护DPTR的内容:
            PUSH    DPH
            PUSH    DPL        ;保护DPTR
            ......
            POP      DPL
            POP      DPH        ;恢复DPTR

            调用子程序:    LCALL    子程序名

    * 数据交换指令
        1、字节交换指令
             XCH    A, addr8        ;(A) <--> (addr8)
             XCH    A, @Ri          ;(A) <--> ( (Ri) )

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


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

    * 栈操作指令
        概念:断点地址、压栈(保护现场)、出栈(恢复现场)
        PUSH    addr8        ;(SP) <- (SP) + 1, ( (SP) ) <- (addr8)
        POP      addr8        ;(addr8) <- ( (SP) ), (SP) <- (SP) - 1

    数据传送类指令注意事项:
    1、向累加器传送数据时,会影响PSW中的P标志
    2、执行传送指令时,源地址中的内容不变
    3、特殊功能寄存器SFR只能使用直接寻址
    4、80H~FFH单元只能使用@Ri间接寻址方式
    5、累加器A压栈和出栈时,应使用 PUSH ACC 或者 POP ACC。(* 使用A表示寄存器寻址,使用ACC表示直接寻址)

    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-9 11:22 , Processed in 0.084572 second(s), 71 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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