新手学习打卡
第一集1.8051U的优势 屏幕显示(8位并口,刷频率高)·和视频播放(串行flash编程器) Iis录放音(脱离录放音模块) PWM_DMA(ws2812点阵屏幕显示,不会有干扰) 频谱分析仪(上位机isp显示fft图像) 手写计算机(类ai) QSPI,PWM移相,硬件乘除,单精度浮点 兼容早期89C52,12C5A60S2等芯片兼容8位32位8051指令集 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 下载与串口下载的操作顺序不同)
下载进行中,几秒钟后,提示下载成功!
第二集新建工程,选择芯片,添加源文件之类的操作不再赘述8051模式设置 下拉模式 当代码超过64k时 HEX文件设置超过64K选386,没超过则选择80打勾生成hex文件 头文件<>与””<>:系统路径文件“”:当前目录文件再到系统路径文件利用ips生成底层.h文件
IO口设置 用P0M0与P0M1直接配置p0口的脚的模式 Isp配置io口
第四集
USB不掉电下载
稳定高效采用查询模式
移植过程
1.先复制头文件
(.lib由.c与.h组成,且不能打开修改,方便快速移植)
2.再复制.h文件
3. 添加文件
4. 添加.h文件
5. 添加初始化以及一些命令
屏蔽未调用函数的方法
在魔术棒中的L251 Miso警告位置输入57
第五集
c语言基础
1.使用printf
去掉stc32_stc8_usb.h引用头文件的//
2.常用转义符
Isp串口使用注意接收信息模式。
3.数据的基本类型
4.基本运算符
Tip:%%表示%
第六集
什么是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” 第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返回值
}
声明
要在使用的地方前写
返回值类型 函数名(入口参数);
调用
返回值类型 函数名(入口参数) 第八集
周期性调度任务
为防止延时太多拖慢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]