找回密码
 立即注册
查看: 3280|回复: 16

STC8H8K64U学习打卡及心得 | 建议立即赠送 STC8H实验箱,提高学习效率

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2024-06-20 22:15:30

1

主题

19

回帖

141

积分

注册会员

积分
141
发表于 2024-1-15 10:44:58 | 显示全部楼层 |阅读模式
陈桂友教授《STC8051单片机原理及应用-STC8H8K64U》学习记录
1.之前一直在看并没有打卡记录,从今天开始对每节课进行打卡记录,对学习过程中的感悟进行总结。(先占个楼)
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2024-06-20 22:15:30

1

主题

19

回帖

141

积分

注册会员

积分
141
发表于 2024-1-15 11:47:58 | 显示全部楼层
前三节课我没有边听边做笔记,我大概总结一下 我记住的部分
1.第一节课 讲了 单片机的发展史 ,之前的紫外线擦除EPROM ,仿真器 仿真,ISP下载 ,以及单片机在各个领域的实际应用
2.第二节课 讲了用C语言点亮LED ,以及对keil创建工程过程进行了详细讲解,还对stc仿真进行了讲解 ,stc仿真 要在 stc-isp 中 keil仿真设置中选择USB仿真,设置好需要断电再调试(注意:断电后,直接插上设备就好了,不需要STC USB Writer (HID1))

  1. #include <STC32G.H>
  2. #define MAIN_Fosc       24000000L   //定义主时钟
  3. unsigned char i;
  4. void main(void)
  5. {
  6.         unsigned char j;
  7.     P2M1 = 0x00;   P2M0 = 0x00;   //设置为准双向口
  8.     while(1)
  9.     {
  10.                 for(j=0;j<8;j++)
  11.                 {
  12.                         delay_ms(30);
  13.                         i = 0xfe<<j;                //流水灯
  14.                         P2 =i;
  15.                         delay_ms(30);
  16.                 }
  17.                        
  18.     }
  19. }
  20. void delay_ms(u8 ms)
  21. {
  22.     u16 i;
  23.     do{
  24.         i = MAIN_Fosc / 6000;
  25.         while(--i);   //6T per loop
  26.     }while(--ms);
  27. }
复制代码

3.第三节课 讲了数字逻辑和stc的应用范围业务包括多媒体芯片设计,主要集中在音视频采集、传输、处理等技术方向,产品可应用于新型平板、高铁、汽车、广电、医疗、智能制造等领域
按位与 &      0&0为0,0&1为0,1&0为0  ,1&1为1      (有0出0,全1出1)
按位或 |        0| 0为0   0| 1为1    1| 0为1   1| 1为1      (有1出1,全0出0)
按位异或 ^     0^0为0  1^1为0  0^1为1    1^0为1         (相同为0,不同为1)
按位取反~         ~1为0          ~0为1     (注意有符合数据类型取反不一样,是补码格式)
位左移  <<      0001     1  ;左移两位    0100     4.
位右移  <<     1000     1  ;右移两位    0010      2.
逻辑与&&                    11&&11   成立     00&&00   成立        11&&00    不成立
逻辑或||                    11|| 11   成立       11|| 00    成立     00|| 11    成立      00||00  不成立
逻辑非!              !0    不等于 0条件成立 ;  !1  不等于 1条件成立;   或者  “!真”结果为“假”;  “!假”结果为“真”;
截图202401151113446107.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:12
  • 最近打卡:2025-04-27 09:44:17

25

主题

252

回帖

2091

积分

超级版主

积分
2091
发表于 2024-1-15 13:27:20 | 显示全部楼层
全球8051爱好者技术互助交流论坛 www.STCAIMCU.com 欢迎您的到来!一起交流,一起成长!

【免费+包邮】 送/申样热线:0513-55012928、0513-55012929、0513-55012966
工作时间:  8:30-12:00  13:00-17:30(周一 到 周五, 法定节假日除外)
加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
QQ:3398500488
微信号:18106296592(小刘)
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2024-06-20 22:15:30

1

主题

19

回帖

141

积分

注册会员

积分
141
发表于 2024-1-15 19:45:33 | 显示全部楼层

第四节课 单片机内部结构和外围电路设计
STC新推出的STC8H单片机
2.1  CPU结构

单片机的中央处理器(CPU) 由运算器和控制器组成
运算器---以8位算术/逻辑运算部件ALU为核心,加上通过内部总线而挂在其周围的暂存器TMP1、TMP2、累加器ACC、寄存器B、程序状态标志寄存器
PSW以及布尔处理机组成了整个运算器的逻辑电路。运算器中包含程序状态寄存器PSW。

2.1.1存储器空间及存储器
STC8H8K64U单片机的程序存储器和数据存储器是各自独立编址的,片内集成有3个物理上相互独立的存储器空间: 程序Flash存储器(没有用作程序存储
器的Flash存储器可以作为EEPROM使用)、内部数据存储器和扩展数据存储器
特殊功能寄存器和内部数据存储器的80H~FFH单元地址重叠。

2.1.1.1程序存储器
程序Flash存储器用于存放用户程序、常数数据和表格等信息。STC8H8K64U单
片机片内集成了64KB的程序Flash存储器,地址为0000H~FFFFH。
8051单片机具有64KB程序存储器空间的寻址能力。
单片机复位后,程序计数器的内容为0000H,从0000H单元开始执行程序
在程序Flash存储器中有些特殊的单元,这些单元是中断服务程序的入口地址 (也
称为中断向量)。每个中断都有一个固定的入口地址,当中断发生并得到响应后,单片
机就会自动跳转到相应的中断入口地址去执行程序。例如,外部中断0 (INTO)的中断
服务程序入口地址是0003H,定时器/计数器0(TIMERO) 的中断服务程序入口地址是
000BH等
读取程序存储器中保存的表格常数等内容时,使用MOVC指令。
数据存储器也称为随机存取数据存储器。STC8H8K64U单片机的数据存储器在物理上和逻辑上都分为两个地址空间: 内部数据存储区和扩展数据存储
内部数据存储区(又称为内部RAM)---STC8H单片机片内集成了256字节内部RAM,地址范围是00H~FFH,可用于存放程序执行的中间结果和过程数据。分为三部分:
   低128字节RAM (00H~7FH):也称为基本RAM区。基本RAM区又分为工作寄存器区、位寻址区、用户RAM和堆栈区。可以直接寻址和间接寻址。用“MOV”和
“MoV @Ri”形式的指令访问。
高128字节RAM (80H~FFH) : 只能间接寻址。用“MOV @Ri”   形式的指令访特殊功能寄存器(SFR)区: 地址范围为80H~FFH,只可直接寻址,用“MOV”形式的指令访问。

STC8H位寻址位00H-7EH;特殊功能寄存器被8整除的都可以按位操作  STC8H手册503页有说明
截图202401151940549546.jpg
截图202401151941251021.jpg
截图202401151942053278.jpg
截图202401151942383523.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2024-06-20 22:15:30

1

主题

19

回帖

141

积分

注册会员

积分
141
发表于 2024-1-15 19:49:48 | 显示全部楼层
wl*** 发表于 2024-1-15 19:45
第四节课 单片机内部结构和外围电路设计
STC新推出的STC8H单片机
2.1  CPU结构

为什么我这截图会在下面,我是放中间的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2024-06-20 22:15:30

1

主题

19

回帖

141

积分

注册会员

积分
141
发表于 2024-1-16 11:39:02 | 显示全部楼层
第五课    存储器空间及存储器
存储器空间及存储器
数据存储器    高128字节RAM和特殊功能寄存器   80H~FFH既为高128字节RAM区的地址范围,又为特殊功能寄存器区 (SFR)的地址范围,地址空间重叠,但物理上是独立的。特殊功能寄存器是用来对片内各功能模块进行管理、控制、监视的控制寄存器和状态寄存器。特殊功能寄存器大体分为两类:一类与芯片的引脚有关,P0~P7;另一类用于芯片内部功能的控制或者内部寄存器如中断控制、定时器、串行口、SPI接口、PWM模块、ADC模块的控制字等。单片机的功能就是通过特殊功能寄存器的设置实现的。特殊功能寄存器及其在单片机复位时的值(简称复位值) 请见附录C
特殊功能寄存器    除了程序计数器PC和4个工作寄存器组外,其余的特殊功能寄存器在SFR区 (即上述80H~FFH地址空间)和扩展RAM (称为XDATA) 区的部分单元中。在SFR区的特殊功能寄存器称为传统特殊功能寄存器 (SFR),逻辑地址位于XDATA区域的特殊功能寄存器称为扩展特殊功能寄存器 (XFR)。传统特殊功能寄存器使用直接寻址方式访问。访问扩展特殊功能寄存器前需要将P_SW2 (BAH) 寄存器的最高位(EAXFR) 置1,然后使用MOVX A,@DPTR和MOVX@DPTR,A指令进行访问。
这里外部存储器指的是XDATA区域;如果数据太大需要将数据存储再XDATA,data区,只有128个字节;
扩展数据存储区    扩展数据存储区也称为扩展 RAM 区或外部RAM (简称XRAM )  STC8H8K64U单片机一共可以访问64KB的扩展数据存储空间。在汇编语言中XRAM使用“MOVX @DPTR”或者“MOVX@Ri”形式的指令访问。在C语言中使用xdata声明存储类型即可。如unsigned char xdata i= 0。STC8H8K64U单片机片内集成了XRAM,地址范围为0000H--1FFFH,可用于存放数据和变量。对于一般应用都能满足要求,不再需要外部扩展RAM。
截图202401161138319481.jpg
I/0口的作用
单片机的数字输入/输出端口(简称I/0口) 主要有两个作用:
(1) 进行开关量(即高电平或者低电平) 的输入和输出:
(2) 用作复用功能(如总线接口、串行通信接口等)
I/0口的工作模式
STC8H8K64U单片机的I/0口线均可由软件配置成4种工作模式之一:
准双向口/弱上拉模式
推挽输出/强上拉模式
仅为输入(高阻)
开漏模式
每个口的工作模式由2个控制寄存器PnMo和PnM1 (n=0、1、2
3、4、5、6、7) 中的相应位控制
I/O口的工作模式
PnM1x   PnMO.x                        I/O口模式
   0             0         准双向口(传统8051单片机I/O口模式),灌电流可20mA拉电流为270 uA,由于制造误差,实际为270~150 uA
   0             1         推挽输出(强上拉输出,可达20mA,要加限流电阻)
   1             0           仅为输入(高阻)
   1             1          开漏(Open Drain),内部上拉电阻断开,要外加上拉电阻
使用STC8H8K64U单片机的I/0口时,应注意:
(1) P3.0和P3.1口上电后的状态为弱上拉/准双向口模式。
(2) 除P3.0和P3.1外,其余所有I/0口上电后的状态均为高阻输入状态,在使用I/0口前必须先设置I/0口模式。
(3) 上电时如果不需要使用USB进行ISP下载,P3.0/P3.1/P3.2这3 个I/0口不
能同时为低电平,否则会进入USB下载模式而无法运行用户代码。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2024-06-20 22:15:30

1

主题

19

回帖

141

积分

注册会员

积分
141
发表于 2024-1-17 10:51:49 | 显示全部楼层
第六课
IO的工作模式
I/O口的复用功能
大多数I/0口线具有复用功能(也称为功能引脚切换)
P0口可复用为数据总线 (D7~D0) 、地址总线低8位 (A7~A0) 、ADC输入 (ADC8~ADC14) 、串口3、串口4、T3时钟输出、T3脉冲输入、T4时钟输出
T4脉冲输入、PWM输出控制
P1口可复用为ADC转换输入 (ADC7~ADCO,无ADC2) 、PWM输出、SPI通信线、第二串口、第三串口、系统时钟输出、外接晶体引脚、I2C通信线等
P2可作为地址总线的高8位输出 (A15~A8)。另外,P2口还用于SPI和I2C以及PWM输出。
P3口可复用为外部中断输入、计数器输入、SPI、I2C、比较器输入和输出、串口1、PWM输出等功能
P4口的复用功能可配置为SPI通信、读写控制信号、串口2、地址锁存信号等。
P5口的复用功能可配置串口3、串口4、比较器输入、复位脚、系统时钟输出、SPI接口的从机选择信号、PWM输出
P6口可复用为PWM输出。
P7口可复用为PWM输出和I2C接口。
I/0口的复用功能是通过设置相关的特殊功能寄存器实现的。相关寄存器及各个位的定义如表3-9所示。
拉电流方式--输出高电平和灌电流方式--输出低电平
三极管应用电路
截图202401171051213267.jpg
当需要驱动的功率器件较多时,建议采用达林顿管驱动器ULN2803。
I/O外部状态的输入
当I/O口工作于准双向口时,由于STC8H8K64U单片机是1个时钟周期 (1T)的8051单片机,速度很快,如果通过指令执行由低变高指令后立即读外部状态,此时由于实  际输出还没有变高,有时可能读入的状态不对。这种问题的解决方法是在软件设置由低变高后加延时,然后再读I/O口的状态
单片机应用系统的典型构成
非总线扩展方式的单片机应用系统构成
STC8H8K64U单片机内部已经有64 KB程序存储器和8K RAM,可以满足一般应用的存储器需求。此时,单片机的PO、P2和P4口不用于总线方式,即P0口和P2口用于普通I/0口功能;P4.2和P4.4不用于写控制信号和读控制信号,也用于普通I/O口功能
总线扩展方式的单片机应用系统构成
如果需要扩展存储器容量或者并行I/0,需要使用总线扩展方式。此时8位的数据总线由P0口提供,16位的地址总线由P2和P0口构成。P4口中的/WR (P4.2) 和/RD (P4.4) 引脚的作用是写控制和读控制。ALE (P4.5)
信号用于锁存器的锁存控制,以锁存由PO口输出的地址,从而实现地址和数据的分离。
截图202401171051453027.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2024-06-20 22:15:30

1

主题

19

回帖

141

积分

注册会员

积分
141
发表于 2024-1-17 11:36:29 | 显示全部楼层
第六课  第二部分  单片机汇编语言设计
伪指令
伪指令并不产生目标程序,不影响程序的执行,仅仅产生供汇编用的某些指令,以便在汇编时执行一些特殊操作。
设置起始地址ORG (Origin)
ORG addr16     其中,ORG是该伪指令的操作助记符,操作数addr16是16位二进制数,前者表明为后续源程序汇编后的目标程序安排存放位置,后者则给出了存放的起始地址值。ORG伪指令总是出现在每段源程序或数据块的开始。可使程序员把程序、子程序或数据块存放在存储器的任何位置。例如:
ORG 2000H
MOV A, 20H
表示后面的目标程序从2000H单元开始存放。
若在源程序开始不放ORG指令,则汇编将从0000H单元开始存放目标程序。
定义字节DB (Define Byte)
(标号: )    DB    <项或项表>
其中项或项表是指一个字节、数或字符串,或以引号括起来的ASCII码字符串。该指令的功能是把项或项表的数值(字符则用它的ASCI码表示)
存入从标号开始的连续单元中。
例如:   HERE:   DB   84H   (HERE) =84
    DB   43H   (HERE+1) =43H
又如:    ORG 1000H
      SEG:   DB 23H,'MCS-51'
截图202401171134022794.jpg
定义字DW (Define Word)
(标号: )    DW    <项或项表>
DW的基本含义与DB相同,但DB一般用于定义8位数据(一个字节)  DW定义16位数据
即一个字。在执行汇编程序时,机器会自动按低位字节在前,高位字节在后的格式排列(与程序中的地址规定一致) 。所以DW伪指令常用来建立地址表。
例:
ABC:  DW   1234H.08H
ABC:  DB     12H,34H,00H.08H
上两条指令是等价的。
伪指令DB、DW均是根据源程序需要,用来定义程序中用到的数据(地址) 或数据块
般应放在源程序之后,汇编后的数据块将紧挨着目标程序的末尾地址开始存放
为标号赋值EOU
(标号 )    EQU    <数值或表达式>
其功能是将语句操作数的值赋于本语句的标号,故又称为等值指令。相当于 C语言#define
如:       BLK   EQU    1000H   ;起别名
DATA指令           符号名 DATA 表达式
DATA 指令用于将一个内部 RAM 的地址赋给指定的符号名。
数值表达式的值在00H~0FFH之间,表达式必须是一个简单表达式。如:
BUFFER  DATA  40H    ;起别名
XDATA指令(External Data)
               符号名 XDATA 表达式
XDATA 指令用于将一个外部 RAM 的地址赋给指定的符号名。数值表达式的值在0000H~OFFFFH之间,表达式必须是一个简单表达式。如:
                        MYDATA    XDATA 0400H
定义位命令BIT             字符名称     BIT    位地址
该指令用于给字符名称定义位地址。如:
DOGOUT BIT P3.4      ;给看门狗起别名
经定义后,允许在指令中用DOGOUT代替P3.4。
文件包含命令INCLUDE
文件包含命令INCLUDE用于将寄存器定义文件 (一般的后缀名为.INC) 包含于当前程序中,与C语言中的#include语句的作用类似。使用格式为:
$ISNCLUDE (文件名)
可以STC8H8K64U单片机的寄存器定义保存在文件STC8H.INC中,使用时,将STC8H.INC文件拷贝到当前工程文件夹或者Keil安装文件夹的C51MNC文件夹中,并在程序的开始处使用下面的命令将其包含到用户程序中:
$INCLUDE(STC8H.INC)
使用上述命令后,在用户程序中就可以直接使用STC8H8K64U单片机的特殊寄存器名称
了。例如:
MOV P1M1,#00000000B
MOV P1M0.#00000001B  ;设置P1口的工作模式
源程序结束 END
END     《表达式)
END语句是一个结束标志,它告诉汇编程序,该程序段已结束。因此,该语句必须放在整个程序(包括伪指令)之后
  1. ;点灯
  2. $include (stc32g.inc)
  3. ORG 0000H
  4. LJMP MAIN
  5. ORG 0100H
  6. MAIN: MOV SP, #70H
  7. MOV  P2M1,#3CH
  8. MOV  P2M0,#3CH   
  9. main_loop: CLR P2.0;
  10. LCALL DELAY500MS;
  11. SETB P2.0;
  12. LCALL DELAY500MS;
  13. LJMP main_loop;
  14. DELAY500MS:            ;@11.0592MHz
  15. PUSH    DR0
  16. MOV        WR0,#21
  17. MOV        WR2,#6142
  18. NEXT:
  19. DEC        DR0,#1
  20. JNE        NEXT
  21. POP        DR0
  22. RET
  23. END
复制代码
  1. MCS-51系列单片机汇编语言程序框架
  2. ORG 0000H
  3. LJMP MAIN   ;跳转到主程序
  4. ORG 0003H
  5. LJMP INTO ISR;外部中断0入口
  6. ORG 000BH
  7. LIMP TO_ISR ;定时器0中断入口
  8. ORG 0013H
  9. LJMP INT1_ISR ;外部中断1入口
  10. ORG 001BH
  11. LJMP TI_ISR;定时器1中断入口
  12. ORG 0023H
  13. LJMP UART_ISR ;串口通信中断入口
  14. ORG 0100H
  15. MAIN: MOV SP,#70H ;设置堆栈指针
  16. ......;初始化内存区域内容
  17. ......;设置有关SFR的控制字
  18. ......;开放相应的中断控制
  19. LOOP:
  20.         ;进入主程序循环
  21.     LJMP  LOOP
  22. ;下面是各个中断服务子程序的入口
  23. INTO_ISR:......;外部中断0服务子程序
  24. ......;根据需要填入适当的内容
  25. RETI
  26. INT1_ISR:......;外部中断1服务子程序
  27. ......;根据需要填入适当的内容
  28. RETI
  29. TO_ISR:......;定时器0中断服务子程序
  30. ......;根据需要填入适当的内容
  31. RETI
  32. T1_ISR:......;定时器1中断服务子程序
  33. ......;根据需要填入适当的内容
  34. RET
  35. UART_ISR:......;串口通信中断服务子程序@V
  36. ......;根据需要填入适当的内容
  37. RETI
  38. ;下面可以编写其他子程序
  39. ;或者使用DB定义程序中所用的常数
复制代码
回复 支持 反对

使用道具 举报 送花

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

718

主题

1万

回帖

1万

积分

管理员

积分
15674
发表于 2024-1-17 11:36:50 | 显示全部楼层
建议立即赠送 STC8H实验箱,提高学习效率
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2024-06-20 22:15:30

1

主题

19

回帖

141

积分

注册会员

积分
141
发表于 2024-1-17 11:37:28 | 显示全部楼层
wl*** 发表于 2024-1-17 11:36
第六课  第二部分  单片机汇编语言设计
伪指令
伪指令并不产生目标程序,不影响程序的执行,仅仅产生供汇编 ...

MCS-51系列单片机汇编语言程序框架
最后要加END
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-6 22:05 , Processed in 0.130170 second(s), 112 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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