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

📄 b3_2006.c

📁 电流电压监测的例子 电 流电压监测的例子
💻 C
📖 第 1 页 / 共 2 页
字号:
#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 + -