找回密码
 立即注册
楼主: OstrichFly

【实验箱已送】【跟着冲哥学32位8051】学习日记

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:500
  • 最近打卡:2025-05-02 00:02:31

2

主题

66

回帖

2322

积分

金牌会员

积分
2322
发表于 2023-6-23 01:19:12 | 显示全部楼层
【自学】【第五集:C语言运算符和进制数入门上】
为什么PC机上的printf直接就能输出,而单片机上的printf需要在主循环中加代码。
答:PC机是多任务系统,printf函数只需要把要显示的内容存到输出缓冲区,接下来操作系统就会自动通过内部的屏幕驱动,
把缓冲区中的内容输出到屏幕上,其中还有更复杂的比如字体之类,也都由操作系统自动完成了。
但在单片机中,只有一个CPU,并且这个CPU正在运行的是我们的程序,因此即使printf把内容输出到了缓冲区,
也没有人帮我们完成PC机上的后续操作。
而主循环中的这些代码,就是实现printf将内容写入缓存区后的操作,循环会不断检测缓冲区中是否有内容,
有内容则把这些内容输出到USB中,而PC机上的STC ISP会监视USB过来的输出内容,
然后把内容显示在STC的窗口中。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2023-6-23 07:09:13 | 显示全部楼层
节日快乐 !  学到第13节,简易多任务处理,
就提前申请个实验箱,帮助提高学习效率
凡是8051连的兄弟,认真学的,STC就必须当兄弟来认真支持
1.png
深圳国芯人工智能有限公司-教学视频 (stcai.com)


全国大学生智能车竞赛,全国大学生电子设计竞赛,STC 32位8051,最快 1T 8051选型,  全部【免费+包邮送】
www.STCAI.com,           STC全新官方网站,下载资料 !
www.STCAIMCU.com,  STC全球32位8051爱好者技术互助交流社区论坛,技术交流,视频学习 !
【免费+包邮】 送/申样/采购热线:0513-55012928、0513-55012929、0513-55012966
工作时间:  8:30-12:00  13:00-17:30(周一 到 周五, 法定节假日除外),也可加如下 QQ 或 微信 申请
加STC华南区客服刘经理QQ: 3398500488 ;微信:18106296592  要求 【免费+包邮】 送, 还免费教仿真  
加STC华南区客服曹经理QQ:1933892258 ;微信:18106296595 要求 【免费+包邮】 送, 还免费教仿真
加STC华东区客服聂经理QQ:2593903262;微信:18106296598  要求 【免费+包邮】 送, 还免费教仿真
加STC西北区客服孙经理QQ: 1347154513 ;微信:18106296593  要求 【免费+包邮】 送, 还免费教仿真
加STC华北区客服石经理QQ: 1638975601 ;微信:19952583876  要求 【免费+包邮】 送, 还免费教仿真
加STC华中区客服唐经理QQ:2571301708 ;微信:18106296589 要求 【免费+包邮】 送, 还免费教仿真
加STC东北区客服张经理QQ:3141888640 ;微信:19952583265   要求 【免费+包邮】 送, 还免费教仿真
加STC西南区客服张经理QQ:3141888640 ;微信:19952583265   要求 【免费+包邮】 送, 还免费教仿真


STC-USB Link1D /【专业仿真器,全自动在线下载器/自动停电上电,脱机烧录器/可限制次数,USB转双串口工具】
及全套 STC-ISP 下载生态线,通信时间几乎忽略


1.png
信号发生器演示视频,STC32G12K128实验箱,老梁示波器 - STC 实验箱/核心功能实验板,原理图,MCU结构讨论区,大学教材 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:500
  • 最近打卡:2025-05-02 00:02:31

2

主题

66

回帖

2322

积分

金牌会员

积分
2322
发表于 2023-6-24 01:31:20 | 显示全部楼层
本帖最后由 OstrichFly 于 2023-6-24 01:32 编辑
神*** 发表于 2023-6-23 07:09
节日快乐 !  学到第13节,简易多任务处理,
就提前申请个实验箱,帮助提高学习效率
凡是8051连的兄弟,认真 ...

谢谢管理员捧场,谢谢冲哥的课程,谢谢STC的活动!
虽然很想要实验板,也不能为了这个囫囵吞枣,要认真学习。
今天放假玩耽误了,马上继续。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:500
  • 最近打卡:2025-05-02 00:02:31

2

主题

66

回帖

2322

积分

金牌会员

积分
2322
发表于 2023-6-24 02:36:16 | 显示全部楼层
【打卡】【第五集:C语言运算符和进制数入门下】
1:端口^数字 在程序中表示端口寄存器的第几位,在电路中表示这一组端口针脚中的第几个针脚
   每组端口有8个针脚,对应C语言中的一个char(8位)变量。
   变量的某个bit为0,则对应的端口输出低电平,
   反之,变量的某个bit为0,则对应的端口输出高电平。
2:也可以通过直接对一组端口的变量赋值,一次性设置这一组针脚的电平,如:
   P6 = 0x00,则会将P6这一组针脚的8个针脚全部设置为低电平。
3:Keil C支持通用C语言的全部运算符,如加减乘除等。
4:Keil C支持各种通用C语言的数据类型,除了常用的char,int,long等之外,
   还有bit, sbit, sfr, sfr16
5:在STC32G中, short int和int都是16位,long int是32位。
6:long int与CPU的位数相关,STC32G中的long是32位,
   这也说明了STC32G是32位单片机。
7:在STC32G中, float和double都是32位,这与常规C语言不通,
   常规C语言中double比float要长。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:500
  • 最近打卡:2025-05-02 00:02:31

2

主题

66

回帖

2322

积分

金牌会员

积分
2322
发表于 2023-6-25 00:49:17 | 显示全部楼层
本帖最后由 OstrichFly 于 2023-6-25 00:51 编辑

【第六集:LED闪烁和花式点灯上】【打卡】
1:9.6实验箱是对9.4实验箱的更新版,区别在9.6实验箱新增对示波器实验的支持。
   不过9.4实验箱目前已经停产和停售了。
2:STC ISP启动时会自动检测更新,我们需要保持这个软件处于最新版本,
   因为新版本会修复旧版本中发现的问题。
3:STC ISP的下载包中还人性化的包含了一些第三方的USB转TTL驱动,
   一般最好使用厂家自带的,但如果找不到,这个驱动就能帮上忙。
4: 很多程序中都会使用到LED闪烁,比如钟表中间的秒点
5: while是先判断再循环,do while是先循环再判断
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:500
  • 最近打卡:2025-05-02 00:02:31

2

主题

66

回帖

2322

积分

金牌会员

积分
2322
发表于 2023-6-25 00:49:40 | 显示全部楼层
本帖最后由 OstrichFly 于 2023-6-25 00:51 编辑

【第六集:LED闪烁和花式点灯上】【自学1】
为什么课程中的delay_ms函数中使用双循环?
猜测有2个原因,一个是内层循环总是延时1毫秒,外层可以按照输入的参数控制循环次数,这样比较清晰。
另一个原因是避免整数溢出,STC 32G中的整数是16位,即使是无符号,最大也只有65535,很容易溢出,
但可以使用long型解决,因此这个可能不是主要原因。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:500
  • 最近打卡:2025-05-02 00:02:31

2

主题

66

回帖

2322

积分

金牌会员

积分
2322
发表于 2023-6-25 00:49:55 | 显示全部楼层
本帖最后由 OstrichFly 于 2023-6-25 00:51 编辑

【第六集:LED闪烁和花式点灯上】【自学2】
循环中为什么除以6000?
这个是厂家给的经验数据,频率除以6000后,正好能让单片机在循环中耗费1毫秒,
猜测频率/1000表示每毫秒运行多少次单周期指令,而Keil编译出的循环和变量自减代码,
在每个循环中需要6个周期,因此是频率/1000/6 = 频率 / 6000。
但这有个问题,就是如果keil升级导致编译出更优化的代码,比如变成了5个周期的指令了,
或者单片机的指令周期发生变化,则这个代码就出现偏差了,可能处于兼容性,无论是Keil还是厂家,
都尽量避免这种修改吧。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:500
  • 最近打卡:2025-05-02 00:02:31

2

主题

66

回帖

2322

积分

金牌会员

积分
2322
发表于 2023-6-26 00:48:57 | 显示全部楼层
【第六集:LED闪烁和花式点灯下】【打卡】
1: #define用于定义内容的别名,通常用于定义常量,比如单片机主时钟
2: 函数使用,需要函数定义、函数声明、函数调用这三步
3:函数没有返回值,则写void
4:模块化编程,每个功能块由.c和.h组成
5:模块化编程能让代码更清晰,特别是在大型项目中更需要
6:.h文件中需要使用#ifndef xxx避免头文件重复引用
7:.c文件需要#include对应的.h文件
8:函数的声明放在.h中,定义放在.c中
9:使用模块需要添加引用路径到模块所在目录
   并把.c文件加入工程
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:500
  • 最近打卡:2025-05-02 00:02:31

2

主题

66

回帖

2322

积分

金牌会员

积分
2322
发表于 2023-6-26 00:49:14 | 显示全部楼层
【第六集:LED闪烁和花式点灯下】【作业】
课后作业编程SOS求救灯:
void blink3(int ms)
{
    P60 = 0;
    delay_ms(ms);
    P60 = 1;
    delay_ms(ms);
    P60 = 0;
    delay_ms(ms);
    P60 = 1;
    delay_ms(ms);
    P60 = 0;
    delay_ms(ms);
    P60 = 1;
    delay_ms(ms);
}

void main()
{
    sys_init();
    usb_init();
    EA = 1;

    P40 = 0;
    while (1)
    {
        blink3(250);
        blink3(500);
        blink3(250);
    }
}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:500
  • 最近打卡:2025-05-02 00:02:31

2

主题

66

回帖

2322

积分

金牌会员

积分
2322
发表于 2023-6-27 01:03:36 | 显示全部楼层
【第七集:按键点灯上】【打卡】
1: 按键分常开和常闭,通常的按键是常开开关,也就是不按时候开路,按下闭路。
   相反,常闭开关是不按时候闭路,按下开路。
2:一般的按键设计是,通过一个上拉电阻接VCC,
   上拉电阻与按键之间通过保护电阻接单片机引脚。
   按键没有按下时,由于上拉电阻的作用,单片机引脚呈高电平,
   按键按下后,对地短路,因此单片机引脚呈低电平。
3:按键的动作并非理想,在按下和弹起的瞬间,由于内部弹片的作用,
   会导致瞬间的时通时断,如果单片机对这个瞬间进行采样,可能触发异常动作。
   因此可以在单片机内部的代码中,设计一个10ms的延时,
   当10ms后的状态与10ms之前相同是,才判断为按键的按下或松开。
   这个动作叫做按键消抖。
4:经典的按键消抖代码类似:
   if (KEY == 0) {
       delay_ms(10);
       if (KEY == 0) {
           执行动作
       }
   }
5: 在主循环中可以同时检测多个按键的动作
6: 通过代码中的逻辑,可以组合出多种按键动作,
   比如用点亮LED来说:
   a. 按下持续点亮LED
   b. 按下点亮LED,松开熄灭LED
   c. 按下点亮LED,再按下熄灭LED
   d. 按下并松开时点亮LED,再按下并松开时熄灭LE
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 06:56 , Processed in 0.139949 second(s), 104 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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