📄 b3_2006.c
字号:
#include <reg52.h>
#include <absacc.h>
#include "B3_2006.h"
#define CONSTER 0xFFFF
sbit P1_0 = P1^0;
sbit P1_1 = P1^1;
sbit P1_2 = P1^2;
sbit P1_3 = P1^3;
sbit P1_4 = P1^4;
sbit P1_5 = P1^5;
sbit P1_6 = P1^6;
sbit P1_7 = P1^7;
sbit P3_4 = P3^4; //T0
sbit P3_5 = P3^5; //T1
sbit clflag=ACC^7;
//共阴 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0. 1. 2. 3. 4. 5. 6. 7. 8. 9.
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
uchar DP[20];
uint Max[2]={260,800};
//uint idata BUF8253[3];
float idata BUF8253[4];
uchar ucReCom[25]= "@SA2356B33456712356%";
uchar uiRe_In=0,flag,p;
//uchar ppt;
uchar MCUToPC[10]="@a+0000%";
uchar Error[8]="@ERROR%";
uchar EVENTHAND=0;
uchar FFG_PLC;
//********延时程序*******************
void Delay(int jw)
{
int id;
for(;jw>0;jw--)
for(id=0;id<125;id++)
{;}
}
/*! @function ***********************************/
void Beep(int x,int y)
{
for( ;x>0;x--)
{
P1_0=0;
Delay(y);
P1_0=1;
Delay(y);
}
}
void init()
{
uchar ig;///j,u;
PCON=0x80;
TMOD=0x20; //定时器0方式1,
TH1=0xfd; //设定波特率为19200
TL1=0xfd;
// IE=0x92; //开中断,允许串行口,定时器0,1中断
IP=0x10; //设中断的优先级 1为高级优先级
SCON=0x50; //串行口工作在方式1,1 start;8 data bit;1 stop
TR1=1;
P1_5 = 0;
P1_6 = 0;
P1_7 = 0;
Delay(100);
//8255 初始化
CMD8255A=0x9B;
CMD8255B=0x9B;
CMD8255C=0x80;
PA8255C=0x00;//close gata of counter
Delay(100);
//8279 初始化
CMD8279 = 0xd1;
do //8279置0
{
ACC=CMD8279;
}while(clflag == 1);
CMD8279 = 0x08;//显示方式
CMD8279 = 0x2f;//分频系数
for(ig=0;ig<16;ig++)
{
CMD8279 = ig+0x80;
DAT8279 = 0x3f;
}
//8253初始化
A8254CMD = 0x38;
A8254T0 = 0xff;
A8254T0 = 0xff;
A8254CMD = 0x78;
A8254T1 = 0xff;
A8254T1 = 0xff;
A8254CMD = 0xb8;
A8254T2 = 0xff;
A8254T2 = 0xff;
IE=0x92; //开中断,允许串行口,定时器0,1中断
}
/*! @function
***************************************************
<PRE>
函数名 : <SendChar>
功能 : <发送数据函数>
参数 : <char uSendData>
返回值 : <void>
抛出异常 : <无>
---------------------------------------------------
备注 : <初始化参数要根据具体情况来设定!>
典型用法 : < SendChar('a'); >
---------------------------------------------------
作者 :dhf
创立时间 :2005.9.8
第 次修改时间/修改者:
</PRE>
***************************************************/
void SendChar(char uSendData)
{
SBUF=uSendData;
while(!TI);
TI=0;
}
void _MCUtoPC(void)
{
int jd;
for(jd=0;jd<10;jd++)
{
SendChar(MCUToPC[jd]);
}
}
/*! @function
***************************************************
<PRE>
函数名 : <CM>
功能 : <数据解析>
参数 : <int a, int b, int c, int q,int f>
参数说明 : int a //个位
int b //百位
int c //十位
int q //千位
int f //符号位
返回值 : <int m>
抛出异常 : <无>
---------------------------------------------------
备注 : <无通用性!>
典型用法 : <CM(a,b,c,q,f)>
---------------------------------------------------
作者 : dhf
创立时间 :2005.9.8
第 次修改时间/修改者:
</PRE>
***************************************************/
int CM(int a, int b, int c, int q,int f)
{
int mu,ju,ku,wu,ru;
switch(f) //符号
{
case 0x00:
ru=-1;
MCUToPC[2]='-';
break;
case 0x01:
ru=1;
MCUToPC[2]='+';
break;
default: break;
}
switch(q) //千位
{
case 0x01:
wu=0;
MCUToPC[3]='0';
break;
case 0x00:
wu=1000;
MCUToPC[3]='1';
break;
default: break;
}
switch(b) //百位
{
case 0x00:
ju=8;
MCUToPC[4]='8';
break;
case 0x06:
ju=2;
MCUToPC[4]='2';
break;
case 0x08:
ju=6;
MCUToPC[4]='6';
break;
case 0x10:
ju=0;
MCUToPC[4]='0';
break;
case 0x20:
ju=9;
MCUToPC[4]='9';
break;
case 0x24:
ju=3;
MCUToPC[4]='3';
break;
case 0x28:
ju=5;
MCUToPC[4]='5';
break;
case 0x61:
ju=4;
MCUToPC[4]='4';
break;
case 0x74:
ju=7;
MCUToPC[4]='7';
break;
case 0x75:
ju=1;
MCUToPC[4]='1';
break;
default: break;
}
switch(c) //十位
{
case 0x00:
ku=8;
MCUToPC[5]='8';
break;
case 0x01:
ku=0;
MCUToPC[5]='0';
break;
case 0x08:
ku=6;
MCUToPC[5]='6';
break;
case 0x10:
ku=9;
MCUToPC[5]='9';
break;
case 0x14:
ku=3;
MCUToPC[5]='3';
break;
case 0x18:
ku=5;
MCUToPC[5]='5';
break;
case 0x24:
ku=2;
MCUToPC[5]='2';
break;
case 0x52:
ku=4;
MCUToPC[5]='4';
break;
case 0x55:
ku=7;
MCUToPC[5]='7';
break;
case 0x57:
ku=1;
MCUToPC[5]='1';
break;
default: break;
}
switch(a) //个位
{
case 0x00:
mu=8;
MCUToPC[6]='8';
break;
case 0x04:
mu=6;
MCUToPC[6]='6';
break;
case 0x12:
mu=2;
MCUToPC[6]='2';
break;
case 0x20:
mu=0;
MCUToPC[6]='0';
break;
case 0x40:
mu=9;
MCUToPC[6]='9';
break;
case 0x44:
mu=5;
MCUToPC[6]='5';
break;
case 0x49:
mu=4;
MCUToPC[6]='4';
break;
case 0x50:
mu=3;
MCUToPC[6]='3';
break;
case 0x71:
mu=7;
MCUToPC[6]='7';
break;
case 0x79:
mu=1;
MCUToPC[6]='1';
break;
default: break;
}
return (wu+ju*100+ku*10+mu);
}
/*! @function
***************************************************
<PRE>
函数名 : <Read8255>
功能 : <初始化MCU板上的设备>
参数 : <无>
返回值 : <void>
抛出异常 : <无>
---------------------------------------------------
备注 : <初始化参数要根据具体设备来设定!>
典型用法 : < InitialDevices(); >
---------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -