或都用这个怎么改?
#ifndef _Motor001_H_
#define _Motor001_H_
#define constTMR0 6 //
typedef struct {
unsigned BIT0: 1;
unsigned BIT1: 1;
unsigned BIT2: 1;
unsigned BIT3: 1;
unsigned BIT4: 1;
unsigned BIT5: 1;
unsigned BIT6: 1;
unsigned BIT7: 1;
}PICCBIT;//定义一个只能按位域寻址的新变量类型
typedef union {
PICCBIT BIT;//可以按位域寻址
unsigned char BYTE;//可以按字节寻址
}PICCBITBYTE;//定义一个既能按位域寻址也可按字节寻址的新变量类型
PICCBITBYTE rWorkFlag;
//********************************************
#define fPowerOn rWorkFlag.BIT.BIT0 //开关机
#define fOnWork rWorkFlag.BIT.BIT2 //On 状态
#define fGp0On rWorkFlag.BIT.BIT2
unsigned char rNextTime; //到下一步动作的时间
unsigned char rMsecond,rMCount,rGPIO,rTaskJump;
unsigned char rSecond;
unsigned char rStepJump;
#endif
#include <pic.h>
#include "Motor001.h"
/*
* 马达控制器
* 1、上电DC马达正转2s
* 2、AC马达1工作110s
* 3、休息60s
* 4、DC马达反转2s
* 5、AC马达2工作110s
* 6、休息110s
* 7、回到1
************************************************************
************************************************************
*/
const char rPortConTab[]={0x00,0x04,0x20,0x30,0x20,0x00,0x02,0x01};
const char rWorkTimeTab[]={120,220,1,4,1,120,220,4};
main()
{
OPTION=0xC3; //250*16=4ms
rMsecond=0xC3;
TRIS=0x00;
rGPIO=0x00;
GPIO=0x00;
rNextTime=2;
while(1)
{
if(TMR0<5)
{
TMR0+=constTMR0;
CLRWDT();
GPIO=rGPIO;
if(!--rMsecond)
{
rMsecond=125;
if(!--rNextTime)
{
if(fPowerOn)
{
if(rStepJump)rStepJump--;
else rStepJump=7;
}
else
{
fPowerOn=1;
fOnWork=1;
rStepJump=7;
}
rNextTime=rWorkTimeTab[rStepJump];
rGPIO=rPortConTab[rStepJump];
}
}
}
}
}
|