📄 main.c
字号:
#include <reg52.h>
#include <string.h>
#include <absacc.h>
#define PAPERMOTOR_Data XBYTE[0x4000]
#define PRN_Control XBYTE[0x4000]
#define uint unsigned int
#define uchar unsigned char
uint code Pap_acdata[20] = {0x3266,0x2156,0x198f,0x1599,0x1302,0x1135,0xfc4,0xeb0,0xdd2,0xd08,
0xc74,0xbe1,0xb60,0xaf1,0xa95,0xa39,0x9ef,0x9a5,0x95c,0x924};
uint code Pap_dcdata[2] = {0xc06,0x1200};
sbit HOME_Pin = P3^2;
sbit Paper_Pin = P3^4;
bit PrintDirect;
bit homeflag;
bit PAPERMOTOR_Flag;
//bit CARRIGEMOTOR_Flag;
//sbit Cut_A = P1^5;
//sbit Cut_B = P1^6;
sbit Sens = P1^7;
sbit Mark_Pin = P3^5;
uchar xdata LOW_PRN_ControlState;
void PAPERMOTOR_Init();
void PAPERMOTOR_Hold();
void PAPERMOTOR_Rush();
void PAPERMOTOR_On();
void PAPERMOTOR_Off();
void CARRIGEMOTOR_Acce_Dece_11steps(uchar AC_DC);
void LOW_PRN_InitDotTimer(uint T0_DATA);
void PAPERMOTOR_SetStep(uchar Papermove_Direc);
void PAPERMOTOR_Move(uchar Direc, uint Steps);
void PAPERMOTOR_Init()
{
LOW_PRN_ControlState &= 0x33;
LOW_PRN_ControlState |= 0xc0;
PAPERMOTOR_Flag = 0;
}
void PH_Timer_Set(uint PH_DATA)
{
TH1 = -(PH_DATA/256);
TL1 = -(PH_DATA%256);
ET1 = 1;
TR1 = 1;
}
/* void LOW_PRN_InitDotTimer(uint T0_DATA)
{
TH0 = -T0_DATA/256;
TL0 = -T0_DATA%256;
ET0 = 1;
TR0 = 1;
}*/
void PAPERMOTOR_Move(uchar Direc, uint Steps)
{
uint i,PAPERSteps;
PAPERSteps = Steps;
PAPERMOTOR_Flag = 0;
PAPERMOTOR_On();
if(PAPERSteps < 22)
{
for(i=0;i<PAPERSteps;i++)
{
PAPERMOTOR_SetStep(Direc);
//LOW_PRN_InitDotTimer(0x3266);
// while(!PAPERMOTOR_Flag);
PAPERMOTOR_Flag = 0;
}
}
else
{
for(i=0;i<20;i++)
{
PAPERMOTOR_SetStep(Direc);
// LOW_PRN_InitDotTimer(Pap_acdata[i]);
// while(!PAPERMOTOR_Flag);
PAPERMOTOR_Flag = 0;
}
for(i=0;i<(PAPERSteps-22);i++)
{
PAPERMOTOR_SetStep(Direc);
// LOW_PRN_InitDotTimer(0x900);
// while(!PAPERMOTOR_Flag);
PAPERMOTOR_Flag = 0;
}
for(i=0;i<2;i++)
{
PAPERMOTOR_SetStep(Direc);
// LOW_PRN_InitDotTimer(Pap_dcdata[i]);
// while(!PAPERMOTOR_Flag);
PAPERMOTOR_Flag = 0;
}
}
PAPERMOTOR_Off();
}
void PAPERMOTOR_SetStep(uchar Papermove_Direc)
{
uchar i;
uchar temp;
uchar PH_State[5] = {0x00,0x04,0x0c,0x08,0x00};
temp = LOW_PRN_ControlState;
temp &= 0x0c;
if(Papermove_Direc)
{
for(i=0;i<5;i++)
{
if(temp == PH_State[i])
{
temp = PH_State[i+1];
break;
}
}
}
else
{
for(i=4;i>0;i--)
{
if(temp == PH_State[i])
{
temp = PH_State[i-1];
break;
}
}
}
LOW_PRN_ControlState &= 0xf3;
LOW_PRN_ControlState |= temp;
PAPERMOTOR_Data = LOW_PRN_ControlState;
}
void PAPERMOTOR_On()
{
PAPERMOTOR_Hold();
PAPERMOTOR_Rush();
}
void PAPERMOTOR_Off()
{
PAPERMOTOR_Rush();
PAPERMOTOR_Hold();
}
void Delay_6ms()
{
uint i;
for(i=0;i<0x0b33;i++);
}
void PAPERMOTOR_Hold()
{
LOW_PRN_ControlState &= 0x3f;
LOW_PRN_ControlState |= 0x80;
PAPERMOTOR_Data = LOW_PRN_ControlState;
Delay_6ms();
}
void PAPERMOTOR_Rush()
{
LOW_PRN_ControlState &= 0x3f;
PAPERMOTOR_Data = LOW_PRN_ControlState;
Delay_6ms();
}
/* void LOW_PRN_Findhome()
{
uchar i;
CARRIGEMOTOR_Hold();
CARRIGEMOTOR_Rush();
if(!HOME_Pin)
{
PrintDirect = 0;
CARRIGEMOTOR_Acce_Dece_11steps(1);
for(i=0;i<180;i++)
{
CARRIGEMOTOR_PH_Set();
PH_Timer_Set(0x05f2);
while(!CARRIGEMOTOR_Flag);
CARRIGEMOTOR_Flag = 0;
}
CARRIGEMOTOR_Acce_Dece_11steps(0);
}
for(;;)
{
if(HOME_Pin)
{
PrintDirect = 1;
homeflag = HOME_Pin;
}
else
{
PrintDirect = 0;
homeflag = HOME_Pin;
}
CARRIGEMOTOR_PH_Set();
PH_Timer_Set(0x2347);
while(!CARRIGEMOTOR_Flag);
CARRIGEMOTOR_Flag = 0;
if(homeflag == !HOME_Pin)
break;
}
PrintDirect = 0;
CARRIGEMOTOR_Acce_Dece_11steps(1);
CARRIGEMOTOR_Acce_Dece_11steps(0);
CARRIGEMOTOR_Rush();
CARRIGEMOTOR_Hold();
PrintDirect = 1;
}*/
void main()
{
Sens = 1;
PAPERMOTOR_Init();
if(Sens)
{
PAPERMOTOR_SetStep(0);
}
// for(;;)
// {
PRN_Control &= 0x3f;
PAPERMOTOR_Move(0, 20);
// }
// PAPERMOTOR_Off();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -