【实验箱已送】跟着STC教学研讨会 学习STC32G12K128 单片机原理及应用 学习打卡 感悟
本帖最后由 STCAI-32位8051 于 2023-8-16 10:55 编辑跟着STC教学研讨会 学习STC32G12K128 单片机原理及应用 学习打卡 感悟 一起来学单片机
2023.08.08北京化工大学何宾老师第五讲《从8051到32位8051》《STC32位8051单片机原理及应用-STC32G12K128》
.
熟悉单片机和桌面系统的基本架构
单片机是一个芯片,内部集成cpu与 osc,flash,sram等各种外设。
系统中 cpu是单独的,还要外接ssd(hdd),ddr5(4)ram,及io。
处理器的和指令集类型
stc单片机的IAP和ISP
ISP 离线固化程序,stc32g 通过usb 固化
IAP 在线固化程序,理解为两块flash空间,一块是运行中的flash,一块是等待固化烧录的空间。
熟悉STC 单片机的架构和各种功能模块 学习了 C语言运算符和进制数,具体如下
格式字符 含义
%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~~~~表示数字)
定义变量 char a=170 ,b=90;
char c;
c=a+b
a赋值170 但单片机会理解为-86 内存中是0xAA
使用的MOVS 指令 当作有符号的变量
WR6中 FFAA 进行了符号拓展
结果式-86+90 = 4
定点数 小数点固定 Qm.n m+n 为定值
浮点数32位保存 s + 8位e +无尾数m
X=(-1)^S x 1.m x 2 ^(e-bias) bias = 127
会有很小的误差
floatdouble(64)
二进制错误值
nan +inf -inf
程序
定义变量float a=100,b=100;
float c;
c=a+b;
通过汇编 看得到 变量a b 放到了 WR 中
然后搬到了 DR 中
LCALL 调用了一个很复杂的 浮点运算函数 本帖最后由 阿孟 于 2023-8-11 14:01 编辑
file:///F:/360MoveData/Users/Administrator/Desktop/111111.jpg Z80时期8086时期 Intel 8081 Intel 8051 Intel 8751 Atmel AT89C51
STC89C51
STC12系列、STC15系列
STC8系列
STC32系列
STC32位单片机作为最新的单片机系列,继承了前几个系列的优点之下,相比STC8H3K64S4系列单片机,STC32G12K128系列单片机增加了DMA、RTC、CAN等外设。
4路串口。5个定时器。8路16位高级PWM。15路12位ADC。2路CAN总线功能单元。1路I2C串行总线。支持DMA(SPI/I2C/ADC/UART/LCM)。除中断引脚外,所有IO口均支持中断。STC32G12K128系列包括的单片机型号有:STC32G12K64、STC32G12K128 。 C语言运算符和进制数,如下
格式字符 含义
%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~~~~表示数字)
数的进制:2进制 10进制 16进制
10进制 2进制 10进制 2进制
0 0000 5 0101
1 0001 6 0110
2 0010 7 0111
3 0011 8 1000
4 0100 9 1001
10进制 16进制 10进制 16进制
0 0 17 11
1 1 18 12
2 2 19 13
3 3 20 14
4 4 21 15
5 5 22 16
6 6 23 17
7 7 24 18
8 8 25 19
9 9 26 1A
10 A 27 1B
11 B 28 1C
12 C 29 1D
13 D 30 1E
14 E 31 1F
15 F 32 20
16 10 33 21
C语言常用运输符
1.算术运算符
加(+)减(-)乘(*) 除(/)
模(余)运算符(%): 不允许出现浮点型,余数正负取决于被除数正负
自增(++i,i++) 自减(--i,i--)
2.位运算符
右移(>>) 左移(<<)
按位与(&)
按位或(|)
按位与或(^)
取反(~)
3.赋值运算符
+=加赋值
-=减赋值
*=乘赋值
/=除赋值
%=求余赋值
&=按位与赋值
|=按位或赋值
^=按位与或赋值
<<=左移位赋值
>>=右移位赋值
本帖最后由 阿孟 于 2023-8-11 16:34 编辑
运算器B寄存器
在乘法和除法运算中,B寄存器有特殊用途。对于在其他情况,它作为普通寄存器
B寄存器位于SFR地址为OxFO的位置乘法操作
参与乘法运算的一个操作数保存在B寄存器中,另一个保存在A寄存器中,并且,在乘法运算后,乘积的高8位保存在B寄存器中,乘积的低8位保存在A寄存器中
除法操作
参与除法运算的被除数保存在A寄存器中,除数保存在B寄存器中。并且,在除法运算后,所得的商保存在A寄存器中,余数保存在B寄存器中
使用微型机,就要学会编写程序,用什么语言和机器对话,最直接的就是用机器语言与机器对话,单片机能够识别机器指令二进制数码,但机器语言对人来说不便记忆、不方便交流,就产生了汇编语言。汇编语言是一种采用助记符表示指令、数据和地址的语言。例如:机器指令00101011,汇编语言表示成,ADD A,R3。助记符ADD表示做加法运算。
重点讲解了8位单片机处理器的内部结构、字节存储顺序、8单片位机存储器结构和地址空间,和总线的概念。个人觉得,理解和掌握单片机的内部结构、总线结构,对设计开发应用单片机时充分利用内部资源和灵活添加外设有很大帮助
本帖最后由 阿孟 于 2023-8-12 14:13 编辑
看了陈老师讲了8051的汇编语言,通过keil仿真调试,对数据传送有了更直观的了解。例如:MOVR0, #33H,带#号的两位16进制数代表立即数,这个#可以理解为其后的数就在指令中。#33,操作数是33,在指令的第二字节中。MOVR0, #33H,操作码78,工作寄存器号0,操作数33,功能R0<——#33H。
页:
[1]
2