学习《STC USB型 真1T 8051 单片机原理及应用-STC8H8K64U》视频打卡
本帖最后由 LoveAmanda 于 2024-6-29 21:22 编辑第1个视频:
1、老平台8086已经落伍,继续研究的价值不高,但基础还得打牢,对比89c31,at89c51,stc89c51,stc12/15/8/32等多款mcu,选择一款合适的单片机对学生学习和产品应用影响是很大的;
2、最新典型单片机stc8h8k64u资源丰富,方便调试仿真,不仅适合深入学习寄存器编程方式,还可以使用库函数进行开发,且汇编指令兼容51;
3、针对小白,你需要了解阻容感,LED,三极管MOS管等基础的分立器件,对于后续的硬件和软件都是必要的,其工作原理,参数解读是其应用的基础,例如要知道数码管是如何工作的,你必须先要知道LED是怎么工作的;
4、如果你有一定的基础,你可以使用面包板进行基本电路的搭建,再去进行编程;如果你只想做驱动开发,硬件电路只是知道原理即可,那么可以使用stc公司提供的开发板或实验箱等。
本帖最后由 LoveAmanda 于 2024-6-29 09:42 编辑
第2个视频:
1、万能的点灯=Hello World,LED的闪烁能充分证明你能把开发板、开发环境、编程语言结合起来了,你已经迈入了MCU的门内,至于内部的天马行空就需要你细细品味,慢慢钻研了;
2、Keil软件各种功能的熟练使用能为软件开发提高效率,stc-isp的功能强大,里面不仅仅是下载代码的工具,还支持串口,can,USB等调试助手,甚至常用的软件例程也有,让大家可以省掉很多基础代码的编写,等后续继续学习的时候可以多多关注;
3、计算机基础知识,如进制转换,整形数,浮点数,字符数等都需要提前了解,这样在编程过程中才能更好的理解;其次微型计算机或MCU内部的基本架构由什么组成,充当什么角色,有什么作用。
以下是汇编代码,P1.0的LED闪烁功能
ORG 0000H ;程序执行的起始地址
LJMP Main ;跳转到main函数
ORG 0100H ;程序跳转到0100H开始执行
Main:
MOV P1M0,#00H ;IO引脚配置
MOV P1M1,#00H
While:
CLR P1.0 ;P1.0=0
LCALL Delay1s ;延时1s
SETB P1.0 ;P1.0=1
LCALL Delay1s ;延时1s
LJMP While
Delay1s: ;修改R5的值即可更改时间(不精准)
MOV R5, #08H ;单周期,8次 t0=8*125000=1s
D3: ;t1=t2*250=500*250=125000
MOV R6, #0FAH
D4:
MOV R7, #0FAH ;t2=250*2=500
D5:
DJNZ R7, D5 ;R7=250自减,直到为0跳出循环,双周期
DJNZ R6, D4 ;R6=250自减,直到为0跳出循环,双周期
DJNZ R5, D3 ;R5=100自减,直到为0跳出循环,双周期
RET
END
第3个视频:
1、数字逻辑基础,如何理解信号的高低电平,上下边沿以及逻辑运算与或非门是什么;
2、什么是单片机,有什么特点,以及对应的应用场景是哪些,可以这么说,生活中单片机无处不在,比如手机、电脑、音响、电视、玩具等等;
3、当开发单片机的程序时,如果发现代码与现象不一致,那么就需要使用仿真功能,查看单片机内部寄存器的实时工作状态,这样才能更好的查找问题。 本帖最后由 LoveAmanda 于 2024-6-29 21:16 编辑
第4/5/6/7/8/9/10个视频:
1、单片机内部结构,老旧的51单片机功能简单,主要由运算器、控制器、存储器以及输入输出设备组成,而STC8H内部还集成了看门狗,ADC,IIC,SPI,RTC,PWM,USB等通用接口,方便更多应用场景使用;
2、作为嵌入式软件开发工程师,我们肯定是需要了解数据是如何存储的,是存在RAM还是ROM,特别是STC8单片机的256Byte数据RAM还兼容传统51,如果使用C语言开发,可能数据如何存放由开发环境帮忙放置;如果学习汇编语言,那么就要对每个变量进行对应的地址存放,不同地址访问方式还可能不一样;
3、STC8的IO工作模式兼容传统的双向口,还支持推挽、上下拉输入、开漏模式,从而可以更好的适配外部外设的需求,以及GPIO使用的常用功能,如LED,蜂鸣器等;
4、汇编真的不重要了吗?并没有,汇编也是无处不在的,特别是底层开发的某个节点,对执行效率、内存容量有要求的地方,汇编的优势是C无可比拟的;
5、常用汇编指令需要先熟稔于心,比如CLR、SETB,MOV,ADD,SUBB,MUl,DIV等,而少用的指令比如SWAP交换高四位和低四位这种则在使用时进行查询其用法即可;
6、汇编编程与C程序函数类似,首先需要搭模板框架,然后只需要在对应位置填写用户代码即可。汇编代码会跳来跳去,因此需要提前规划好功能模块或者通过思路画流程图进行编写。功能开发过程中需要通过调试手段进行仿真验证,而不是一次性将所有功能全部完成,避免出现问题会无从下手;
7、俗话说“心中无女人,拔剑自然神”,那么汇编和c的开发也是需要心无旁骛,聚精会神,而不是三天打鱼两天晒网,不断的写、练、调试,在产生bug和解决bug中不断轮回,才能实现你的单片机开发梦想。
汇编模板:
Value EQU 30H ;变量定义
P20 EQU P2.0 ;引脚定义
ORG 0000H ;程序执行的起始地址
LJMP Main ;跳转到Main函数
ORG 0100H ;程序跳转到0100H开始执行
Main:
MOV P1M0,#00H ;初始化:IO引脚配置
MOV P1M1,#00H
While: ;主循环
CLR P20 ;P20=0
LCALL Delay1s ;延时函数调用1s
SETB P20 ;P20=1
LCALL Delay1s ;延时函数调用1s
LJMP While ;回到while循环
Delay1s: ;修改R5的值即可更改时间(不精准)
MOV R5, #08H ;单周期,8次 t0=8*125000=1s
D3: ;t1=t2*250=500*250=125000
MOV R6, #0FAH
D4:
MOV R7, #0FAH ;t2=250*2=500
D5:
DJNZ R7, D5 ;R7=250自减,直到为0跳出循环,双周期
DJNZ R6, D4 ;R6=250自减,直到为0跳出循环,双周期
DJNZ R5, D3 ;R5=100自减,直到为0跳出循环,双周期
RET
END
第11/12个视频:
1、“千呼万唤始出来”,C语言是基础,编程语言都是互通的,将一门语言学精、细、深,那么其它语言上手也都类似;
2、因为C和汇编有重合的关键字如data,xdata等,因此在C编程的时候务必要注意这些细节。C语言编程的数据变量类型很多,需要合适的选择,如标志位只有2个状态,那么使用bit定义即可,而不需要使用long int,int等过犹不及、大炮打鸟的类型,适合才是最好的;
3、单片机开发常用的都是裸机开发,而在使用Free-RTOS操作系统或功能很复杂时,需要使用C语言中的指针、结构体等功能,方便后期移植、维护等,基础不牢,地动山摇。;
本帖最后由 LoveAmanda 于 2024-6-30 15:56 编辑
后续的视频,比如定时器,外部中断,串口,ADC,IIC,SPI等外设就需要实操进行了,不能像之前学习理论一样,可以通过调试进行基本验证了,而是需要实物进行支撑,正式成为一名专业的“点灯大师”,等待最小系统板回来测试。
最小系统板,支持2个LED,3个按键(1个复位),满足USB和UART下载,并将外部晶振加上,电源使用3.3V。
本帖最后由 LoveAmanda 于 2024-7-7 22:50 编辑
STC官方论坛积分兑取了STC8H8K64单片机,然后使用嘉立创EDA画sch和pcb,并打板回来自己手工焊接。
最小系统一把成功,看看效果还不错,弄个点灯大师专享例程,跑起来吧。
使用拨码按键作为上下电,P3.2用于USB识别,以及外部中断按键,2个LED,1个复位按键,并将外部晶振引出,方便后续使用焊接。
加油{:4_174:} 本帖最后由 LoveAmanda 于 2024-7-16 22:14 编辑
这几天又弄了个STC32G12K128的最小系统,跟STC8H电路一样,只是换了个芯片而已,必须跑起来。。。
虽然实物的丝印弄错了,不影响使用哈。。。不用说,芯片肯定是白嫖STC的,打板嘉立创白嫖,现在的时代确实是电子爱好者DIY最好的时代。。。
跟着各路大神学习进步
页:
[1]
2