山东大学陈桂友教授主讲《STC最新8051单片机原理及应用》打卡
第一次尝试着写帖子 有不足欢迎斧正运算器是计算机的运算部件,用于实现算术逻辑运算、位变量处理、移位和数据传送等操作。它是以算术逻辑单元ALU为核心,加上
TMP1、TMP2:暂存器
ACC:累加器
B寄存器:用于乘法运算
PSW:程序状态寄存器
PC:程序计数器,指向程序存储器
WDT:看门狗
LVD:低电压监测
MDU16:16位硬件乘法器
LCM:液晶接口
DPTR:地址指针
SP:堆栈指针
SFR:特殊功能寄存器
组成的
实验箱功能有:
8051单片机中包含中央处理器、程序存储器 (4KBROM)、数据存储器(
128B RAM)、2个16位定时计数器、4个8位1/0口、个全双工串行通信接口和中
断系统等,以及与1O口复用的数据总线、地址总线和控制总线三大总线。
单片机学习条件有
以及
第二课:
微指令:芯片设计人员使用的指令,芯片设计人员根据指令集架构实现芯片设计(微架构)。
机器指令:单片机执行的指令。可以通过仿真借助助记符观察。
汇编语言:是对机器指令的一种抽象,是解读机器指令的唯一桥梁。观察观察机器指令执行的唯一窗口。
高级语言:实现面向过程应用的通用语言,易于让应用设计人员理解标椎应用语言,需要编译才生成可执行文件,机器才能执行。
特殊功能寄存器:
传统特殊功能寄存器(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 上电默认准双向口/弱上拉模式
除此之外,上电默认高阻输入,使用前需配置模式
单片机 CPU指令类型和格式
MCS-251 ISA中包含了268条指令,而MCS-51 ISA中只包含了111条指令,指令的规模为 MCS-51 ISA指令规
模的近2.5倍
口按照所实现的功能,将STC15单片机内8051 CPU指令集分为:
算术运算指令
逻辑指令
数据传输指令
位指令
控制指令
在汇编助记符指令中,(寄存器)表示奇存器中的内容,((寄存器))表示寄存器中的内容为存储器的地址。比如 (RO) 表示RO寄存器中的内容,((R0))表示RO中寄存器的内容为指向存储器的地址。
加法指令
■ 溢出的判断
•对于无符号的整数加法,CY 标志可用于指示相加的结果是否发生了溢出
•如果加法结果的第6位有进位但第7位没有进位,或者第7位有进位而第6位没有进位,则设置溢出标志oV。对于有符号整数相加,当两个正数相加结果为负数,或者两个负数相加结果为正数时,表示计算结果的溢出,此时将溢出OV标志设置为 “1〞 https://down.dingtalk.com/ddmedia/iQEcAqNqcGcDAQTNA14FzQJYBtoAI4QBpCEqjwwCqsUkHpxzSF-brHIDzwAAAYn4SZBJBM4AFYVbBwAIAAoE.jpg_720x720q90.jpg?auth_bizType=IM&auth_bizEntity=%7B%22cid%22%3A%222377846730%3A2377846730%22%2C%22msgId%22%3A%2216581457775035%22%7D&bizType=im 欢迎楼主继续打卡学习
有机会优先获赠实验箱+包邮
https://www.stcaimcu.com/data/attachment/forum/202308/11/091702k4gxonb0js1021jx.png
后面因为一些自身事情耽搁了更新
第五节课笔记下面补上
格式字符 含义
%d 以十进制整数形式输出
%ld 以十进制长整形输出
%f 以单精度浮点型输出
%lf 以双精度浮点型输出
%0 以八进制整型输出整数。
%x或%X 以十六进制形式输出整数
%u 以十进制无符号整形输出
%i 以十进制整形输出(与%d无异)
%c 输出单个字符
%s 输出字符串
%e或%E 以指数形式输出
%g或%G 自适应数据输出(数据够大或够小则以指数形式输出,否则以小数形式输出
%p 输出地址
标志 含义 实例
n.m n表示整数占几行,m表示小数占几行 %2.3f
- 输出的结果左对齐 %-d
空格 输出值为正时冠以空格,为负时冠以负号
# 输出带有前导的数据(八进制为0~ %#d
~~十六进制为X~~~~表示数字)
存储器空间及储存器-6
数据存储器
高128字节RAM 和特殊功能寄存器
80H-FFH SFR
单片机的功能是通过sfr设置的
分SFR 与 XFR
拓展数据存储区域
0000h-1fffh 8192b 的XRAM
xdata 声明
unsigned char xdata i = 0;
单片机的引脚
LQFP64 封装 小圆点处为第一脚
PDIP40
最小系统
低电平复位电路
按键按下断电/上电 电路
滤波电容
逻辑符号图
标出io/特殊功能 引脚的逻辑图
画原理图时更容易分析
引脚简介
VCC/AVcc 5v
Gnd/AGnd 接电源地
晶振 基本不用 用做普通io
ALE 没啥用
NRST 可做复位脚
IO 的作用
开关量输入输出
复用
IO的工作模式
准双向 推挽 高阻 开漏
可使用工具设置
要先设置模式在使用,多数默认为高祖输入状态
上个帖子第二张照片发错了 时基单元
这个可编程定时器的主要部分是一个带有自动重装载的16位累加计数器,计数器的时钟通过一
个预分频器得到。
软件可以读写计数器、自动重装载寄存器和预分频寄存器,即使计数器运行时也可以操作。
时基单元包含:
● 计数器寄存器(TIMx_CNT)
● 预分频寄存器(TIMx_PSC)
● 自动重装载寄存器(TIMx_ARR)
自动重装载寄存器是预加载的,每次读写自动重装载寄存器时,实际上是通过读写预加载寄存
器实现。根据TIMx_CR1寄存器中的自动重装载预加载使能位(ARPE),写入预加载寄存器的内
容能够立即或在每次更新事件时,传送到它的影子寄存器。当TIMx_CR1寄存器的UDIS位
为’0’,则每当计数器达到溢出值时,硬件发出更新事件;软件也可以产生更新事件;关于更新
事件的产生,随后会有详细的介绍。
计数器由预分频输出CK_CNT驱动,设置TIMx_CR1寄存器中的计数器使能位(CEN)使能计数器
计数。
注意:实际的设置计数器使能信号CNT_EN相对于CEN滞后一个时钟周期。
预分频器
预分频可以以系数介于1至65536之间的任意数值对计数器时钟分频。它是通过一个16位寄存器
(TIMx_PSC)的计数实现分频。因为TIMx_PSC控制寄存器具有缓冲,可以在运行过程中改变它
的数值,新的预分频数值将在下一个更新事件时起作用。
以下两图是在运行过程中改变预分频系数的例子。
图145 预分频系数从1变到2的计数器时序图
1,计数模式
计数器从0累加计数到自动重装载数值(TIMx_ARR寄存器),然后重新从0开始计数并产生一个计
数器溢出事件。
每次计数器溢出时可以产生更新事件;(通过软件或使用从模式控制器)设置TIMx_EGR寄存器的
UG位也可以产生更新事件。
设置TIMx_CR1中的UDIS位可以禁止产生UEV事件,这可以避免在写入预加载寄存器时更改影
子寄存器。在清除UDIS位为’0’之前,将不再产生更新事件,但计数器和预分频器依然会在应产
生更新事件时重新从0开始计数(但预分频系数不变)。另外,如果设置了TIMx_CR1寄存器中的
URS(选择更新请求),设置UG位可以产生一次更新事件UEV,但不设置UIF标志(即没有中断或
DMA请求)。
当发生一次更新事件时,所有寄存器会被更新并(根据URS位)设置更新标志(TIMx_SR寄存器的
UIF位):
● 传送预装载值(TIMx_PSC寄存器的内容)至预分频器的缓冲区。
● 自动重装载影子寄存器被更新为预装载值(TIMx_ARR)。
以下是一些在TIMx_ARR=0x36时不同时钟频率下计数器工作的图示例子。
图147 计数器时序图,内部时钟分频系数为1
2.时钟源
计数器的时钟由内部时钟(CK_INT)提供。
TIMx_CR1寄存器的CEN位和TIMx_EGR寄存器的UG位是实际的控制位,(除了UG位被自动清
除外)只能通过软件改变它们。一旦置CEN位为’1’,内部时钟即向预分频器提供时钟。
下图示出控制电路和向上计数器在普通模式下,没有预分频器时的操作。
3,调试模式
当微控制器进入调试模式(Cortex-M3核心停止)时,根据DBG模块中的配置位DBG_TIMx_STOP
的设置,TIMx计数器或者继续计数或者停止工作。
第五次打卡
1. 汇编语言的概念及格式
用助记符来描达机器指今的语吉称为行号语言或汇编语高,汇编语言一般格式如下:
[标号:操作码助记符[第一操作数][第二採作数][第二採作数][:注释]
其中,带有中括号的内容是可以省略的内容或者指令格式中不需要的内容。
标号后面有个冒号一”
它实质工作是标号所在行的指令的地址,根据程序设计的需要设置。标号是由字母开头的有意义的字符串组成,例如:
LOOP LOOP1 TABLE.
另外,在汇编语言程序中,标号也用作子程序的名字。
2. 指令代码的存储格式
指令代码是汇编语言中指令的二进制表示方法,是指令在存储器中存放的形式。在机器中为了方便表示,将8位二进制码表示为一个字节。
8051内核的单片机的指令长度有单字节、双字节、三字节三种,在存储器中分别占有1~3个单元。其格式如下:
单字节指令:
RET
双字节指令:
MOV A,#OFH
三字节指令:
MOV 74H,#OBH
;机器代码:2ZH
;机器代码:74H OFH
;机器代码:75H 74H OBH
2.指令代码的存储格式
指令代码是汇编语言中指令的二进制表示方法,是指令在存储器中存放的形式。在机器中为了方便表示,将8位二进制码表示为一个字节。
8051内核的单片机的指会长度有单字节、双字节、三字节三种,在存储器中分别占有1~3个单元。其格式如下:
单字节指令:
RET
;机器代码:2ZH
双字节指令:
MOV A,#OFH
;机器代码:74H OFH
三宁节指令:
MOV 74H,#OBH
;机器代码:75H 74H OBH
页:
[1]