⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 coder.c

📁 光电编码器源代码
💻 C
字号:

#include "coder.h"

volatile uint16 step;//在中断函数里要修改全局变量的值得加volatitle限定<www.ouravr.com中注明>,但是不加volatile好像是没有影响
volatile long ring; 

uint32 data_disp;
/********************************************************************************
函数功能:由编码器输出做为外部中断0的触发源
函数名称:SIGNAL(SIG_INTERRUPT0)
出口参数:无
入口参数:无
备  注:无
********************************************************************************/
SIGNAL(SIG_INTERRUPT0)
{
   
   if((PINC&(1<<0)) == 1)//顺时针时增加
        {
            step++;
            if(step>=1000)
                {
                    ring++;
                    step = 0;
                }
            if(ring>=32766)
                ring = 0;
        }
   	if((PINC&(1<<0)) == 0)//逆时针时减小
        {
           	step--;
            if(step>65534)
                {
                    ring--;
                    step = 1000;
                }
			if(ring <0)
                {
				    ring = 0;
				    step = 0;
				}            
	    }
		
 
}

int main(void)
{
   
	
	DDRB = (1<<0)|(1<<1);//驱动ZLG7290用
	PORTB = 0x00;
 	
	DDRC &= ~(1<<0);//PC0引脚,

	MCUCR=(1<<ISC01)|(0<<ISC00);//设定中断触发方式为下降沿触发
	GIFR=(1<<INTF0);//清中断标志,以免误触发中断
    GICR=(1<<INT0);//外部中断0允许位
	sei();//使能全局中断
	while(1)
    { 
	    data_disp = (ring*1000+step);
	    
		Disp_i2c_led(data_disp);
		
	} 
 
	return 0;
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -