历史上的今天
返回首页

历史上的今天

今天是:2025年01月13日(星期一)

正在发生

2020年01月13日 | STM8S003外部中断识别机械式编码器正反转

2020-01-13 来源:eefocus

最近在项目上,用到鼠标上用的编码器,按照厂家给的编程方法,发现容易产生误判,故而自己用外部中断的方式来做,发现这样误判的情况会得到很大的改善,现发上来与大家分享。


#include "stm8s103f3p.h"
#include "stm8s_bitsdefine.h"
#include "typedef.h"
#define  CodeA PB_IDR_0
#define  CodeB PB_IDR_1
uint8_t CodeB_last,CodeB_current,whe_ch,ADJ;
void UART1_Init(void)
{   
        UART1_CR2=0x00;        
        UART1_CR1=0x00;           
        UART1_CR3=0x00;           
        UART1_BRR2=0x00;
        UART1_BRR1=0x0d;         
        UART1_CR2=0x2C;              
}
void UART1_SendChar(uint8_t  ch)
{
        while((UART1_SR & 0x80) == 0x00); 
        UART1_DR = ch;  
        
}
void IO_Init(void)
{
        PB_DDR=0x04;
        PB_CR1=0x07;
        PB_CR2=0x01;
}
void EXTI1_INIT(void)
{
        EXTI_CR1=0x08;
}
main()
{
        IO_Init();
        EXTI1_INIT();
        UART1_Init();
        _asm("rim");
        while(1) ;
}
@far @interrupt void EXTI1_IRQHandler(void)
{
        _asm("sim");
        whe_ch++;
        if(whe_ch==1)
        {
                CodeB_last=CodeB;
                IO_Init();
                EXTI_CR1=0x04;
        }
        if(whe_ch==2)
        {
                whe_ch=0;
                CodeB_current=CodeB;
                IO_Init();
                EXTI_CR1=0x08;
        }
        if((CodeB_last==1)&&(CodeB_current==0))
        {
                ADJ++;
                UART1_SendChar(ADJ);
        }
        if((CodeB_last==0)&&(CodeB_current==1))
        {
                ADJ--;
                UART1_SendChar(ADJ);
        }
        _asm("rim");
        return;
}

推荐阅读

史海拾趣

CANOPUS公司的发展小趣事

面对激烈的市场竞争,CANOPUS始终保持着创新的精神。公司不断推出新产品、新技术,以满足不同消费者的需求。同时,CANOPUS也注重品牌形象的塑造和提升,通过赞助音乐活动、举办音乐会等方式,提升品牌知名度和影响力。

这些故事只是CANOPUS公司在电子行业中发展的冰山一角。实际上,公司的发展过程充满了挑战和机遇,每一个阶段都离不开创始人的智慧和团队的努力。未来,随着科技的进步和市场的变化,CANOPUS将继续保持创新精神,为音乐爱好者带来更多优质的产品和服务。

博林(BL)公司的发展小趣事

随着国内市场的日益饱和,博林公司开始积极拓展海外市场。公司制定了详细的国际化战略,通过参加国际展览、建立海外销售渠道等方式,不断提升品牌知名度和影响力。同时,博林公司还积极寻求与国际知名企业的合作机会,通过技术合作和市场共享等方式,实现互利共赢。这些举措使得博林公司的市场份额不断扩大,国际竞争力日益增强。

CETC公司的发展小趣事

随着电子行业的快速发展,CETC意识到单打独斗难以应对市场的快速变化。于是,公司积极寻求与其他企业的合作,共同推动产业的发展。在与某知名通信设备制造商的合作中,CETC提供了先进的电子元件和解决方案,双方共同开发出了多款畅销产品,实现了市场的共赢。这种合作模式不仅提升了CETC的市场竞争力,也促进了整个电子行业的健康发展。

CR Magnetics公司的发展小趣事

为了更好地服务全球客户,CR Magnetics积极在全球范围内拓展业务。公司在东亚、欧洲和美洲等地设立了制造和销售办事处,以便更快速地响应市场需求和提供更好的服务。同时,公司还与国际知名厂商建立了合作关系,共同推动电子行业的发展。

GWP Group公司的发展小趣事

