?? 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 + -