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

示例贴:日日自新学习AI8051U

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:52
  • 最近打卡:2025-04-08 20:05:04
已绑定手机

13

主题

79

回帖

438

积分

荣誉版主

积分
438
发表于 2024-11-27 09:33:05 | 显示全部楼层

这样哦,刚才用插件灯试了一次也还是一样效果,推测是限流电阻的影响?
我想起来当时的实验了,我是在驱动三色光LED的时候发现的这个现象,那个led模块应该用的是(VCC-VF)/Imax计算的电阻值。当使用准双向输出时没有推挽输出亮度大。

感谢大佬批评指正!{:5_300:}
君子知命不惑,日日自新。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:52
  • 最近打卡:2025-04-08 20:05:04
已绑定手机

13

主题

79

回帖

438

积分

荣誉版主

积分
438
发表于 2024-11-27 09:35:02 | 显示全部楼层
VC*** 发表于 2024-11-27 03:14
你计算错了哦,这时的电流是300uA吧

感谢指正,已修改(这都能算错)
君子知命不惑,日日自新。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:52
  • 最近打卡:2025-04-08 20:05:04
已绑定手机

13

主题

79

回帖

438

积分

荣誉版主

积分
438
发表于 2024-11-27 10:06:58 | 显示全部楼层
VC*** 发表于 2024-11-27 03:22
你的理解是错的。

之前没有了解过这方面的知识,看到大佬讲解后才恍然大悟。

1. 这个74HC本质还是为了节省IO口的;
2. 使用PSRAM时要注意EXTRAM和地址范围,以及MCU引脚中AD实际上指引脚复用功能(这个我一直没看懂,不知道说明书哪里写了,要是在引脚图说明就好了)。
君子知命不惑,日日自新。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:52
  • 最近打卡:2025-04-08 20:05:04
已绑定手机

13

主题

79

回帖

438

积分

荣誉版主

积分
438
发表于 2024-11-27 10:16:22 | 显示全部楼层
VC*** 发表于 2024-11-27 03:40
虽然你很有想法,但我还是要泼一盆冷水

收到,这个代码是我第一天学习8051时写的,因为当时没有熟练使用寄存器操作,所以点灯时用人工智能给写了一段话封装了,因为一直只用于点灯所以也没发现BUG。

后面随着学习深入都是直接操作寄存器加一行备注了。现在感觉寄存器的好处就是代码段少,直截了当

学习就是个不断发现问题的过程,感谢有大佬会细看我的笔记并批评指正{:5_300:}

点评

谬赞了,这回我也是大佬了哈哈哈。你的笔记非常完善(因此难免可以发现一些问题)!!!我也在初学这个Ai8051U,你的笔记是很有帮助的。我省得自己去学了   发表于 2024-12-4 21:47
君子知命不惑,日日自新。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:52
  • 最近打卡:2025-04-08 20:05:04
已绑定手机

13

主题

79

回帖

438

积分

荣誉版主

积分
438
发表于 2024-11-27 22:38:06 | 显示全部楼层
【第五课】《C语言基础》


还是大一那一会学的C语言,因为专业问题C++没有学过,还好用KEIL基本用C就可以了。

一、关于printf

课程讲解了将USB-CDC串口通讯重定向至printf函数,使用LIB库仅需要取消注释即可实现。
截图202411272219189122.jpg 截图202411272223238447.jpg


使用UART串口的话,我的方法是如下这样,可以封装为一个函数,然后加个串口形参;也可以每个串口写一个。
  1. //========================================================================
  2. // 函数: void UART1_printf(char *fmt,...)
  3. // 描述: 将串口发送函数重定向为UART1_printf
  4. // 参数: fmt:  字符串指针,其余为可变变量
  5. // 返回: none.
  6. //========================================================================
  7. void UART1_printf(char *fmt,...)
  8. {
  9.         u32 i,length;
  10.         va_list ap;
  11.         va_start(ap,fmt);
  12.         vsprintf(TX1_Buffer,fmt,ap);
  13.         va_end(ap);
  14.         length=strlen((const char*)TX1_Buffer);
  15.         
  16.         //开始发送数据
  17.         for(i=0;i<length;i++)
  18.         {
  19.                 SBUF  = TX1_Buffer[i];
  20.                 B_TX1_Busy=1;
  21.                 while(TI == 0);                //忙等待,等待当前字节发送完成
  22.                 TI = 0;                                                //清除请求位
  23.         }
  24.         B_TX1_Busy=0;
  25. }
复制代码

也有大佬直接用printf的,好像用的是啥putchar啥的没注意了解,有知道的大佬可以解释一下。(或许这里我可以宏定义一下?  #define    printf    UART1_printf

二、关于进制转换

有时候懒着用计算器,可以记住几个常用的简单的16进制和2进制转换:
BIN                HEX
0000 0001      0x01
0000 0010      0x02
0000 0100      0x04
0000 1000      0x08
0001 0000      0x10
0010 0000      0x20
0100 0000      0x40
1000 0000      0x80

实际应用中,比如要给P0M0赋值为 1100 0000(这里实际是要把高2位置1而不改变其他位数据),就可以 P0M0 |=(0X80 | 0X40);或者P0M0 |=(0X80 + 0X40);

三、关于变量类型

如果要使用64位变量需要在程序文件申明 #program float64,主要是双精度数据。其他的在USB文件里已经宏定义过了
  1. typedef bit BOOL;
  2. typedef unsigned char BYTE;
  3. typedef unsigned int WORD;
  4. typedef unsigned long DWORD;
  5. typedef unsigned char u8;
  6. typedef unsigned int u16;
  7. typedef unsigned long u32;
  8. typedef unsigned char uchar;
  9. typedef unsigned int uint;
  10. typedef unsigned int ushort;
  11. typedef unsigned long ulong;
  12. typedef unsigned char uint8_t;
  13. typedef unsigned int uint16_t;
  14. typedef unsigned long uint32_t;
复制代码


四、关于运算符没啥好说的

点评

【第五课 C语言基础 补课】 一、实现USB-CDC串口的Printf函数 在stc32_stc8_usb.h文件中取消注释下面语句 #define PRINTF_USB //printf输出直接重定向到USB口 重定向原理就是进行了宏定义 #define pr  详情 回复 发表于 2025-1-7 20:42
君子知命不惑,日日自新。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:123
  • 最近打卡:2025-04-19 16:12:35
已绑定手机

60

主题

777

回帖

4001

积分

论坛元老

自定义头衔

积分
4001
发表于 2024-11-28 01:27:50 来自手机 | 显示全部楼层
272761180 发表于 2024-11-27 10:06
之前没有了解过这方面的知识,看到大佬讲解后才恍然大悟。

1. 这个74HC本质还是为了节省IO口的;


哈哈哈,其实我也没找清楚。

文档百密一疏是难免的,只关注了常用的、复杂的内容。反而忽视了这种经典而传统的内容

不过多翻翻权威资料,总能找到一些答案的
联系我请点击左下角的【回复】按钮,否则我收不到消息提
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:343
  • 最近打卡:2025-05-02 13:52:41
已绑定手机

6

主题

202

回帖

814

积分

高级会员

积分
814
发表于 2024-11-28 06:35:45 | 显示全部楼层
楼主加油!!!
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:172
  • 最近打卡:2025-04-28 08:49:07
已绑定手机

90

主题

961

回帖

2318

积分

超级版主

积分
2318
QQ
发表于 2024-12-4 11:21:49 | 显示全部楼层
优秀的课代表,必须送!包邮送!
期待您更加精彩的点评。恭喜您提前获赠Ai8051U实验箱,今日会给您顺丰免费包邮寄出。期待您在论坛上给大持续分享测试心得,一起前进
热线19952583534
www.STCAI.com
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:172
  • 最近打卡:2025-04-28 08:49:07
已绑定手机

90

主题

961

回帖

2318

积分

超级版主

积分
2318
QQ
发表于 2024-12-4 11:21:52 | 显示全部楼层
优秀的课代表,必须送!包邮送!
期待您更加精彩的点评。恭喜您提前获赠Ai8051U实验箱,今日会给您顺丰免费包邮寄出。期待您在论坛上给大持续分享测试心得,一起前进
热线19952583534
www.STCAI.com
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:52
  • 最近打卡:2025-04-08 20:05:04
已绑定手机

13

主题

79

回帖

438

积分

荣誉版主

积分
438
发表于 2024-12-4 11:23:36 | 显示全部楼层
国学*** 发表于 2024-12-4 11:21
优秀的课代表,必须送!包邮送!
期待您更加精彩的点评。恭喜您提前获赠Ai8051U实验箱,今日会给您顺丰免费 ...

感谢官方支持,保证学完所有课程!
君子知命不惑,日日自新。
回复 支持 1 反对 0

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-3 12:55 , Processed in 0.129302 second(s), 113 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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