来荣荣 发表于 2025-1-12 18:33:08

新手学习打卡

第一集1.8051U的优势 屏幕显示(8位并口,刷频率高)·和视频播放(串行flash编程器) Iis录放音(脱离录放音模块) PWM_DMA(ws2812点阵屏幕显示,不会有干扰) 频谱分析仪(上位机isp显示fft图像) 手写计算机(类ai) QSPI,PWM移相,硬件乘除,单精度浮点 兼容早期89C52,12C5A60S2等芯片兼容8位32位8051指令集

来荣荣 发表于 2025-1-12 18:40:52

1.硬件部分。正面反面2. 软件部分file:///C:/Users/GUOTAI~1/AppData/Local/Temp/ksohtml22604/wps3.jpgKile:用于编程Isp:下载程序到单片机中。(推荐新版)
修改irc频率:在文件中有定义【USB 下载方法 一,P3.2 按键,再结合停电上电 进自带USB直接下载】
1、按下板子上的 P3.2/INT0 按键,就是 P3.2 接地
2、给目标芯片重新上电,不管之前是否已通电。
---电子开关是按下停电后, 再松开就是上电
    等待电脑端 ISP 下载软件中自动识别出“(HID1) USB Writer”后,
   就与 P3.2 状态无关了,这时可以松开 P3.2 按键
   (P3.2 在用户程序区可做其它任意用途)
---传统的机械自锁紧开关是按上来停电,按下去是上电
3,点击电脑端下载软件中的【下载/编程】按钮
   (注意:USB 下载与串口下载的操作顺序不同)
下载进行中,几秒钟后,提示下载成功!

来荣荣 发表于 2025-1-13 20:37:12

第二集新建工程,选择芯片,添加源文件之类的操作不再赘述8051模式设置 下拉模式 当代码超过64k时 HEX文件设置超过64K选386,没超过则选择80打勾生成hex文件 头文件<>与””<>:系统路径文件“”:当前目录文件再到系统路径文件利用ips生成底层.h文件

IO口设置 用P0M0与P0M1直接配置p0口的脚的模式 Isp配置io口


来荣荣 发表于 2025-1-15 15:56:12

第四集

USB不掉电下载

稳定高效采用查询模式
移植过程
1.先复制头文件
(.lib由.c与.h组成,且不能打开修改,方便快速移植)


2.再复制.h文件

3.      添加文件

4.      添加.h文件

5.      添加初始化以及一些命令






屏蔽未调用函数的方法
在魔术棒中的L251 Miso警告位置输入57


来荣荣 发表于 2025-1-16 20:13:16

第五集
c语言基础
1.使用printf
去掉stc32_stc8_usb.h引用头文件的//

2.常用转义符
Isp串口使用注意接收信息模式。
3.数据的基本类型
4.基本运算符
Tip:%%表示%

来荣荣 发表于 2025-1-16 21:17:55

第六集
什么是GPIO?
输入输出端口,高电平电压=VCC,低电平=GND,VCC<5.5,高电平电压<VDD+0.3

分为四种模式:准双向口,推挽输出,高阻输入,开漏模式。

灌电流:外接VCC
拉电流:外接GND

一般用准双向口。

输出默认打开施密特触发器
低电平<1.07,高电平>1.18
练习:按键输入检测
Tip;定义变量要放在赋值与宏定义之间
注意按键会有电压抖动(大约在20ms以内)
使用延时时为需加入三句代码
WTST=0;//设置程序指令延时参数
EAXFR=1;//拓展寄存器(XFR)访问使能
CKCON=0;//提高访问XRAM速度
延时中的_nop_();函数调用需要声明头文件“intrins.h”

来荣荣 发表于 2025-1-16 23:14:29

第7集
定时器主要能打断主循环完成特定功能。
1.使用ips生成需要的定时初始化函数
Tip:选择12分频。
2.中断服务函数(后面加interrupt中断号)
串口打印时出现乱码在乱码后加/xfd就能正常使用。
0Xfd,0xfe,0xff,字符编码在编译过程中会被跳过
解决办法:在0xfd后加0xfd


具体配置内容
TM0PS+1
定时器放慢倍数(分频)
AUXR
寄存器进行12分频或者1分频

TMOD
主要用c/t用于计数或是计时。
GATE是否用外部脚控制(基本不用)
模式设置。

TH0与TL0
存储计时
TF0:允许中断

函数的定义,声明,调用
返回值类型 函数名(入口参数)
{
//函数体
//函数执行代码
return返回值
}
声明
要在使用的地方前写
返回值类型 函数名(入口参数);
调用
返回值类型 函数名(入口参数)

来荣荣 发表于 2025-1-18 20:39:33

第八集
周期性调度任务
为防止延时太多拖慢cpu运行速度所以用定时很小的定时器代替
基本框架
定时器

主函数

数组使用
1.定义
   类型 名称[长度]={数组};
2.使用
   赋值:名称[索引]=数值;
For的使用
   For(i=初值;判断条件(满足运行一遍{});运行一遍{}后运行的内容)
{

}
Egfor(i=0;i<3;i++)
{

}
按键在按下后会卡在while()按下判断里影响其他程序并行运行。
按键函数优化



文件创建(.c和.h)
新建文件夹
添加到工程
添加引用路径
新建.c和.h文件格式要求

框住部分注意大写
注意添加路径


结构体数组的周期性调度
Typedef struct
{
u8 Run;          //任务状态:Run/Stop
u16 TIMCount;    //定时器计数器
u16 TRITime;      //重载计数器
Void (*TaskHook)(void);   //任务函数
}TASK_COMPONENTS;

Static TASK_COMPONENTS Task_Comps[]=
{
//状态 计数 周期 函数
{0,1,1,执行功能}
{0, 10, 10,   执行功能}

};
页: [1]
查看完整版本: 新手学习打卡