//算法一
uint8_t KeyA_Last;
uint8_t KeyB_Last;
uint8_t KeyA_Now;
uint8_t KeyB_Now;
int EC_Counter;
int EC_CountTemp;
void Encoder_Ini()
{
KeyA_Last = P10;
KeyB_Last = P11;
}
void Encoder_Run()
{
KeyA_Now = P10;
KeyB_Now = P11;
EC_Counter +=(1 ^ (KeyA_Last ^ KeyB_Last)) * (int)((KeyA_Last ^ KeyA_Now) - (KeyB_Last ^ KeyB_Now)); //更新计数
KeyA_Last = KeyA_Now;
KeyB_Last = KeyB_Now;
}
lzzasd 发表于 2023-12-14 11:56
经过测试 楼主的程序运行稳定 算法精简高效 感谢楼主
只是 (int)((KeyA_Last ^ KeyA_Now) - (KeyB ...
zyhlove813 发表于 2023-12-14 13:08
编译什么提示?我是keil4 C51 编译正常,会不会少了个括号标点之类的?
zyhlove813 发表于 2023-12-14 13:08
编译什么提示?我是keil4 C51 编译正常,会不会少了个括号标点之类的?
发表于 2023-12-24 19:28
楼主钻研精神可嘉,学习了。
lzuoxin 发表于 2023-12-25 18:09
楼主的算法还需要硬件消抖电路吗
zyhlove813 发表于 2023-12-25 21:04
正常应该是要的,我是网购的模块,带电阻和电容滤波,不硬件滤波,你自己可以试下。
youlinys 发表于 2023-12-31 21:35
讲解得很详细。UP厉害人。
zyhlove813 发表于 2024-7-10 13:28
这么特异的算法都沉底了
kkfy888 发表于 2024-11-10 21:39
看了up的视频,特意搜了关键字找到了^_^
zyhlove813 发表于 2023-12-13 23:11
同时贴上lkc8210发表的算法:
//算法四: 编译大小不错,只适合单倍频
uint8_t KeyA_Last;
邰夏留 发表于 2025-2-18 09:57
请教一下楼主,这个怎么消抖的呢?
zhang32568 发表于 2025-2-20 10:54
我经常使用的程序。非常灵敏!定时器3毫秒以内都毫不拖泥带水。
sbit EC11_A = P3^5; //EC11 A ...
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |