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

📄 main.c

📁 低速误码仪测试代码
💻 C
字号:
#include<avr/io.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<util/delay.h>
#include<avr/wdt.h>
#include<avr/interrupt.h>
#include"uart.h"
#include"DS2174.h"

extern uint8_t Tx_Data_Pos;
extern uint8_t Tx_Data_Len;
extern uint8_t Rx_Data_Pos;
extern uint8_t Rx_Data_Len;
Point Temp_Num;
extern uint8_t Send_Buf[16];
extern uint8_t Recv_Buf[16];
void Config_Mode(void);
void Test_Mode(void);
#define SPI_PORT PORTB
#define SPI_DDR DDRB
#define SS 4
#define MOSI 5
#define MISO 6
#define SCK 7
#define F_CPU 8000000UL


void spi_slave_init(void)
{
	SPI_DDR=_BV(MISO);
	SPCR=_BV(SPIE)|_BV(SPE)|_BV(DORD);
}

int main(void)
{
  memset(Send_Buf,sizeof(Send_Buf),0);
  memset(Recv_Buf,sizeof(Recv_Buf),0);
  cli();                              //global interrupt mask
  Uart_Init(9600);
  spi_slave_init();
  wdt_disable();
  sei();
  _delay_ms(10);
fun:	Uart_Recv(1);
 	while(!Is_Recv_Complete());
 	switch(Recv_Buf[0])
 	{
 		case 1:Config_Mode();
 			break;
    case 2:Test_Mode();
    	break;
    default :
    	break;
  }	

 	Send_Buf[0]=Temp_Num->NumResult[0];
 	Send_Buf[1]=Temp_Num->NumResult[1];
	Send_Buf[2]=Temp_Num->NumResult[2];
    Send_Buf[3]=Temp_Num->NumResult[3];
    Send_Buf[4]=Temp_Num->NumResult[4];
	Send_Buf[5]=Temp_Num->NumResult[5];
	Send_Buf[6]=Temp_Num->ErrorResult[0];
    Send_Buf[7]=Temp_Num->ErrorResult[1];
	Send_Buf[8]=Temp_Num->ErrorResult[2];
	Send_Buf[9]=Temp_Num->ErrorResult[3];  
	Send_Buf[10]=Temp_Num->ErrorResult[4];
	Send_Buf[11]=Temp_Num->ErrorResult[5];
	Uart_Send(12);
	while(!Is_Send_Complete());

	while(1)
	{ 
	  cli();
	if(bit_is_set(UCSRA,RXC))
	{
		Recv_Buf[0]=UDR;
        if(Recv_Buf[0]==0xFF)
		   {
		     goto fun;
		    } 
		  sei();
		Result_Send_DS2174();
	 }
 else
 	  {
	   sei();
        Result_Send_DS2174();
 }
}
  return 0;
}
void Config_Mode(void)
{ 	
    uint8_t data;
 	Uart_Recv(9);
 	while(!Is_Recv_Complete());
 	BER_Write_DS2174(CONTROLR1,Recv_Buf[0]);
 	BER_Write_DS2174(CONTROLR2,Recv_Buf[1]);
 	BER_Write_DS2174(CONTROLR3,Recv_Buf[2]);
 	BER_Write_DS2174(CONTROLR4,Recv_Buf[3]);
 	BER_Write_DS2174(TSR0,Recv_Buf[4]);
 	BER_Write_DS2174(TSR1,Recv_Buf[5]);
    BER_Write_DS2174(TSR2,Recv_Buf[6]);
    BER_Write_DS2174(TSR3,Recv_Buf[7]);
 	BER_Write_DS2174(TR,Recv_Buf[8]);
 	
  if((data=BER_Read_DS2174(CONTROLR1))&0x01)
		{
			data&=~_BV(TL);
			BER_Write_DS2174(CONTROLR1,data);
			_delay_ms(100);
			data|=_BV(TL);
			BER_Write_DS2174(CONTROLR1,data);
			_delay_ms(50);
		}
		else
		{
			_delay_ms(100);
			data|=_BV(TL);
			BER_Write_DS2174(CONTROLR1,data);
			_delay_ms(50);
		}
		Test_Mode();
} 
	
void Test_Mode(void)
{
 	Temp_Num=BER_ResultNum_DS2174();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -