找回密码
 立即注册
查看: 71|回复: 5

8H8K64U学习心得|实验箱已安排

[复制链接]
  • 打卡等级:偶尔看看II
  • 打卡总天数:20
  • 最近打卡:2025-06-28 10:34:22
已绑定手机

1

主题

2

回帖

87

积分

注册会员

积分
87
发表于 3 天前 | 显示全部楼层 |阅读模式
第一集 《STC最新8051单片机原理及应用-STC8H8K64U》视频课程导论
      偶人机会,今天在网上看到了陈老师的课程,首先感谢stc给予的平台,感谢陈老师辛苦录制的视频,希望接下来可以坚持学习打卡下去,争取熟悉51单片机.

本授课内容适合于下述课程:
     单片机原理及应用
     微机原理与接口技术
     单片机技术基础
     单片机综合系统设计实践
       截图202506101913205239.jpg
截图202506101920005869.jpg
截图202506102003349851.jpg

截图202506102008565544.jpg



第二集  点灯大师启航,看到效果再理论
     第一个入门实例--让指示灯闪烁利用Keil开发程序的步骤:
          利用Keil uVision集成开发环境开发程序
          启动uVision并创建一个项目
          新建一个源文件并把它加入到项目中
          编译项目并生成可以编程到程序存储器的HEX文件.
          利用ISP工具将程序下载到单片机中验证程序将用户程序下载到单片机内部
          运行程序

  
截图202506122026486904.jpg

第一个程序,纪念一下

#include "stc8h.h"
void delay(unsigned long delaycut)
{
        while(delaycut--);
}
void main(void)
{
        P4M1=0XFF;
        P4M0=0XFF;
        P6M1=0;
        P6M0=0;
        P40=0;
                        while(1)
                        {
                                P60=1;
                                delay(3000);
                                P60=0;
                                delay(3000);
                        }        
        
}



第三集  数字逻辑与基本数字电路
   高于2.2V电平为高电平,用数字1表示
   低于0.8V的电平为低电平,用数字0表示
   数字0变成1的那一瞬间叫做上升沿
   数字1变更0的那一瞬间叫做下降沿
   基本数字逻辑运算主要包括与、或、非、异或等仿真设置:
      截图202506122052037811.jpg
      截图202506122054422260.jpg
      截图202506122055498742.jpg

第4集   单片机的内个结构
   
    截图202506131841464559.jpg
截图202506131852193227.jpg
截图202506131900239301.jpg
       截图202506131902001480.jpg
第五集 存储器空间及存储器,单片机的引脚
   
    截图202506131927004305.jpg

截图202506132000353199.jpg

单片机的数字输入/输出端口(简称I/0口)主要有两个作用:
   (1)进行开关量(即高电平或者低电平)的输入和输出:
   (2)用作复用功能(如总线接口、串行通信接口等)。


IO口的工作模式
STC8H8K64U单片机的I/0口线均可由软件配置成4种工作模式之一:
   准双向口上拉模式
   推挽输出上拉模式
   仅为输入(高阻)
   开漏模式。
每个口的工作模式由2个控制寄存器PnM0和PnM1(n=0、1、2、3、4、5、6、7)中的相应位控制.
截图202506132036121926.jpg
截图202506132038537147.jpg

第6集 I/0口的工作模式
      截图202506161933047061.jpg
拉电流方式和灌电流方式
      截图202506161936463843.jpg


(4)1/0外部状态的输入
      当I/0口工作于准双向口时,由于STC8H8K64U单片机是1个时钟周期(1T)的8051单片机,速度很快,如果通过指令执行由低变高指令后立即读外部状态,此时由于实际输出还没有变高,有时可能读入的状态不对。这种问题的解决方法是在软件设置由低变高后加延时,然后再读1/0口的状态:

第7集  汇编语言程序设计进阶,宏汇编
   2.操作码
操作码是指令功能的英文缩写。下表给出了8051内核单片机指令系统中最常用的操作码。
    截图202506171754009039.jpg

