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

📄 encode_pre.c

📁 1.A/D转换 2.编码器数据采集 3.电机驱动 利用ADC0809芯片
💻 C
字号:
#include <REG52.h>
void outportb(unsigned int port,unsigned char val) ;
unsigned char  acquisition_encode(void);
#define ADDRESS_RESET_RECODE 0x0FF0     // endpoint LOAD of 74LS193 connent /Y0
#define ENABLE EA=1
#define DISABLE EA=0

char idata carry,circle;
int idata location_motor;



void init_special_interrupts(void)
{
  //中断0作为Z相的归零信息,中断1为进位或退位来驱动
IT0 = 0;    //下降沿触发
EX0 = 1;    //外部中断0允许位
PX0 = 1;    //外部中断0设定为高优先级

IT1 = 0;   //下降沿触发
//EX1 = 1;    //外部中断1允许位
PX1 = 0;    //外部中断1设定为低优先级

}

//I/O口初始化程序
void init_port()
{
P0 = 0xFF;
P1 = 0xFF;
P2 = 0xFF;
P3 = 0xFF;
}

void main(void)
{ unsigned char i=0,j=0;
  carry=0x00;
  circle=0x00;
  init_special_interrupts();
  init_port();
  outportb(ADDRESS_RESET_RECODE,0x00);
  EA=1 ;
  while(1)
   {
     i=acquisition_encode();
     if((j>200)&&(i<30)) carry++;
     if((j<30)&&(i>200))  carry--;
     location_motor=circle*1000+(carry<<8)+ i;
     j=i;
     ENABLE ;
   }

}

unsigned char  acquisition_encode(void)
{
  //ACC=P1;
  return P1;
}

void RESET_isr() interrupt 0
{
   DISABLE;
   outportb(ADDRESS_RESET_RECODE,0x00);
   circle++;
   carry=0;
   ENABLE;
}


void carry_isr() interrupt 2
{
   DISABLE;
   if(!P3_0)  carry++;
   if(P3_0)  carry--;
   ENABLE;
}


void outportb(unsigned int port,unsigned char val)
{
*((unsigned char xdata *) port)  = val;
}

⌨️ 快捷键说明

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