📄 opticalencoders.c
字号:
//***************************************************************//
//* *********************************************************** *//
//* * * *//
//* * * *//
//* * 用单片机AT89S52代替CPLD实现鉴相器功能 * *//
//* * * *//
//* * * *//
//* *********************************************************** *//
//***************************************************************//
/*****************************头文件******************************/
#include<reg51.h>
#include<stdio.h>
#include<intrins.h>
/***************************端口定义******************************/
sbit CH_B=P3^5;
sbit CH_A=P3^6;
sbit CH_UP=P2^2;
sbit CH_DOWN=P2^3;
/*****************************宏定义******************************/
#define State_1 !CH_A&!CH_B
#define State_2 !CH_A&CH_B
#define State_3 CH_A&CH_B
#define State_4 CH_A&!CH_B
/****************************功能函数*****************************/
void delay() //20ms延时
{
unsigned char i,j;
for(i=0;i<255;i++)
for(j=0;j<16;j++)
_nop_();
}
/*****************************主函数******************************/
void main()
{
while(1)
{
// if(State_1)
while(State_1)
{
CH_UP=0;
CH_DOWN=0;
if(State_2)
{
CH_UP=1;
CH_DOWN=0;
delay();
break;
}
if(State_4)
{
CH_UP=0;
CH_DOWN=1;
delay();
break;
}
else
continue;
}
// if(State_2)
while(State_2)
{
CH_UP=0;
CH_DOWN=0;
if(State_3)
{
CH_UP=1;
CH_DOWN=0;
delay();
break;
}
if(State_1)
{
CH_UP=0;
CH_DOWN=1;
delay();
break;
}
else
continue;
}
// if(State_3)
while(State_3)
{
CH_UP=0;
CH_DOWN=0;
if(State_4)
{
CH_UP=1;
CH_DOWN=0;
delay();
break;
}
if(State_2)
{
CH_UP=0;
CH_DOWN=1;
delay();
break;
}
else
continue;
}
// if(State_4)
while(State_4)
{
CH_UP=0;
CH_DOWN=0;
if(State_1)
{
CH_UP=1;
CH_DOWN=0;
delay();
break;
}
if(State_3)
{
CH_UP=0;
CH_DOWN=1;
delay();
break;
}
else
continue;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -