📄 mainbroad.c
字号:
//**********************************
//项目名称:热饮现调机主板
#include <iom16v.h>
#include <macros.h>
#include <math.h>
#include <eeprom.h>
#define xtal 8000000 //晶振8MHZ
#define uchar unsigned char
#define uint unsigned int
#define ramend 0x45f
#define eep0 (*(volatile uchar *)0xf000)
#define eep1 (*(volatile uchar *)0xf001)
#define zhsz 0x01
#define cst232 PORTD|=0X04
#define csr232 PORTD&=0Xfb
#define OPENBZ 0X55 //开启标志
#define CLOSEBZ 0XAA //关闭标志
//输入量片选端PD6
#define clr_cs_in PORTD&=0XBF
#define set_cs_in PORTD|=0X40
//电路上左边374片选PC7
#define clr_cs_out1 PORTC&=0X7F
#define set_cs_out1 PORTC|=0X80
//电路上右边374片选PD4
#define clr_cs_out2 PORTD&=0XEF
#define set_cs_out2 PORTD|=0X10
#define WATCHDOG PORTC^=BIT(PC5)
unsigned char ADAVRNUM;
unsigned char AD_DAADDR;
unsigned char SPIINTNUM;
unsigned int ADBUFFH;
unsigned int ADBUFFL;
unsigned int ADAVR[2];
unsigned char GPER;
unsigned int ADDATA[2];
//-------------与变频器通信定义-----------
uchar TXCNT0=0,RXCNT0=0;
uchar rxtxcompleteflag=CLOSEBZ;
uchar BPQRS=0;
uchar BPQTS=0;
uchar bpqbustbuf[150];
/*uchar bpqbustbuf[100]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,
46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,
71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,
96,97,98,99};//MODBUS通讯数据接收缓存*/
uchar bpqbusrbuf[150];//MODBUS通讯数据发送缓存
uint bpqcrcdata=0;//CRC校验数据寄存器
uint bpqcrcdata1=0;
uint BPQHZ=0;
void guanji(void);
void SENDDATA232(uchar senddata232);
void delay_1ms(void)
{ uint i;
for(i=1;i<(uint)(xtal*143-2);i++);
}
void delay_10us(void)
{uint i;
for(i=1;i<30;i++)
asm("nop");
}
void cpu_init(void)
{
uint i;
MCUCR=0x00;
//SEI();
DDRB=0Xff;
PORTB=0XFF;
DDRD=0XFF;
PORTD=0Xf7;
NOP();
NOP();
//set_cs_out2;
set_cs_in;
DDRC=0XFF;
NOP();
NOP();
NOP();
TCCR2 = 0x00; //stop
ASSR = 0x00; //set async mode
TCNT2 = 0x30; //setup
OCR2 = 0xD0;
TCCR2 = 0x14; //start
}
void t1_init(void)
{
TCCR1A=0; //CTC到后清零,
TCCR1B=0X08; //0X13为64分频,1微秒
TCNT1=0;
OCR1A=0X30D4; //定时12500*8微秒=100毫秒
TIMSK=0X10; //输出比较A匹配中断使能
// SEC1=10;
//SEC10=100;
SEI(); //全局中断使能
}
void rsbpq_init(void)
{ uchar i=0;
UCSRA=0;
UCSRB=0X90;//发送/接受完成中断使能 b7接收,b6发送\90接收、48发送
UBRRL=51; //配置波特率为9600bps
UBRRH=00; //配置波特率为9600bps
csr232;//PORTD|=0X10;
UCSRC=0x86;//a4对应7位数据位1位停止位,偶校验,0X86;//配置串口为8位数据位,1位停止位,无效验
i=UDR;//=0Xaa;
GPER=1;
RXCNT0=0;
TXCNT0=0;
}
void delay(uint n)
{
uint i=0;
for(i=0;i<n;i++)
delay_1ms();
}
#pragma interrupt_handler t1coma:7
void t1coma(void)
{GPER++;
if (GPER>50) GPER=0;
NOP();
NOP();
NOP();
}
//************CRC校验************
uint bpqcrc(uchar bpqcrca)
{uchar i;
bpqcrcdata1^=bpqcrca;
for(i=0;i<8;i++)
{if((bpqcrcdata1&0x01)!=0)
{bpqcrcdata1>>=1;
bpqcrcdata1^=0xa001;
}
else bpqcrcdata1>>=1;
}
return bpqcrcdata1;
}
//************CRC校验************
uint pbqcrc_check(uchar bpqcrca)
{uchar i;
bpqcrcdata1=0xffff;
for(i=0;i<bpqcrca;i++) bpqcrc(bpqbustbuf[i]);
//bpqbustbuf[6]=bpqcrcdata1&0x0ff;
//bpqbustbuf[7]=bpqcrcdata1>>8;
return bpqcrcdata;
}
//*************变频器通讯**********
void rxbpq(void) //
{uchar i;
CLI();
csr232;//PORTD&=0Xef;
RXCNT0++;
UCSRB=0X90;
if (RXCNT0<100)
bpqbusrbuf[RXCNT0]=UDR;
if (RXCNT0>99)
{RXCNT0=0;
cst232;
UCSRB=0X48;
UDR=bpqbustbuf[0];
}
SEI();
}
void txbpq(void)
{uchar i;
CLI();
cst232;
TXCNT0++;
UCSRB=0X48;
if (TXCNT0<100)
UDR=bpqbustbuf[TXCNT0];
if (TXCNT0>99)
{UCSRB=0X90;
csr232;
TXCNT0=0;
bpqbusrbuf[0]=UDR;
}
SEI();
}
/*void bpqrs232(void)
{uchar i;
i=UDR;
UCSRB=0X90;
csr232;
delay(1000);
UDR=0X55;
cst232;
UCSRB=0X48;
}
*/
#pragma interrupt_handler rs232r:12
void rs232r(void)
{
rxbpq();
}
#pragma interrupt_handler rs232s:14
void rs232s(void)
{
txbpq();
}
void main(void)
{uchar i;
SP=0x45f;//ramend;
cpu_init();/*CPU初始化*/
t1_init();//定时器1初始化
//spi_init();
//rs232_init();
rsbpq_init();
TCCR1B=0X0B;//64分频
for (i=0;i<130;i++)
bpqbustbuf[i]=0x11;
SEI();
while(1)
{//bpqrs232();
if(GPER==0)
rsbpq_init();//rs232_init();
delay_1ms();
delay_1ms();
} //while尾
} //main尾
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -