wlo 发表于 2024-1-15 10:44:58

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

陈桂友教授《STC8051单片机原理及应用-STC8H8K64U》学习记录
1.之前一直在看并没有打卡记录,从今天开始对每节课进行打卡记录,对学习过程中的感悟进行总结。(先占个楼)

wlo 发表于 2024-1-15 11:47:58

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

#include <STC32G.H>
#define MAIN_Fosc       24000000L   //定义主时钟
unsigned char i;

void main(void)
{
        unsigned char j;
    P2M1 = 0x00;   P2M0 = 0x00;   //设置为准双向口


    while(1)
    {
                for(j=0;j<8;j++)
                {
                        delay_ms(30);
                        i = 0xfe<<j;                //流水灯
                        P2 =i;
                        delay_ms(30);
                }
                       

    }
}
void delay_ms(u8 ms)
{
    u16 i;
    do{
      i = MAIN_Fosc / 6000;
      while(--i);   //6T per loop
    }while(--ms);
}

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为01^1为00^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条件成立;   或者“!真”结果为“假”;“!假”结果为“真”;

芯LYS 发表于 2024-1-15 13:27:20

全球8051爱好者技术互助交流论坛 www.STCAIMCU.com 欢迎您的到来!一起交流,一起成长!

【免费+包邮】 送/申样热线:0513-55012928、0513-55012929、0513-55012966
工作时间:8:30-12:0013: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

wlo 发表于 2024-1-15 19:45:33


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

单片机的中央处理器(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页有说明

wlo 发表于 2024-1-15 19:49:48

wlo 发表于 2024-1-15 19:45
第四节课 单片机内部结构和外围电路设计
STC新推出的STC8H单片机
2.1CPU结构


为什么我这截图会在下面,我是放中间的
{:dizzy:}

wlo 发表于 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。

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下载模式而无法运行用户代码。

wlo 发表于 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所示。
拉电流方式--输出高电平和灌电流方式--输出低电平
三极管应用电路

当需要驱动的功率器件较多时,建议采用达林顿管驱动器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口输出的地址,从而实现地址和数据的分离。

wlo 发表于 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'

定义字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之间,表达式必须是一个简单表达式。如:
BUFFERDATA40H    ;起别名
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语句是一个结束标志,它告诉汇编程序,该程序段已结束。因此,该语句必须放在整个程序(包括伪指令)之后
;点灯
$include (stc32g.inc)
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV SP, #70H
MOVP2M1,#3CH
MOVP2M0,#3CH   
main_loop: CLR P2.0;
LCALL DELAY500MS;
SETB P2.0;
LCALL DELAY500MS;
LJMP main_loop;
DELAY500MS:            ;@11.0592MHz
PUSH    DR0
MOV      WR0,#21
MOV      WR2,#6142
NEXT:
DEC      DR0,#1
JNE      NEXT
POP      DR0
RET
END
MCS-51系列单片机汇编语言程序框架
ORG 0000H
LJMP MAIN   ;跳转到主程序
ORG 0003H
LJMP INTO ISR;外部中断0入口
ORG 000BH
LIMP TO_ISR ;定时器0中断入口
ORG 0013H
LJMP INT1_ISR ;外部中断1入口
ORG 001BH
LJMP TI_ISR;定时器1中断入口
ORG 0023H
LJMP UART_ISR ;串口通信中断入口

ORG 0100H
MAIN: MOV SP,#70H ;设置堆栈指针
......;初始化内存区域内容
......;设置有关SFR的控制字
......;开放相应的中断控制
LOOP:
      ;进入主程序循环
    LJMPLOOP
;下面是各个中断服务子程序的入口
INTO_ISR:......;外部中断0服务子程序
......;根据需要填入适当的内容
RETI
INT1_ISR:......;外部中断1服务子程序
......;根据需要填入适当的内容
RETI
TO_ISR:......;定时器0中断服务子程序
......;根据需要填入适当的内容
RETI
T1_ISR:......;定时器1中断服务子程序
......;根据需要填入适当的内容
RET
UART_ISR:......;串口通信中断服务子程序@V
......;根据需要填入适当的内容
RETI
;下面可以编写其他子程序
;或者使用DB定义程序中所用的常数

神农鼎 发表于 2024-1-17 11:36:50

建议立即赠送 STC8H实验箱,提高学习效率

wlo 发表于 2024-1-17 11:37:28

wlo 发表于 2024-1-17 11:36
第六课第二部分单片机汇编语言设计
伪指令
伪指令并不产生目标程序,不影响程序的执行,仅仅产生供汇编 ...

MCS-51系列单片机汇编语言程序框架
最后要加END
页: [1] 2
查看完整版本: STC8H8K64U学习打卡及心得 | 建议立即赠送 STC8H实验箱,提高学习效率