旋转编码开关程序
/****************************************************************
//函数名称:int0_isr(void)
//功 能:中断0处理函数
//入口参数:无
//出口参数:无
*****************************************************************/
#pragma interrupt_handler int0_isr:iv_INT0
void int0_isr(void)
{
char i,j;
SREG=0x00; // 我试过,不用关中断也没问题。
i=(PIND&0B00001000); //读第一脚值
j=(PIND&0B00000100); //读第二脚值
if(i){i=1;}else{i=0;} //整理
if(j){j=1;}else{j=0;}
if(i==j){pp--;}else{pp++;} //如果一样就是+,不一样就-
SREG=0x80; // 不用关中断的话,当然这句也可以不用,
}
/****************************************************************
//函数名称:MAIN
//功 能:
//入口参数:无
//出口参数:无
*****************************************************************/
void main()
{
MCUCR=0B00000001; //我用的这个和大家画的那个图不一样,所以只要变动就触发。
GICR=0b01000000; //INT0
SREG=0x80; //使能全局中断
while(1)
{
show1(pp);
}}