📄 encode_pre.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 + -