随着技术的不断进步和市场的不断变化,CR Magnetics意识到只有不断创新才能在竞争中立于不败之地。因此,公司加大了研发投入,积极引进新技术和新材料,不断推出具有创新性和竞争力的新产品。例如,公司研发的直流传感器在行业内享有很高的声誉,广泛应用于电池充电等领域。此外,公司还推出了一系列模拟量传感器、ANSI和商业级电流互感器等,满足了不同客户的需求。

动运科技(DONGWOON)公司的发展小趣事

在全球化的大背景下,企业之间的合作与共赢成为了一种趋势。动运科技积极寻求与全球知名企业的战略合作,共同推动电子行业的发展。例如,公司与香港希荻微的合作就是一个典型的例子。通过独占许可的方式,希荻微获得了动运科技在中国大陆及港澳台地区生产、销售与自动对焦及光学防抖技术相关的产品的权利,并有权使用授权技术进行技术改进及新产品研发。这一合作不仅为双方带来了互利共赢的机会,也为整个电子行业的发展注入了新的活力。

问答坊 | AI 解惑

MCS51系统扩展技术

在MCS-51 单片机的内部虽已集成了很多资源,但这类单片机属于一种“通用”的单片机,单片机内部的各种资源都是折衷配置的,如片内程序存储器、数据存储器的容量都不打,并行I/O端口的数量也不很多,此外,在有些应用中,片内定时器、中断、串行口等 ...…

查看全部问答>

wince下搭建WEB服务器!

最近正在学习wince下搭建WEB服务器。 我在网上找到一个wince下的FTP服务器,运行之后,直接在PC的IE地址栏输入FTP://192.168.1.104就可以访问里面的文件了。 我现在就想在wince下搭建一个类似的WEB服务器,通过IE来访问wince设备的数据,控制设备 ...…

查看全部问答>

手中无CASE,心中真轻松

国庆不加班,放假真悠闲 本来想去水源的,可看到公公出没还是算了…

查看全部问答>

关于晶振不稳的问题?

请高手帮我分析一下:我的用是123的片子,做的是一个RF数据采集器,在零下30-40度做测试的时候,发现接受到的数据不正确.但是同一个仪器,拿到室温的时候又正常了.是不是可以分析为晶振工作不稳引起的.那么怎样才能要它在零下30-40度更加的稳定点?希望得 ...…

查看全部问答>

【问TI】请问TI的lib怎么才能修改?

     请问TI的lib怎么才能修改?难道非要用规定的lib,不可以自己去修改,改成专门为自己服务的lib。…

查看全部问答>

lm3s811到底要怎么写程序啊!!要什么.h文件,怎么初始化!我真心蛋疼了

lm3s811到底要怎么写程序啊!!要什么.h文件,怎么初始化!我真心蛋疼了 整了一晚上加一天,一个程序都没运行成功! 求指教! 求批评! 求鞭策!…

查看全部问答>

A/D转换问题~~~

各位大侠,请教个A/D转换的问题: 我现在用PIC18F65J10做A/D转换,是10位的,VREF+,VREF-用的是VCC和地,信号用运放放大后输入,可是经采样后的数据隔几次就会出现一个00,我又把VREF-换成外部输入1V,输出值有隔几次出现一个4B(1V的采样值),这 ...…

查看全部问答>

写在SP3485后:令人非常愤怒的转接头

是的。 晚上和同事加了会班,由同事发现一个寄存器中我没有显示禁止流控,因此搞出了查了一两天的串口问题。 过后,他对我位操作的方式相当不满意。这期间有过一场小小的争论。 不过说起来,我已经对位操作或者不位操作 这件事情本身已经没有什 ...…

查看全部问答>

求推荐一款DSP+FPGA开发板

马上年底了,又要花钱了。 想买一款DSP+FPGA的开发板,价格3K以内都可以,要求质量好就可以。 小伙伴们有没有好的企业可以推荐?…

查看全部问答>

keil编译时出现uncalled segment ignored for overlay process

程序如下,在鼠标头文件驱动里面,大家帮忙看下哪出问题了 *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS     SEGMENT: ?PR?_MOUSE_SEND_DATA?MAIN **********************主函数************************** #inc ...…

查看全部问答>