找回密码
 立即注册
楼主: 木木01

AI8051学习打卡记录,免费学习,免费包邮送开发板,坚持学习可获得8051试验箱,感谢

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:43
  • 最近打卡:2025-05-02 09:46:41
已绑定手机

4

主题

178

回帖

540

积分

高级会员

积分
540
发表于 2025-2-22 15:49:33 | 显示全部楼层
木*** 发表于 2025-2-22 15:43
高电平就是接近vcc电压的电平,用逻辑1表示
PnM0  PnM1  
0        0       准双向口

8051电流输出能力最大有20ma,拉电流只有270-150ua
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:43
  • 最近打卡:2025-05-02 09:46:41
已绑定手机

4

主题

178

回帖

540

积分

高级会员

积分
540
发表于 2025-2-22 15:50:30 | 显示全部楼层
木*** 发表于 2025-2-22 15:43
高电平就是接近vcc电压的电平,用逻辑1表示
PnM0  PnM1  
0        0       准双向口

不是特殊应用一般都是配置为准双向口
准双向口默认都是高电平
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:43
  • 最近打卡:2025-05-02 09:46:41
已绑定手机

4

主题

178

回帖

540

积分

高级会员

积分
540
发表于 2025-2-22 16:23:46 | 显示全部楼层
木*** 发表于 2025-2-22 15:37
第七集    学习STC AI8051U的IO输入输出

使用while(p32 == 0);来进行死循环实现等待按钮松开

按钮会存在抖动,一般是20ms以内
if(P32 == 0){
delay20ms();//延时20毫秒
if(P32 == 0){//再判断一次 按钮是否状态文档
然后执行改版io状态
然后使用while(P32==0)等待按钮松开,改版io状态的代码在这个while等待之前执行,表示按钮按下即可执行,也可以放在while之后,表示按钮松开之后执行
}
}

软件延时计时器的使用:
初始化程序时务必进行以下初始化
WTST = 0;设置程序指令延时参数
EAXFR = 1; 扩展寄存器XFR使能
CKCON = 0; 提高XRAM速度
然后使用stcisp软件生成对应延时代码

延时函数用到了一个_nop_();的函数,需要引入头文件#include "intrins.h"
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:43
  • 最近打卡:2025-05-02 09:46:41
已绑定手机

4

主题

178

回帖

540

积分

高级会员

积分
540
发表于 2025-2-22 16:35:06 | 显示全部楼层
截图202502221628048184.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:43
  • 最近打卡:2025-05-02 09:46:41
已绑定手机

4

主题

178

回帖

540

积分

高级会员

积分
540
发表于 2025-2-22 16:46:58 | 显示全部楼层
木*** 发表于 2025-2-22 16:35
第7集  定时器中断学习
解决单核同一时间只能运行1个指令,上一节课中,等待按钮松开的过程使用的是while死 ...

在isp软件中 定时器计算器
选择时钟评率24M,下载的时钟评率也选择24M,时钟评率一定要对应
使用24位自动重载定时器(8位预分频,16位自动重装载)
定时器时钟选择12T
勾上 使能定时器中断

生成的定时器初始化函数在main函数里,while循环之前执行。然后尽量在总中断EA=1之前。
中断执行函数放到main之后
中断函数里面的代码是按配置的定时器周期性运行
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:43
  • 最近打卡:2025-05-02 09:46:41
已绑定手机

4

主题

178

回帖

540

积分

高级会员

积分
540
发表于 2025-2-22 16:52:31 | 显示全部楼层
在使用printf输出串口调试信息时,遇到文字:‘数’ 会输出异常,需要使用\xfd进行转义输出,然后项目路径也不能有保函0xfd的路径,否则keill会编译出错

printf("按键按下次数\xfd%d",count);


截图202502221651176073.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:43
  • 最近打卡:2025-05-02 09:46:41
已绑定手机

4

主题

178

回帖

540

积分

高级会员

积分
540
发表于 2025-2-22 17:17:21 | 显示全部楼层
截图202502221705329706.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:43
  • 最近打卡:2025-05-02 09:46:41
已绑定手机

4

主题

178

回帖

540

积分

高级会员

积分
540
发表于 2025-2-22 21:10:08 | 显示全部楼层
截图202502222108222005.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:43
  • 最近打卡:2025-05-02 09:46:41
已绑定手机

4

主题

178

回帖

540

积分

高级会员

积分
540
发表于 2025-2-22 21:15:27 | 显示全部楼层
木*** 发表于 2025-2-22 21:10
第8集   定时器周期性任务来了
好好学习,天天向上,感谢STC官方提供学习平台和开发板,感谢冲哥哥无私的教 ...

周期任务原理
1毫秒执行1次定时器中断函数
然后每个任务使用一个变量自己进行计时,每次在中断函数中+1
然后在main函数中while循环里判断对应的变量来判断任务执行周期是否到达,时间到了就执行,并重置对应变量。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:43
  • 最近打卡:2025-05-02 09:46:41
已绑定手机

4

主题

178

回帖

540

积分

高级会员

积分
540
发表于 2025-2-22 22:01:01 | 显示全部楼层
木*** 发表于 2025-2-22 21:10
第8集   定时器周期性任务来了
好好学习,天天向上,感谢STC官方提供学习平台和开发板,感谢冲哥哥无私的教 ...

实现按钮按下不要使用while的原理
定时器中断函数还是1ms执行1次,定义一个变量,使用定时器中断函数对其递增。

然后main函数的while中
判断定时器函数中的那个变量每递增到10执行1次清零并且读取一次按钮的状态
当读取到按钮为按下时,使用另一个新的变量进行递增,比如要给按钮设置50毫秒的防抖,那么就当该变量递增到5时再执行按钮按下应该执行的程序。

扩展思考:如果我希望按钮松开后才执行,那么我应该在读取按钮状态未按下且判断已进行50ms的防抖之后去执行程序
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 21:02 , Processed in 0.294384 second(s), 106 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表