scpcw
发表于 2025-3-7 09:53:01
流程图是很有必要的!!
scpcw
发表于 2025-3-17 21:14:13
第21集 eeprom
研究了一下,数据只能1改写为0.
如果下发程序后,eeprom是全写了0XFF的.也就是全擦除过了,但只验证了前面10几个字节,没有全部验证.
下面就是验证第0字节被写了4次.
test=0xff; //第0个字节0xff
EEPROM_write_n(0,test,1); //写入第0个字节
EEPROM_read_n(0,test,4); //读出4个字节
printf("%s\r\n",test); //串口打印读出的4个字节
test=0xfe; //第0个字节0xfe
EEPROM_write_n(0,test,1); //写入第0个字节
EEPROM_read_n(0,test,4); //读出4个字节第
printf("%s\r\n",test); //串口打印读出的4个字节第
test=0xfc; //第0个字节0xfc
EEPROM_write_n(0,test,1); //写入第0个字节
EEPROM_read_n(0,test,4); //读出4个字节
printf("%s\r\n",test); //串口打印读出的4个字节
test=0xf8; //第0个字节0xf8
EEPROM_write_n(0,test,1); //写入第0个字节
EEPROM_read_n(0,test,4); //读出4个字节
printf("%s\r\n",test); //串口打印读出的4个字节
所以eeprom某一个字节也是可以反复改写8次的.
scpcw
发表于 2025-3-27 15:11:10
业务经理联系我测试了AiCube.
实然发现他们这一群人在搞这么一个奇妙的东东.{:qiang:}
创建工程后一次性编译成功.
这样子方便太多了.
我见证了1.00,希望她变得越来越完善.
scpcw
发表于 2025-3-27 15:28:23
前几天都没更新了,我在学习HID协议.太多要记忆的东西了,对创建这些协议的人太仰视了.
我也在努力一句一句拨demo程序包第52-USB鼠标-键盘复合设备例程.希望能看懂这些句子.
应该我想做一个键盘与电脑间的宏定义过滤器.
普通键盘只要插上就可以执行宏定义键,
我计划用数字键盘的编辑键来当宏定义键,Ctrl+cCtrl+v不就方便了吗?
我想用ch9350+ai8051来拦截键盘.
大家有没有指点用更好的办法?
scpcw
发表于 2025-3-28 23:53:37
逐字逐句的啃何老师的书,再问DEEPSEEK验证理解,逐步开朗了.
AI8051手册的附录里面有这些知识,同学们可以这样学.
scpcw
发表于 2025-4-25 08:55:54
冲哥没更新了!期待更新!!
第17集学习了串口
主要是对原理需要了解一下,其实只靠这些工具就把所有的寄存器理规矩了.
还要在实际使用中多熟悉这些寄存器就行了.
https://www.stcaimcu.com/forum.php?mod=image&aid=95254&size=300x300&key=1462be3c2aa0c115&nocache=yes&type=fixnone
scpcw
发表于 2025-4-25 20:22:26
这几天搞了一个红外接收和发送.
//*******************************************************************
//*********************** IR Remote Module **************************
//*********************** By(Coody) 2002-8-24 *********************
//*********************** IR Remote Module **************************
//this programme is used for Receive IR Remote (NEC Code).
NEC码接受,发现官方也是移植的这个函数,我也移植到冲哥这个简化多任务里来.
其实单片机编程就是移植,只要掌握原理即可,代码多移植就熟练了.
如果你自己编程,也要考虑方便移植,多学一些编程经验,多看长远一点.
编写好后,发现很多品牌电视,空调,都不是用的标准NEC码.反面一些杂牌家电是标准NEC码.
scpcw
发表于 2025-4-25 20:36:37
红外接收搞好了,再来移植红外发送.
按一个实验箱上的一个按,就发送一个NEC码,接收模块收到就printf出来.
自发 自收,打印串口.
void IR_TX_NEC(u16 UserCode_TX,u8IR_code_TX)
{
TxTime = 0;
//一帧数据最小长度 = 9 + 4.5 + 0.5625 + 24 * 1.125 + 8 * 2.25 = 59.0625 ms
//一帧数据最大长度 = 9 + 4.5 + 0.5625 + 8 * 1.125 + 24 * 2.25 = 77.0625 ms
IR_TxPulse(342); //对应9ms,同步头 9ms
IR_TxSpace(171); //对应4.5ms,同步头间隔 4.5ms
IR_TxPulse(21); //开始发送数据 0.5625ms
IR_TxByte(UserCode_TX%256); //发用户码低字节
IR_TxByte(UserCode_TX/256); //发用户码高字节
IR_TxByte(IR_code_TX); //发数据
IR_TxByte(~IR_code_TX); //发数据反码
if(TxTime < 56) //一帧按最大77ms发送, 不够的话,补偿时间 108ms
{
TxTime = 56 - TxTime;
TxTime = TxTime + TxTime / 8;
Delay_ms(TxTime);
}
// Delay_ms(31);
// while(key_num != 0xff) //键未释放
// {
// printf("ok IR%d",key_num);
// IR_TxPulse(342); //对应9ms, 同步头 9ms
// IR_TxSpace(86); //对应2.25ms,同步头间隔 2.25ms
// IR_TxPulse(21); //开始发送数据 0.5625ms
// Delay_ms(96);
// }
}
但是按键不放NEC会发重复码,由于我这个是伪多任务.重复按键有问题,先注释掉这个功能,后面再研究解决方案.
scpcw
发表于 2025-4-25 20:46:41
今天改进一下接收函数,让他能记录非标准NEC的时序.后面让程序有遥控板学习功能.
scpcw
发表于 2025-4-26 09:02:53
scpcw 发表于 2025-4-25 20:46
今天改进一下接收函数,让他能记录非标准NEC的时序.后面让程序有遥控板学习功能. ...
在原程序的基础上加记录非标准红外协议受阻了。没彻底搞透红外接收。现在重新学习红外接受。
先编用AICube写一个裸程序,只记录红外接收状况。摸透彻了再移植。
我准备做一个单文件程序,连.h文件也不要。这样的程序便于请教DeepSeek。
读取时序程序编写完善了。只要是38KHz的红外都可以接收了。