学习心得STC32位8051单片机原理及C语言程序设计视频教程
本帖最后由 327342551 于 2024-1-2 10:51 编辑关于每集学习完的心得,或者之前没注意到的内容,留作记录。
环境说明
我手边只有一个别人的 stc89c52 的单片机,和视频中的是不一样的。下面的代码,如果是贴出来的,都是在 stc89c52 上面跑出来的
这个开发板的型号是 普中的 HC6800-ES 非常老的一个别人不要的开发板。
我的环境是 VScode+sdcc的编译器。没有用keil,主要因为版权问题
第一集
- 单片机是一个小的精简的电脑
- 只有最适合的单片机才是最好的 第二集
- 介绍开发板各功能模块
- 介绍单片机的资源 第三集
- 介绍 stc-isp 软件下载及内部的功能
- pdf查阅的技巧
- 开发环境安装 c251
- usb 下载功能介绍 本帖最后由 327342551 于 2023-12-30 21:15 编辑
第四集
[*]P 开头的是 io 口,可以直接控制 P0 组和 P0.0 的单个 io
[*]sfr 控制的是 io 组
[*]sbit 为单个 io
[*]include 头文件是引用需要加相对或绝对地址
[*]usb 自动下载 cdc hid 不同形式
[*]头文件的定义
[*]main 函数之后才定义的函数,需要在main 之前先声明(提前写一下)
[*]EA 1 cpu打开所有中断
第五集
- 使用 usb 函数,实现 printf 打印,串口输出
- ascii 码表
- 进制转换 16进制转换,高位是/16后的整数,低位是/16后的余数,转二进制是 高4 低4
- 16 进制换算 2 进制,好理解
- 算术运算 加减乘除
- 位运算,左移就是左移动一位,与或非是对 2 个数的操作最终以二进制来实现。取反是一个数,计算也是用二进制来实现。
- unsigned 代表无符号,因为第一位是符号,正负所以无符号,是2的n次方的 0-多少,所以有符号的会少 2 倍,但是有正负 第六集
- 资料在软件里面下载方便
- #define MAIN_Foc 定义主时钟
- while 判断条件为真假,真1 一直执行,假0 不执行
- while 先判断条件后执行代码,do while 先执行一次再判断条件
- --a 先计算--a之后,a的值,所以是先计算。a-- 是打印完a的值再--操作,所以有滞后
- 函数的定义,声明 就是个空的函数没有东西,调用
- 在头文件里面做声明,在c文件里面实现。有固定的写法
- 头文件的定义例子
```c
#ifndef __MATH_H
#define __MATH_H
int Add (int pram1,int parm2);
int Sub (int pram1,int parm2);
#endif
``` 第七集
- 按键消抖 delay 法
- = 赋值,== 等于
- 取反为!
- while (key2 == 0)while 里面可以用这样的条件
- 使用 while 卡死程序,然案件只执行一次
- 移位实现流水灯
- 数组大括号引用,逗号分开。做码表
- 使用数组,0开始,调用时候 P6=LED_DataTab
- 用num 来代替 tab 里面的索引,都挺要赋初值 第八集
- 有源蜂鸣器和无源蜂鸣器,无源的需要有 pwm,有源的上电就响
- 电磁炉功能分析 好评,绝对是实践的好东西
- bit 定义 0 1 这样的值 本帖最后由 327342551 于 2023-12-31 16:59 编辑
第八集 作业
- 变量赋值最好在数据类型定义的时候就赋初值
- 使用寄存器组来定义全部 led 亮,好用
- 先理清if else的思路,做好代码块再去写代码比较好