注释
注释是为了阅读程序方便由编程人员加上的,并不影响程序的执行和功能,所以,注释部分不是必需的。注释部分必须用分号“;"或“/”开头,也可以使用“/*..*/”的形式注释某一段内容。一般都写在它所注释的指令的后面或者某段程序的开始,注释本身只用于对指令功能加以说明,使阅读程序时便于理解,所以注释可以用中文或者英文甚至任何便于理解的字符表示。

    截图202506181846018792.jpg


第8集 汇编指令-数据传送/逻辑运算/算术运算
  PSW为程序状态字寄存器

1.传送指令--MOV
MOV指令的作用区间主要是内部数据存储器和特殊功能寄存器。格式为MOV <目的字节>,<源字节>
  利用直接寻址可把立即数送入片内RAM任意单元或任意特殊功能寄存器,如:
  将立即数56H送入20H单元中;把立即数80H直接送入P2口中
  MOV 20H,#56H
  MOV P2,#80H

4.1字节交换指令
   XCHA, addr8 ;  (A)<→>(addr8)
   XCHA, @Ri;(A)←→(Rn)
指令把累加器A中的内容与第二操作数的内容互相交换。
列:设(RO)=20H,(A)=3FH,(20H)=75H,执行指令例:
XCHA,@RO(2)半字节交换指令
XCHA, Rn;执行结果交换指令75H,(20H)=3FH
4.2半字节交换指令
  XCHDA,@Ri;  ←→((Ri);(A.)3~0
指令把累加器A的低4位和寄存器间接寻址的内部RAM单元的低4位交换,高4位内容不变,不影响标志位。
例: 设R1的内容为30H,A的内容为69H,内部RAM中30H的内容为87H,执行指令
  XCHD A,@R1;结果:(A)=67H,(30H)=89H


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

   截图202506191957154019.jpg

4.位条件转移指令
位条件转移指令分为判进位标志C或判直接寻址位状态转移两种,
(1)判进位标志C转移指令
  jc   rel  ; 若(CY)=1,则(PC)←(PC)+rel,否则顺序执行。
JNC rel   ;若(CY)=0,则(PC)←(PC)+rel,否则顺序执行,
前一条若进位标志为1,后一条若进位标志为0,可使程序转向目标地址,否则顺序执行下条指令。目标地址为第二字节中的带符号的偏移量与PC当前值之和,不影响任何标志。

控制转移类指令简介
控制转移类类指令用于控制程序的走向。
控制转移类指令可分为两种:一种是程序转移指令,另一种称为子程序调用和返回指令。
截图202506192009388848.jpg

第10集   汇编语言程序设计的 般步骤和基本框架
   (1)汇编语言程序设计的一般步骤
         分析课题,确定算法或解题思路
         根据算法或思路画出流程图
         根据算法要求分配资源,包括内部RAM、定时器、中断等资源的分配
         根据流程图编写程序。
         上机调试源程序,进而确定源程序。
   (2)汇编语言程序的框架

        $NOMOD51
        $INCLUDE (STC8H.H);包含STC8H8K64U单片机寄存器定义头文件…这里可以编写程序中用到的一些符号定义(使用EQU、DATA、BIT等伪指令)

        ORG   0000H
START:  LJMP   MAIN   ;  跳转到主程序
ORG    0003H
LJMP    INTO ISR    ;  外部中断0入口
ORG   000BH
LJMP    TO_ ISR    ;  定时器0中断入口
ORG    0013H
LJMP   INT1_ ISR  ;  外部中断1入口
ORG   001BH
LJMP   TI_ ISR    ;  定时器1中断入口
ORG   0023H
LJMP    UART1_ ISR   ;  串口1中断入口

ORG   005BH
LJMP    INT3_ISR;INT3  ;  中断服务程序入口
ORG  0063H
LJMP   T2_ISR   ;  定时器2中断服务程序入口

ORG   0200H
MAIN:   MOVSP, #80H   ;  设置堆栈指针(可根据实际情况进行修改)
  初始化内存区域内容
  设置有关特殊功能寄存器(SFR)的控制字
  根据需要开放相应的中断控制
MAIN LOOP :    ;   主程序循环
LJMP MAIN   LOOP

第11集  单片机C语言程序设计导入一
   1.C51扩展的关键字
       C51有以下19个扩展关键字:_at_、sbit、sfr、bit、sfr16、idata、bdata、xdata、pdata、data、code、alien、small、compact、large、usingreentrant、interrupt、_task_
  (1)变量或数据类型
      C51编译器支持的数据类型见表5-1。
   截图202506210823242755.jpg
    截图202506210827187236.jpg

注:带*部分为C51所特别支持的变量类型(扩展的数据类型),它们不属于ANSIC,不能用指针对它们存取。包括:
● bit:位变量,值为0或1。
●sbit:从字节中定义的位变量(0或1)
●sfr:sfr字节地址(0x80~0xff)
·sfr16:sfr字地址(0x80~0xff,其实是占用两个连续的地址)其余的数据类型如char、enum、short、int、long、float等与ANSI C相同。

第12集   单片机C语言程序设计导入二
    1.单片机的C语言程序实际实例

例5-1】 通过延时函数,由P6.0输出周期为1s的方波信号,实现实验箱的LED闪烁解:C语言程序如下:
#include "stc8h.h"
void Delay500ms(void);   //@11.0592MHz
void main(void);
P4M1=0xff;P4M0=0xff;
P6M1=0:
P6M0=0;
P40=0;while(1)
P60=1;
Delay500ms();
P60=0;
Delay500ms();.

延时函数计算
   截图202506231919574551.jpg

  例5-2】单片机Flash作为EEPROM使用的基本操作。实现对0x0400单元的擦除和读写操作0
解:C语言程序如下:
#include "stc8h.h"
#include "intrins.h"
void IapIdle()
{
   IAP CONTR         //关闭IAP功能
   IAP CMD =0;        //清除命令寄存器
   IAP TRIG =O:        //清除触发寄存器
   IAP ADDRH =0x80: //将地址设置到非IAP区域
   IAP ADDRL= 0:
}
用户自定义EEPROM大小
截图202506231930302668.jpg

第13集   中断原理及工作机制1
  1.中断的希相关概念
  2.STC8H8K64U单片机中断源

1、中断的概念
中断的概念是在20世纪50年代中期提出的,是计算机中的一个很重要的技术,它既和硬件有关,也和软件有关。正是因为有了中断技术,才使得计算机的工作更加灵活、效率更高。中断技术的出现使得计算机的发展和应用大大的推进了一步。所以,中断功能的强弱已成为衡量一台计算机功能完善与否的重要指标。
最初引进中断技术的目的是为了提高计算机输入输出的效率,改善计算机的整体性能当CPU需要与外部设备交换一批数据时,由于CPU的工作速度远远高于外设的工作速度,每传送一组数据后,CPU等待“很长”时间才能传送下一组数据,在等待期间CPU处在空运行状态,造成CPU的浪费,
所谓中断是指计算机在执行其他程序的过程中,当出现了某些异常事件或某种请求时CPU暂时中止正在执行的程序,而转去执行对异常事件或某种请求的服务程序。当服务完毕后,CPU 再回到被暂时中止的程序继续执行。
2、其他中断相关概念
请示CPU中断的请求源称为中断源中断源向CPU发出中断申请,CPU暂停当前工作转去处理中断源事件称为中断响应对整个事件的处理过程称为中断服务
事件处理完毕CPU返回到被中断的地方称为
中断返回
3、中断的优先级
计算机的中断系统一般允许多个中断源,当几个中断源同时向CPU请求中断要求为其服务的时候,就存在CPU优先响应哪一个中断源请求的问题。通常根据中断源的轻重缓急排队,优先处理最紧急事件的中断请求源,即规定每一个中断源有个优先级别。CPU总是先响应优先级别最高的中断请求。
当CPU正在处理一个中断源请求的时候(执行相应的中断服务程序),发生了另外一个优先级比它更高的中断源请求,CPU暂停原来中断源的服务程序,转而去处理优先级更高的中断请求源,处理完以后,再回到原低优先级中断的服务程序,这样的过程称为中断嵌套
7、堆栈
堆栈区是将内部存储器的一部分区域划作专门用于堆栈的区域。堆栈操作有其特定的规则,叫做后进先出(LastIn First 0ut,LIF0)规则,即最后存入的数据将被最先取出。堆栈区当前的栈顶地址用堆栈指针寄存器(SP)中的值表示,即SP 始终指向栈顶。


1.中断源
STC8H8K64U单片机共有44个中断源,它们分别是:
5个外部中断(INTO~INT4 )
5个定时/计数器溢出中断(TO~T4 )
4个异步串口中断(UART1~ UART4 )
1个串行外设接口中断(SPI)
1个12C总线中断、1个USB中断
1个模数转换中断(ADC)、1个低压检测中断(LVD)、1个比较器中断(CMP)
2个PWM中断(PWMA和PWMB)
8个端口中断(P0~P7)
12个DMA中断
1个RTC中断
1个LCM中断

3.中断标志位
(1)外部中断和定时器的中断请求标志
外部中断0(INT0)和外部中断1(INT1)既可双边沿触发(即上升沿和下降沿都可以触发)也可以只有下降沿触发。这两个外部中断的请求标志位分别是寄存器TCON中的IEO/TCON.1和IE1/TCON.3。当外部中断服务程序被响应后,中断标志位亚0和IE1会自动清0。外部中断0(INTO)和外部中断1(INT1)还可以用于将单片机从掉电模式唤醒。TCON的各个位含义如下:
截图202506251911227140.jpg

第14集  中断原理及工作机制二
      截图202506251930095329.jpg
LVDF是低电压检测标志位,同时也是低电压检测中断请求标志位。在正常工作和空闲工作状态时,如果内部工作电压VCC低于低电压检测门槛电压,低电压中断请求标志位(LVDFPCON.5)自动置1,与低电压检测中断是否被允许无关。即在内部工作电压VCC低于低电压检测门槛电压时,不管有没有允许低电压检测中断,LVDFIPCON.5都自动为1该位要用软件清0,清0后,如内部工作电压VCC低于低电压检测门槛电压,该位又被白动设置为1。


5.单片机中断处理过程
(1)中断响应的条件及过程
当中断源向CPU发出中断请求时,如果中断的条件满足,CPU将进入中断响应周期。单片机响应中断的条件是:
1)中断源有请求。
2)中断允许寄存器相应位置1。
3)CPU中断开放(EA=1)
CPU响应中断时,将相应的优先级状态触发器置1,然后由硬件自动产生一个长调用指令LCALL,此指令首先把断点地址压入堆栈保护,再将中断服务程序的入口地址送入到程序计数器PC,使程序转向相应的中断服务程序。
单片机对中断优先级的处理原则是:
1)不同级的中断源同时申请中断时,先高后低;
2)处理低级中断又收到高级中断请求时,停低转高:3)处理高级中断却收到低级中断请求时,高不睬低:4)同一级的中断源同时申请中断时,事先规定,



在程序的运行过程中,并不是任何时刻都可以响应中断请求。当出现下列情况时,CPU不会响应中断请求:
1)中断允许总控制位EA=0或发出中断请求的中断所对应的中断允许控制位为0。
2)CPU正在执行一个同级或高一级的中断服务程序。
3)当前执行的机器周期不是指令周期的最后一个机器周期。
4)正在执行的指令是中断返回指令RETI或者是访问专用寄存器IE或IP的指令时,CPU至少要再执行一条指令才能响应中断请求。


第15集  定时器原理及STC拓展
定时/计数器的应用
在自动控制系统或者自动检测系统中,经常要用到定时器或者计数器,用于定时完成相关的任务,或者对外部事件进行计数,这可以通过单片机集成的定时/计数器实现
1.定时/计数器的作用
STC8H8K64U单片机内部集成了五个16位的定时1计数器(TO、T1、T2T3和T4),作用如下:
(1)方便地用于定时控制;
(2)用作分频器和用于事件记录:
3)可编程时钟输出功能,用于给外部器件提供时钟:
4)可用作串口的波特率发生器

截图202506252015548468.jpg

STC8H8K64U的定时器/计数器T0有4种工作模式:
模式0(16位自动重装载模式)
模式1(16位不可重装载模式)
模式2(8位自动重装模式)
模式3(不可屏蔽中断的16位自动重装载模式)【与模式0相同,不可屏蔽中断,中断优先级量高于其他所有中断的优先级,并且不可关闭,可用作操作系统的系统节拍定时器,或者系统监控高,时器。】
定时器/计数器T1除模式3外,其他工作模式与定时器/计数器0相同。T1在模式3时无效停止计数。



