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

📄 int.c

📁 rs485的通信程序的主程序。采用at91sam7a3芯片编写的。
💻 C
字号:
#include "at91sam7a3.h"

extern	unsigned long	UART0_TE_Flag; 
extern	unsigned long	UART0_TS_Flag;
extern	int				UART0_Reciev(void);
extern	int				UART1_Reciev(void);
extern	int				UART2_Reciev(void);
extern	unsigned char	HEXtoASCii(unsigned char);

		unsigned long	TestInData_Flag;		//检测注入数据的标志位
		unsigned int	count;					//检测注入数据的比特数
		unsigned char	TestInData[1024];		//存放检测注入数据的比特
		unsigned int	count1;					
		unsigned char	TempData;
		unsigned long	UART1_RE_flag;
		unsigned long	UART2_RE_flag;
		unsigned long	UART0_TX_flag;
		//unsigned int	UART1_RE_count;
		unsigned char	UART1_RE[522];
		//unsigned int	UART2_RE_count;
		unsigned char	UART2_RE[522];
		unsigned int	Read_AIC_ISR;		//
		unsigned long	TX_BUS_flag;

		int UART0_Transmit(void);
		int UART1_Transmit(void);
		int UART2_Transmit(void);
		//void timer0__irq(void); 
//		void SPI1__irq (void);
//		void UART0__irq (void);
//		void UART1__irq (void);
//		void UART2__irq (void);
void UART0(void)__irq ;
void UART1(void)__irq ;
void UART2(void)__irq ;



/*
void IRQ_Handler (void) __irq
{
 	  __asm
	  {
		 ADD     R14,PC,#4
		 LDR     R0, =0XFFFFF030
         LDR     PC,[R0]

	  }
}
*/


/*
void timer0__irq(void) 
{
	__asm	{	STMDB  R13!,{R0-R12}	}

	T0TCR = 0x00000003;			//定时器0复位
	T0IR = 0x00000001;			//清定时器0之0通道中断

	IO2SET = 0x003F0000;
	VICVectAddr = 0x00000000;	//acknowledge Interrupt

	__asm	{	LDMIA  R13!,{R0-R12}	}  
}
*/

void UART0(void)__irq 
{
	AT91PS_AIC pAIC;

	pAIC = AT91C_BASE_AIC;
	pAIC->AIC_EOICR = 0xFFFFFFFF;

	UART0_Reciev();

//	if ((UART0_TS_Flag == 0x55555555))		//((U0IIR&0x0e)==0x02)&&
//	{
//		if (UART0_Transmit()==1);

//	}
						   
	pAIC->AIC_ICCR = 0xFFFFFFFF;
}


void UART1(void)__irq 
{
	AT91PS_AIC pAIC;
	AT91S_USART *pUS1;

 	pAIC = AT91C_BASE_AIC;
	pAIC->AIC_EOICR = 0xFFFFFFFF;
	pUS1 = AT91C_BASE_US1;	//0xFFFC4000;

	if (UART1_RE_flag == 0xaaaaaaaa)
	{
		count = 0x00000000;
		UART1_RE[count] = pUS1->US_RHR;
		count = count+1;
		UART1_RE_flag = 0x55555555;
	}
	else if (UART1_RE_flag == 0x55555555)
	{
		UART1_RE[count] = pUS1->US_RHR;
		count++;
		if (count == 68)
		{
			UART1_RE_flag = 0xaaaaaaaa;
			UART0_TX_flag = 0x55555555;
			TX_BUS_flag = 0x55555555;		//说明A总线发送
		}
	}

   pAIC->AIC_ICCR = 0xFFFFFFFF;

}


void UART2(void)__irq 
{
	AT91PS_AIC pAIC;
	AT91S_USART *pUS2;
//	unsigned long	temp;

 	pAIC = AT91C_BASE_AIC;
	pAIC->AIC_EOICR = 0xFFFFFFFF;
	pUS2 = AT91C_BASE_US2;	//0xFFFC4000;

	if (UART2_RE_flag == 0xaaaaaaaa)
	{
		count1 = 0x00000000;
		UART2_RE[count1] = pUS2->US_RHR;
		count1 = count1+1;
		UART2_RE_flag = 0x55555555;
	}
	else if (UART2_RE_flag == 0x55555555)
	{
		UART2_RE[count1] = pUS2->US_RHR;
		count1++;
		if (count1 == 68)
		{
			UART2_RE_flag = 0xaaaaaaaa;
			UART0_TX_flag = 0x55555555;
			TX_BUS_flag = 0xaaaaaaaa;		//说明A总线发送
		}
	}

   pAIC->AIC_ICCR = 0xFFFFFFFF;

}

⌨️ 快捷键说明

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