找回密码
 立即注册

第一课序言学习打卡

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-04-01 08:56:27
已绑定手机

3

主题

21

回帖

91

积分

注册会员

积分
91
发表于 2025-3-20 23:06:25 | 显示全部楼层
【第四集ing】USB不停电下载
重点部分:
移植关键部分到工程:
1, 添加头文件
2, USB初始化函数(lib+.h库实现)
3, 命令参数
4, 打开P_SW2寄存器和IE2寄存器(只打开一个位)
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-04-01 08:56:27
已绑定手机

3

主题

21

回帖

91

积分

注册会员

积分
91
发表于 2025-3-20 23:15:27 | 显示全部楼层
【第5集】小熬一下,开始第五集了,本集为C语言基础的提升课程

重点一:C语言 USB-CDC串口之printf函数的实现

1.打开USB库中的PRINTF_HID宏定义(去掉//)
2.理解PRINTF的函数原型的定义
#define printf  printf_hid
int printf_hid (const char *fmt, ...);

参数fmt -- 是格式控制字符串,包含了两种类型的对象:普通字符和转换说明 。

普通字符:在输出时,普通字符将原样不动地复制到标准输出。
printf("8051U深度入门到32位51大型实战视频\r\n");

转换说明:不直接输出,用于控制 printf 中参数的转换和打印。每个转换说明都由一个百分号字符(%)开始,以转换说明符结束,从而说明输出数据的类型、宽度、精度等。
        printf("8051U深度入门到32位51大型实战视频,%s\r\n","加油");



转换说明简介:
1.类型:根据不同的 fmt 字符串,函数可能需要一系列的附加参数,每个
参数包含了一个要被插入的值,替换了 fmt 参数中指定的每个 % 标签。
关于附加参数,既可以是变量,也可以是常量。

2.位置:printf()函数的普通字符和转换说明放在" "双引号内,附加参数
放在双引号外,每个附加参数之间用逗号隔开。

3.数量:printf() 的附加参数与转换说明符是??对应关系,如果有 n 个转
换说明符, printf() 的参数就应该有 n + 1 个。如果参数个数少于对应的转
换说明符,printf() 可能会输出内存中的任意值。


截图202503202315152719.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-04-01 08:56:27
已绑定手机

3

主题

21

回帖

91

积分

注册会员

积分
91
发表于 2025-3-20 23:18:01 | 显示全部楼层
【第5集】重点二:
数的进制:2进制、10进制、16进制

截图202503202317542861.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-04-01 08:56:27
已绑定手机

3

主题

21

回帖

91

积分

注册会员

积分
91
发表于 2025-3-20 23:25:33 | 显示全部楼层
【第5集】重点三:
数据的基本类型
想要使用64位变量,需要在程序文件里面添加申明:#pragma float64

重点四:
C语言常用运算符
算术运算符
+:加法
-:减法
*:乘法
/:除法
%:取模(取余)

关系运算符
用于比较两个值。
==:等于
!=:不等于
>:大于
<:小于
>=:大于等于
<=:小于等于

逻辑运算符
用于组合多个条件。
&&:逻辑与(AND)
||:逻辑或(OR)
!:逻辑非(NOT)

赋值运算符
用于给变量赋值。
=:赋值
+=:加后赋值
-=:减后赋值
*=:乘后赋值
/=:除后赋值
%=:取模后赋值
&=:按位与后赋值
|=:按位或后赋值
^=:按位异或后赋值
<<=:左移后赋值
>>=:右移后赋值


还有一些其他的
截图202503202325314974.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-04-01 08:56:27
已绑定手机

3

主题

21

回帖

91

积分

注册会员

积分
91
发表于 2025-3-21 10:01:38 | 显示全部楼层
【第6集】IO输入输出

什么是GPIO:
全称:General Purpose I/O Ports
意思为通用输入/输出端口,通俗地说,就是一些引脚。
可以通过它们输出高低电平或者通过它们读入引脚的状态-是高电平或是低电平。

pnm0和pnm1的组合方式:
00准双向口
01推挽输出
10高阻输入
11开漏模式
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-04-01 08:56:27
已绑定手机

3

主题

21

回帖

91

积分

注册会员

积分
91
发表于 2025-3-21 10:09:20 | 显示全部楼层
【第6集ing】IO输入输出
按键输入检测
代码实现原理:程序直接读取按键的IO的电平即可,一般使用”==”即可

任务1:按下P32按钮灯亮,松开P32按钮灯灭;
                if( P32 == 0 )                                                                //判断P32按钮是否按下
                {
                        P00 = 0;
                }
                else
        {
                        P00 = 1;
                }
               
               
               



任务2:按下P32按钮灯灭,松开P32按钮灯亮;
        if( P32 == 1 )                                                                //判断P32按钮是否按下
                {
                        P00 = 0;
                }
                else
                {
                        P00 = 1;
                }
               
任务3:按一下灯亮,按一下灯灭
                if( P32 == 0 )                                                                //判断P32按钮是否按下
                {
                        Delay20ms();                                                        //延时20ms消抖
                        if( P32 == 0 )
                        {
                                state = !state;                                                //变量取反 0 1 0 1 0 1
                                P00 = state;
                                printf("state:%d\r\n",(int)state);
                               
                                while( P32 == 0 );                                        //等待P32松开
                               
                        }
                }
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-04-01 08:56:27
已绑定手机

3

主题

21

回帖

91

积分

注册会员

积分
91
发表于 2025-3-21 10:44:11 | 显示全部楼层
【第7集】定时器
定时器作用:
    (1) 用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作
    (2) 替代长时间的Delay,提高程序的运行效率和处理速度(可以打断主循环)


任务1:LED灯三秒取反一次,这期间任意时刻按下按钮,串口打印按键次数。

        if( P32 == 0 )                                //判断P32按钮是否按下
        {
            Delay20ms();                            //延时20ms消抖
            if( P32 == 0 )
            {
                printf("按键按下次数\xfd:%d 次\r\n",(int)count);
                count++;
               
                while( P32 == 0 );                    //等待P32松开
               
            }
        }
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-04-01 08:56:27
已绑定手机

3

主题

21

回帖

91

积分

注册会员

积分
91
发表于 2025-3-21 10:46:10 | 显示全部楼层
【第7集】定时器

任务2:灯按一下点亮三秒后熄灭。
                if( P32 == 0 )                                                                //判断P32按钮是否按下
                {
                        Delay20ms();                                                        //延时20ms消抖
                        if( P32 == 0 )
                        {
                                printf("按键按下次数\xfd:%d 次\r\n",(int)count);
                                count++;
                                P00 = 0;
                                Timer0_Init();
                                while( P32 == 0 );                                        //等待P32松开
                               
                        }
                }



任务3:救护车灯控制器,按下报警按钮,红蓝交替闪烁(LED1和LED2              表示红和蓝灯),再按一下报警按钮,红蓝灯停止。

                if( P32 == 0 )                                                                //判断P32按钮是否按下
                {
                        Delay20ms();                                                        //延时20ms消抖
                        if( P32 == 0 )
                        {
                                Run_State = !Run_State;                                //运行状态取反
                               
                                if( Run_State==1 )                                        //运行
                                {
                                        Timer0_Init();
                                }
                                else
                                {
                                        TR0 = 0;                                                //关闭定时器
                                        P00 = 1;
                                        P01 = 1;
                                }
                                P00 = 0;
                                Timer0_Init();
                                while( P32 == 0 );                                        //等待P32松开
                               
                        }
                }
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-04-01 08:56:27
已绑定手机

3

主题

21

回帖

91

积分

注册会员

积分
91
发表于 2025-3-21 22:29:01 | 显示全部楼层
板子还没到,然而我已经饥渴难耐了,下载了个Proteus模拟一波,
先来组正反跑马灯解解渴。

video_20250321_222211.mp4

9.32 MB, 下载次数: 6

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-04-01 08:56:27
已绑定手机

3

主题

21

回帖

91

积分

注册会员

积分
91
发表于 2025-3-24 18:08:12 | 显示全部楼层
跑马灯实际操作,
哦,这该死的流畅感

video_20250324_175108.mp4

7.88 MB, 下载次数: 4

回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-3 12:48 , Processed in 0.127046 second(s), 100 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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