找回密码
 立即注册
查看: 1577|回复: 39

基于stc8h8k64u学习笔记

[复制链接]
已绑定手机

5

主题

53

回帖

159

积分

注册会员

积分
159
发表于 2026-8-4 14:34:25 | 显示全部楼层 |阅读模式

截图202608051629045540.jpg

第一章 导论
stc8 指令码完全兼容传统 8051,可以直接移植老 51 代码;内核为1T 高速 8051,传统 51 是12T。
stc8最高48M

主要关注h8k64u


都基础内容,有基础的可以快进。
本集为 STC8H8K64U 全套教程开篇导论,先梳理单片机完整发展脉络,从 Z80、Intel 8031/8051、8751、AT89C51 到历代 STC 芯片,对比各代存储、烧录、仿真短板,突出 STC8H8K64U 64KB Flash、免专用编程 / 仿真器、1T 高速内核、外设丰富的优势。随后说明学习所需基础电子元器件知识,完整展示配套实验箱硬件布局、ADC、串口、PWM 等外设接口功能。最后演示 STC-ISP 软件程序下载标准操作流程,同时概述整套课程 明确从硬件、汇编、C 语言到中断、串口、PWM、DMA、ModBus 等模块的学习顺序。
实验箱学习时有必要,省去接线步骤,外围电路都已考虑到。
命名规则表 已发,便于选型
89b6dc0c70fd321dc43732375a173f63.jpg
29d945273f6276db45766532f7c6ed4a.jpg
回复

使用道具 举报 送花

已绑定手机

5

主题

53

回帖

159

积分

注册会员

积分
159
 楼主| 发表于 2026-8-4 14:54:05 | 显示全部楼层

第二集 点灯

第二集 点灯
用blink例子,完成简单点灯。

陈老师用囫囵吞枣这个词来说明我们这个案例的作用,目的是想让我们进入学习状态,不用考虑太多细节。
先动起来,再给我们一些信心。


1。 keil环境、开发步骤、下载、测试
安装 忽略
先用stc isp 向keil中添加stc环境, stc的头文件
我用tossop20脚芯片, 8、9脚焊一起
复制代码
用的usb-ttl烧录的
陈老师讲完点灯,然后讲的计算机组成原理内容

第二步 创建项目

第二步 创建项目

第三步 点魔法棒 配置

第三步 点魔法棒  配置

第一步 stc isp操作

第一步 stc isp操作
截图202608041535497118.jpg
截图202608041537087768.jpg
截图202608041539007475.jpg
截图202608041540042713.jpg
截图202608041540547383.jpg
回复

使用道具 举报 送花

已绑定手机

5

主题

53

回帖

159

积分

注册会员

积分
159
 楼主| 发表于 2026-8-4 15:42:22 | 显示全部楼层
oooo*** 发表于 2026-8-4 14:54
第二集 点灯
用blink例子,完成简单点灯。

用sop转接板
回复

使用道具 举报 送花

已绑定手机

5

主题

53

回帖

159

积分

注册会员

积分
159
 楼主| 发表于 2026-8-4 16:09:34 | 显示全部楼层

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

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

1 逻辑电平  
   5v 系统,>2.2V是高电平 ,<0.8是低电平  。 3.3v系统 没讲
2 上升、下降沿
3 基本逻辑运算
  与 and & , 全为1 结果为1 其他为0, 符号为=匚)-, 可以对16进制数据置1用
  或 or |  ,   有1是1,其他是0。  符号=) ̄>-   ,   可以置0用。
  非  ~  ,符号 -|>o-  按位取反
二,单片机的应用场景
1 mcu特点
  体积小、 可靠高(有看门狗)、功耗低、价格低
2 应用范围
   仪表、工农业实时监控、计算网络通信、家电、医用设备、汽车设备、其他(办公 、商业机械制造==)

用stc isp设置硬件仿真

仿真步骤2

仿真步骤2

仿真步骤1

仿真步骤1
截图202608041620058301.jpg
截图202608041621299520.jpg
回复

使用道具 举报 送花

已绑定手机

5

主题

53

回帖

159

积分

注册会员

积分
159
 楼主| 发表于 2026-8-4 16:54:31 | 显示全部楼层

第四集 mcu内部结构

第四集 mcu内部结构
1、微型计算机的框架结构
2、传统8051单片机的内部结构
8051单片机中包含中央处理器、程序存储器(4KBROM)、数据存储器(128BRAM)、2个16位定时/计数器、4个8位I/O口、一个全双工串行通信接口和中断系统等,以及与/O口复用的数据总线、地址总线和控制总线三大总线。
3、STC8H8K64U单片机的内部组成
mdu16:16位乘除法
1. cpu结构
  运算器和控制器

2 存储器
  a: 程序flash .  
有64K大小 0000-ffffH,前面是放中断代码的
0~02h 我记得是放入口,也就是个jmp
0x03开始放中断. 第一个中断int0外部中断在03H,第二个中断也就是t0中断在0bH,每个中断8字节。
03H里放的jmp,跳到中断具体逻辑
    因为常亮也在flash里,如果用汇编,就使用movc命令。
  b: 内部和扩展数据存储器  应该是idata ,xdata
  内部数据存储器也叫内部ram, 一共就有256字节。 程序执行中的变量就在这   
   分三部分
   第一部分:低128字节 0~7FH,也叫基本RAM区,又又分工作寄存器区、位寻址区、用户RAM和堆栈区  。  用汇编时,用mov,mov@Ri, 可直接、间接寻址,不用汇编不要管。
                     工作寄存器区0~3区(00~1FH),看下面的图。  每个区都有R7~R0,到底用哪个区的R几?要用psw里RS1和RS0来控制。
                     位寻址区:20~2FH,20H里放的00H,21H里放的01H,00H和01H叫位地址,不要混。
   第二部分:高128字节80H~FFH。 用汇编时,只能用mov@Ri, 只可间接寻址,不用汇编不要管。
   第三部分:还是高128字节。 就是SFR了。 80~FFH 只可直接寻址,只能用mov

  c: sfr和内部数据存储器80-ffh单元地址重叠




截图202608041723193962.jpg

存储器空间

存储器空间
截图202608041801382084.jpg
截图202608042011141866.jpg
回复

使用道具 举报 送花

已绑定手机

1

主题

81

回帖

263

积分

版主

积分
263
发表于 2026-8-4 17:17:28 | 显示全部楼层
要 做到 USB不停电下载;
要 尝试 AiCube 图形化自动配置生成程序工具;
推荐优先看的:  
printf_usb("Hello World !\r\n")及
USB不停电下载, 演示视频链接:
https://www.stcaimcu.com/thread-19077-1-1.html

下载 最新的 AiCube-ISP-V6.96Z 或以上版本软件 !

深圳国芯人工智能有限公司-工具软件

下载 最新的 USB库函数,永远用最新的 USB库函数 !
深圳国芯人工智能有限公司-库函数
下载 最新的 用户手册 !
下载 最新的 上机实践指导书 !

下载 最新的 STC8H8K64U 用户手册
https://www.stcaimcu.com/data/download/Datasheet/STC8H.pdf


下载 最新的 STC8H8K64U 实验指导书
有 AiCube 图形化自动配置生成程序工具使用说明
https://www.stcaimcu.com/data/do ... %AF%BC%E4%B9%A6.pdf


上面是 小李 演示:STC8H8K64U, printf_usb("Hello World !\r\n")及usb不停电下载@AiCube之图形化程序自动生成



上面是 小赵 演示:STC8H8K64U, printf_usb("Hello World !\r\n")及usb不停电下载@AiCube之图形化程序自动生成

回复

使用道具 举报 送花

已绑定手机

5

主题

53

回帖

159

积分

注册会员

积分
159
 楼主| 发表于 2026-8-4 21:05:06 | 显示全部楼层

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

第五集 存储器空间及存储器,单片机的引脚
2) 数据存储器
高128字节和特殊功能寄存器
  地址虽然是重叠,但物理上是独立不同。 区分方法:寻址。
  sfr分两类:1 引脚p0~p7; 2 控制或内部寄存器,中断控制、定时器、串口、spi、pwm 、adc==。
  sfr复位值 可以理解为开机默认值 。

  sfr按位置分:1. 传统sfr在ram的80~FFH(直接寻址);2. xfr在扩展ram(xdata), xfr访问方法 p_sw2(bah) (eaxfr)=1, 然后movx a.@dptr和movx @dprt,A。

扩展RAM:
也叫外部RAM,XRAM, 可访问64K地址空间,但实际大小为8192B 0H~1FFFH,
unsigned char xdata i =1;  
这就放在XRAM了, XRAM慢一点,keil中也可以配置一下,自动把大的变量放入XRAM,不然内部ram很容易就爆了。


一、 Mcu引脚
1. lqfp64封装
2. pdip40封装
3. 最小系统
vref和vcc必须短接,我焊一起了。 p30 p31接usb-ttl rx tx。 用5v 3.3v都行。 usb下载时,d+d-都要串300R
stc8h8k64u 没有p12口。
姚总说话真难听懂。
5 引脚简介

XTALI(与P1.7复用)和XATL0(与P1.6复用)分别是芯片内部一个反相放
大器的输入端和输出端。通常用于连接晶体振荡器。

   p54也可以复位用, stc isp烧录时去勾“复位脚用作io口”, 复位时上拉,
二、mcu io

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


i/o工作模式  4种
PnM1  PnM0 i/o工作模式
0 0 准双向口/弱上拉模式  灌电流 20mA,拉电流 270μA
0 1 推挽输出/强上拉模式
1 0 仅为输入(高阻)
1 1 开漏模式


PnM0和PnM1来控制。不要记,用stc isp来界面配置。

(1)P3.0和P3.1口上电后的状态为弱上拉/准双向口模式。
(2)除P3.0和P3.1外,其余所有I/0口上电后的状态均为高阻输入状态,用户在使用I/0口前必须先设置I/0口模式。  
80c51默认是准双向,不太一样。

io复用
看手册吧 没必要记。
回复

使用道具 举报 送花

已绑定手机

5

主题

53

回帖

159

积分

注册会员

积分
159
 楼主| 发表于 2026-8-5 10:17:17 | 显示全部楼层

第六集 i/o工作模式 汇编入门

第六集 i/o工作模式 汇编入门
io复用也叫功能引脚切换  红色为常用
(1)  p0口
可复用为数据总线(D7~D0)、地址总线低8位(A7~A0)、ADC输入(ADC8~ADC14)、串口3、串口4、T3时钟输出、T3脉冲输入、T4时钟输出T4脉冲输入、PWM输出控制。

(2)P1口
P1口可复用为ADC转换输入(ADC7~ADCO,无ADC2)、PWM输出、SPI通信线、第 二串口、第三串口、系统时钟输出、外接晶体引脚、I2C通信线等。

(3)P2口
P2可作为地址总线的高8位输出(A15~A8)。另外,P2口还用于SPI和I2C以及PWM输出。

(4)P3口
P3口可复用为外部中断输入、计数器输入、SPI、I2C、比较器输入和输出、串口1、PWM输出等功能。

(5)P4
P4口的复用功能可配置为SPI通信、读写控制信号、串口2、地址锁存信号等。

(6)P5口
P5口的复用功能可配置串口3、串口4、比较器输入、复位脚、系统时钟输出、SPI接口的从机选择信号、PWM输出。

(7)P6口可复用为PWM输出。

(8)P7口可复用为PWM输出和I2C接口。


4、I/O口的使用
(1)上拉电阻的连接
为什么上拉,默认准双向,是弱上拉。
(2)拉电流方式和灌电流方式
拉:电流低,io到负载。  灌:电流高点20ma, 负载到io,(推荐)。  限流电阻一定要有。
(3)典型的三极管控制电路
当需要驱动的功率器件较多时,建议采用达林顿管驱动器ULN2803

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


5、
单片机应用系统的典型构成
(1)非总线扩展方式的单片机应用系统构成
STC8H8K64U单片机内部已经有64 KB程序存储器和8192B RAM,可以满足一般应用的存储器需求。此时,单片机的P0、P2和P4口不用于总线方式,即P0口和P2口用于普通I/O口功能;P4.2和P4.4不用于写控制信号和读控制信号,也用于普通I/O口功能。


(2)总线扩展方式的单片机应用系统构成
如果需要扩展存储器容量或者并行I/O,需要使用总线扩展方式。此时,8位的数据总线由P0口提供,16位的地址总线由P2和P0口构成。P4口中的/WR(P4.2)和/RD(P4.4)引脚的作用是写控制和读控制。ALE(P4.5)信号用于锁存器的锁存控制,以锁存由P0口输出的地址,从而实现地址和数据的分离。

nWR /WR 低电平有效


汇编入门


一、汇编语言程序设计基础知识
1 。 伪指令
伪指令并不产生目标程序,不影响程序的执行,仅仅产生供汇编用的某些指令,以便在汇编时执行一些特殊操作。
二、汇编语言程序仿真过程


(1)设置起始地址ORG(Origin)
ORG addr16其中,ORG是该伪指令的操作助记符,操作数addr16是16位二进制数,前者表明为后续源程序汇编后的目标程序安排存放位置,后者则给出了存放的起始地址值。ORG伪指令总是出现在每段源程序或数据块的开始。可使程序员把程序、子程序或数据块存放在存储器的任何位置。例如:
ORG 2000H
MOV A,20H
表示后面的目标程序从2000H单元开始存放。
若在源程序开始不放ORG指令,则汇编将从0000H单元开始存放目标程序。



(2)定义字节DB(Define Byte)
  1. 例如:
  2. HERE: DB 84H   ;(HERE)=84
  3.           DB 43H   ;(HERE+1) =43H
复制代码
  1. SEG:
  2. DB 23H, 'MCS-51'
复制代码
截图202608051042105753.jpg
截图202608051042571300.jpg

典型的三极管控制电路

典型的三极管控制电路

ORG 1000H SEG:DB 23H, 'MCS-51'

ORG 1000H SEG:DB 23H, 'MCS-51'
回复

使用道具 举报 送花

已绑定手机

5

主题

53

回帖

159

积分

注册会员

积分
159
 楼主| 发表于 2026-8-5 14:20:46 | 显示全部楼层
3)定义字DW (Define Word)
<标号:>DW<项或项表>
DW的基本含义与DB相同,但DB一般用于定义8位数据(一个字节。DW定义16位数据,即一个字。在执行汇编程序时,机器会自动按低位字节在前,高位字节在后的格式排列(与程序中的地址规定一致)。所以DW伪指令常用来建立地址表。
(4)为标号赋值EQU(Equate)
<标号> EQU 数值或表达式
其功能是将语句操作数的值赋于本语句的标号,故又称为等值指令。
(5) DATA指令
符号名表达式DATA
DATA指令用于将一个内部RAM的地址赋给指定的符号名。数值表达式的值在00H~0FFH之间,表达式必须是一个简单表达式。
如:BUFFER DATA 40H
(6) XDATA指令(External Data)
符号名 XDATA 表达式 XDATA指令用于将一个外部RAM的地址赋给指定的符号名。
数值表达式的值在0000H~0FFFFH之间,表达式必须是一个简单表达式。
MYDATA XDATA 0400H

(7)定义位命令BIT
字符名称 BIT 位地址
该指令用于给字符名称定义位地址。如:
DOGOUT BIT P3.4
经定义后,允许在指令中用DOGOUT代替P3.4。

就是c的define

(8)文件包含命令INCLUDE
文件包含命令INCLUDE用于将寄存器定义文件(一般的后缀名为.INC)包含于当前程序
中,与C语言中的#include语句的作用类似。使用格式为:
$INCLUDE(文件名)

框架 LJMP3字节

框架 LJMP3字节
截图202608051438208692.jpg
截图202608051438404873.jpg
回复

使用道具 举报 送花

已绑定手机

5

主题

53

回帖

159

积分

注册会员

积分
159
 楼主| 发表于 2026-8-5 14:39:49 | 显示全部楼层

第七集 stc8h 汇编进阶、宏汇编

第七集 stc8h 汇编进阶、宏汇编
$NOMOD51
$INCLUDE (STC8H.H)其中,$NOMOD51告诉汇编器不使用预定义的寄存器名。因为汇编器内部定义了8051的寄存器名,如果没有使用$NOMOD51,后面包含了STC8H.H的头文件,汇编时,就会出现寄存器符号重复定义的错误。使用上述命令后,在用户程序中就可以使用STC8H8K64U单片机的特殊寄存器名称了。


一、 助记符
汇编语言的指令通常由操作码和操作数组成。
例如: add a,#8bh 经汇编后就是248B(24H和8BH)   24就是ADD A。   # 是立即数。
2. 操作码 看下图

3.操作数
操作数是一条指令操作的对象。操作数可以是数据,也可以是地址。
不同指令的操作数特点如下:
(1)传送类指令,必须指明操作对象从哪儿来(源地址),传到何处去(称为目的地址)。
(2)数据操作类指令,一般靠运算器完成,数据操作类指令的对象一般是两个。
(3)程序控制类指令的操作对象是程序计数器PC和一个数。
(4)逻辑操作类有单操作数和双操作数之分。

注意:
(1)数据只能是整数,不能是小数。
(2)当汇编指令中的数据是十六进制且是以字母开头时,该数据应加一个前导0,以表示后面的字母不是变量而是数字。

3)在8051内核单片机中,一个数据的前面有前缀#号则表示后面的数据是立即数,如果数据的前面没有#号,则说明该数据表示的是直接地址。立即数可以写成十进制的格式,也可以写成十六进制数的格式,还可以写成二
进制数的格式。其区分是在数据的后面加上后缀以示区别:
十进制数据的后缀为D(可省略不写),
十六进制数据的后缀为H,
二进制数据的后缀为B。

二、指令格式
[标号:]操作码助记符[第一操作数],第二操作数][,第三操作数][;注释]
标号也用作子程序的名字

操作数:根据指令的语法要求,一条指令中,可能有0~3个操作数。例如:
RETI;中断返回,无操作数
CPL A;累加器逐位取反,只有一个操作数
ADD A,#56H;两个操作数的情况
CJNE R2,#60H,LOOP;三个操作数的情况
注释 ;    //     /**/

2.指令代码的存储格式
指令代码是汇编语言中指令的二进制表示方法,是指令在存储器中存放的形式。在机器中为了方便表示,将8位二进制码表示为一个字节。

三、寻址方式

1.立即寻址
指令中的源操作数是立即数,这种寻址方式叫做立即寻址。立即数的类型可以是数字也可以是字符,一般字长为8位或16位
mov a,#28h
mov dptr , # 050h

2.寄存器寻址
  inc R5  ;把寄存器R5的内容加1后再送回R5


3.直接寻址
直接寻址可访问三种地址空间:
1)特殊功能寄存器SFR:直接寻址是唯一的访问形式。
2)内部数据RAM中的00H~7FH的128个字节单元。
3)位地址空间。

4.寄存器间接寻址
MOV A,@R0  ;将R0中的内容所表示的地址单元中的内容送给A
MOVX @DPTP,A ;将A中的内容送到DPTR指向的外部RAMI单元中

5.变址寻址
  寄存器+ pc/dptr = 操作数地址

第一类,用pc
MOVC A,@A+PC  ;读取A+PC指向的程序存储器单元的值送给A
第二类,用dptr
MOV DPTR, #TABLE
MOVC A, @A+DPTR

6.相对寻址
例 JC 80H

7.位寻址

MOV C,P1.0  ;将P1.0的状态传送到进位标志CY
SETB 20H.6  ;将20H单元的第6位置为1
CLR 25H      ;将25H位的内容清零





常用操作码

常用操作码
截图202608051505551745.jpg
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-11-7 11:51 , Processed in 0.083908 second(s), 84 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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