📄 code.c
字号:
/*********************************************************************
**********************************************************************
**项目名称:电磁脉冲振打控制系统(控制板程序)
**作 者:周文委 浙江工业大学电子工程系
**起始日期:2006年9月15日
**结束日期:
**********************************************************************
**修 改 人:
**修改日期:
**********************************************************************
*********************************************************************/
#include <reg52.h>
//#include <absacc.h>
#include <intrins.h>
#include <stdio.h>
#include <math.h>
/**************************************************************
宏定义:
**************************************************************/
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define T 0xc8 //100us计时数
#define Device1Address 0xa0
#define Device2Address 0xa1
#define Tmax 0xffff //振打周期最大值
#define Imax 100 //电流最大值待定
#define dI 0 //闭环控制允许电流波动范围
#define QMax 90 //占空比允许最大值
#define QMin 0 //占空比允许最小值
#define dtl 27 //tl的修正参数
#define START 0xfa //开始分组振打代码
//#define START2 0xaf //开始无分组振打代码
//#define START3 0xf5 //开始维护手动振打代码
//#define START4 0x5f //开始维护自动振打代码
#define END 0x99 //结束振打代码
#define WError 0x64 //严重短路代码
#define WOverI 0x65 //过流代码
#define WUnderI 0x66 //欠流代码
#define WCOM 0x67 //RS232通信故障代码
#define WEEPROM 0x68 //EEPROM通信故障代码
#define WPARA 0x69 //EEPROM结果错误代码
#define StackOver 0x70 //堆栈溢出代码
#define RunError 0x71 //程序跑飞代码
#define CONTACT 0xaa //联络信号代码
#define CONTACTSUCESS 0x55 //联络成功代码
#define CONTACTFAIL 0xcc //联络失败代码
#define COMSUCESS 0xa5 //接收成功代码
#define COMFAIL 0x5a //接收失败代码
#define MaxTeam 10 //设置最大组数
#define MaxT 0xffff //设置最大运行周期,防止停打
#define StackSize 64 //堆栈大小
//#define FastWork
#define test
//#define test2
/*============================================================
Variables Definition:
============================================================*/
uchar C0,C1,C2;
sbit GS0=P1^0;
sbit GS1=P1^1;
sbit GS2=P3^4;
sbit ADC573=P1^2;
bit First_Bit; //首轮振打标志
sbit WarnIndicate=P1^3; //报警指示信号
sfr WDT_COUNTER=0xe1;
//=============================================================
//主函数里的一些初始化
void Main_Init()
{
if(F0) //异常复位报警指示信号有效
{
// TR0=0;TR1=0;EA=0; //异常复位,停止所有工作
WarnIndicate=1;
}
else //正常启动不报警
WarnIndicate=0;
First_Bit=1;
//参数初始化
/* IP = 0xb;//0x8; //优先级:INT0,T0,T1,INT1,COM,T2
TMOD=0x11; //2个定时器均为方式1,16位定时器
TH0=0xff;TL0=0xaf;//TH0=0x3c;TL0=0xaf;
TH1=0xff;TL1=0xff;
IT0=0; //外部中断0采用电平触发方式
IT1=1; //外部中断1采用边沿触发方式
IE=0x1f; //ET0=ET1=EX1=ES=1;T0,T1,INT1,COM中断允许
SCON = 0x50; //串口方式1,允许接收
RCAP2H=0xff;RCAP2L=0x64;T2CON=0x34;
*/ WDT_COUNTER=0x33;
/* if(F0)
Error(7);
*/ F0=1;
P0=0xff;
}
/*********************************************************************
**main函数
*********************************************************************/
void main()
{
//start:
// uchar i;
Main_Init(); //一些初始化,中断etc
// EA=1; //开CPU总中断
while(1)
{
ADC573=0;//i=P0;
C0=P1;C2=P3;
C1=(C0>>5)&0x7; C0=(C0>>2)&0x7; C2=(C2>>5)&0x7;
if(!GS2)
{
// C2=(C2>>5)&0x7;
P0=C2;
}
else if(!GS1)
{
// C1=(P1>>5)&0x7;
P0=8+C1;
}
else if(!GS0)
{
// C0=(P1>>2)&0x7;
P0=16+C0;
}
else
{
P0=0xff;
}
WDT_COUNTER=0x33;
}
}
/**************************main 函数结束****************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -