scpcw
发表于 2025-4-27 17:06:52
经过深入了解后,得知家电常用的红外协议有如下几种:
想不到,一个万能遥控板还需要这么多门道。要3种红外接收器
scpcw
发表于 2025-4-27 19:28:12
NEC码标准时长:
引导码Leader 9000us低+4500us高 正负10%
逻辑0 bit0 560us低+560us高 正负100us 总时长1120us
逻辑1 bit1 560us低+1690us高 正负150us 总时长2250us
结束位Stop 560us低 正负?%
重复码Repeat 9000us低+2250us高+560us低 正负10%
https://www.stcaimcu.com/forum.php?mod=image&aid=95862&size=300x300&key=0061c1fb596297d7&nocache=yes&type=fixnone
https://www.stcaimcu.com/forum.php?mod=image&aid=95863&size=300x300&key=5fc595011bbb6bed&nocache=yes&type=fixnone
https://www.stcaimcu.com/forum.php?mod=image&aid=95864&size=300x300&key=68ead997aeb45c87&nocache=yes&type=fixnone
https://www.stcaimcu.com/forum.php?mod=image&aid=95865&size=300x300&key=2f1a3f5b3f07e492&nocache=yes&type=fixnone
https://www.stcaimcu.com/forum.php?mod=image&aid=95866&size=300x300&key=450e17797cc00d2f&nocache=yes&type=fixnone
scpcw
发表于 2025-4-29 00:07:37
scpcw 发表于 2025-4-27 19:28
NEC码标准时长:
引导码Leader 9000us低+4500us高 正负10%
逻辑0 bit0 5 ...
建立Cube,包含P35引脚下降沿中断,为红外接收用。
定时器中断0:为多任务保留 1ms一次
定时器1:红外时序计时器10us一次
使用IO下降沿触发,进入中断后,用指令改为上升沿触发。这样实现又向交替触发。
记录遥控器发射时序,先低电平
可以接受任意38KHz的红外线.其它协议只能显示时值.不能解码
识别NEC码及重复码.
scpcw
发表于 6 天前
仿真调试
在芯片手册里找到这段,顺藤摸瓜。我这个芯片手册这个章节有bug。utilities选项卡没有截图和文字描述,导至我始终仿真不成功,看了链接的视频后,才明白这个Utilities选项卡的设置
终于会仿真了
scpcw
发表于 5 天前
今天断续完善一下仿真的知识点。
这个download按钮还没有完全领会,再实验观察一下。
USB Link1D接入接入仿真调试中。参数设置如下:
好象调试也正常了,并且Download按钮也可以正常下载
我用USB调试发现:工程改变后必须要编译,编译后进入调试状态就自动download了一次(测试USB调试和 USB Link1D都是可以)。
scpcw
发表于 5 天前
下一个课题:
对内存区域详细的了解:
edata xdata等等
scpcw
发表于 5 天前
AI8051存储管理 2^24=16,777,216 16M
1个字节是段,2个字节是偏移量,一个段65536字节(64K)
AI8051的 01:0000至01:7FFFH 共32K是XRAM,不受任何SFR限制
01:8000至7D:FFFF 保留未用
7E:0000至7E:FFFFXFR/XSFR 特殊功能寄存器,必须EAXFR=1,才可以用。
7F:0000至7F:FFFF 外部并行总线扩展的XRAM,有外部芯片,用引脚去访问。暂时不研究它。
KEIL变量位置分为: 1. EDATA(Extended Data Memory)
[*]全称:Extended Data Memory(扩展数据存储器)
[*]技术特性:
[*]80251 架构特有,扩展了传统 8051 的 DATA/IDATA 空间
[*]00段开始是edata,edata只有第0段,最大64K,Ai8051只用了2K,其它保留。
XDATA(External Data Memory)
[*]全称:External Data Memory(外部数据存储器)
[*]技术特性:
[*]经典 8051 已有,80251 保留兼容
01-7f段开始是Xdata,共7EH段(126D)126*64=8064,最大8M。
CODE
FF:0000最高段是复位后的程序入口,这应该是flash ROM 共64KFE:FFFF-80:0000为保留
如:int edata a1;
int xdata abc;
char code abc1;
注意要与keil的设置配合
scpcw
发表于 5 天前
Ai8051 这个test++为什么是这样编译的,运行是正确的?????
64: test++;
65:
0xFF034E 7EB30030 MOV R11,test(0x0030)
0xFF0352 04 INC A
0xFF0353 7AB30030 MOV test(0x0030),R11
scpcw
发表于 4 天前
scpcw 发表于 2025-6-24 20:46
Ai8051 这个test++为什么是这样编译的,运行是正确的?????
64: test++;
65: ...
看了何宾老师讲的STC32明白了:为了兼容8051,80251的内部寄存器R11是16位寄存器,它的低8位就是ACC。所以对A寄存器的改变,就直接改变了R11.
但是核心运算寄存器与工作寄存器我还是没有怎么搞清楚。deepseek也没有这个知识存。看来我还要先了解一下8051和80251的寄存器情况。
scpcw
发表于 4 天前
scpcw 发表于 2025-6-24 09:06
下一个课题:
对内存区域详细的了解:
edata xdata等等
在芯片手册的这个章节有内存定义的帮助:
2.16如何在 Keil C251中对变量、常量、表格数据、函数指定绝
对地址