截图202506252013084572.jpg

1)TF1:定时器1溢出中断标志。当定时器1溢出时,由内部硬件置位,当单片机转向中断服务程序时,由内部硬件清除
2)TR1:定时器1运行控制位。
1:启动定时器1;
0:停止定时器1。
3)TFO:定时器0溢出中断标志。当定时器0溢出时由内部硬件置位,当单片机进入中断服务程序时,由内部硬件清除。
4)TRO:定时器0运行控制位。
1:启动定时器0;TCON的0~3位与外部中断有关。
0:停止定时器0。

截图202506252014039432.jpg

1)T2CLKO:定时器2时钟输出控制。
0:关闭T2时钟输出;
1:使能T2时钟输出功能。当T2计数发生溢出时,P1.3口的电平自动发生翻转。
2)T1CLKO:定时器1时钟输出控制。
0:关闭T1时钟输出;
1:使能T1时钟输出功能。当T1计数发生溢出时,P3.4口的电平自动发生翻转3)TOCLKO:定时器0时钟输出控制。
0:关闭T0时钟输出;
1:使能TO时钟输出功能。当TO计数发生溢出时,P3.5口的电平自动发生翻转

回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:111
  • 最近打卡:2025-06-28 08:54:08

740

主题

1万

回帖

1万

积分

管理员

积分
17121
发表于 3 天前 | 显示全部楼层
现在入门都是从下面的程序开始,而不是从点灯开始:

一起学AiCube之STC8H8K64U自动辅助开发,程序自动生成
STC8H8K64U 三个超简单的USB通信实验, 及USB不停电下载

实验一:直接输出,printf_usb("Hello World !\r\n")
实验二:  查询方式,查询到电脑命令后,

              printf_usb("Hello World !\r\n")或其他
实验三:  中断方式,单片机USB中断接收服务函数收到命令后,

              printf_usb("Hello World !\r\n")或其他


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:70
  • 最近打卡:2025-06-28 10:08:56

2

主题

114

回帖

568

积分

高级会员

积分
568
发表于 3 天前 | 显示全部楼层
现在知识更新很快啊
学无止境
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:20
  • 最近打卡:2025-06-28 10:34:22
已绑定手机

1

主题

2

回帖

87

积分

注册会员

积分
87
发表于 前天 09:40 | 显示全部楼层
zengc*** 发表于 2025-6-25 23:28
现在知识更新很快啊

是呀,所以做技术的人员得不停地学习,应了那句老话,活到老,学到老
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:70
  • 最近打卡:2025-06-28 10:08:56

2

主题

114

回帖

568

积分

高级会员

积分
568
发表于 前天 23:09 | 显示全部楼层
最后还是干到老
学无止境
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:20
  • 最近打卡:2025-06-28 10:34:22
已绑定手机

1

主题

2

回帖

87

积分

注册会员

积分
87
发表于 昨天 08:57 | 显示全部楼层

是的,同时也让我们开拓眼界,让生活更有乐趣
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-28 17:36 , Processed in 0.229039 second(s), 80 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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