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

📄 code.c

📁 在Keil上实现的24输入编码功能源代码
💻 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 + -