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

📄 main.bak

📁 I2C 2 UART C51 I2C 2 UART C51
💻 BAK
字号:
#include "def.h"
#include "vk32.h"

//在各种方式中,main.c函数和vk32.h是通用的def.h在spi和parallel方式是通用的
//uart模式下多了两个批量读写fifo的函数;底层函数是不一样的


void Init_led(void)
{
    unsigned int tempdata=0x0ffff;

    CH4_LED = 0;
    CH3_LED = 0;
    CH2_LED = 0;
    CH1_LED = 0;
    PAR_LED = 0;
    SPI_LED = 0;
    UART_LED = 0;
	while(tempdata)
	{
	tempdata=tempdata-1;	
	}
	CH4_LED = 1;
	CH3_LED = 1;
	CH2_LED = 1;
	CH1_LED = 1;
	PAR_LED = 1;
	SPI_LED = 1;
    UART_LED = 1;
    tempdata=0x0ffff;
	while(tempdata)
	{
	tempdata=tempdata-1;	
	}
    CH4_LED = 0;
    CH3_LED = 0;
    CH2_LED = 0;
    CH1_LED = 0;
    PAR_LED = 0;
    SPI_LED = 0;
    UART_LED = 0;
    tempdata=0x0ffff;
	while(tempdata)
	{
	tempdata=tempdata-1;	
	}
	CH4_LED = 1;
	CH3_LED = 1;
	CH2_LED = 1;
	CH1_LED = 1;
	PAR_LED = 1;
	SPI_LED = 1;
    UART_LED = 1;
    tempdata=0x0ffff;
	while(tempdata)
	{
	tempdata=tempdata-1;	
	}
    CH4_LED = 0;
    CH3_LED = 0;
    CH2_LED = 0;
    CH1_LED = 0;
    PAR_LED = 0;
    SPI_LED = 0;
    UART_LED = 0;
    tempdata=0x0ffff;
	while(tempdata)
	{
	tempdata=tempdata-1;	
	}
}



main()
{

	static unsigned char dat1,dat2,dat3,dat4,m,n;
	n=0;
	m=0;
    Init_led();
	config();
	config_vkxx();


    //***********************************************
    //主串口测试;
		CH4_LED = 1;
		CH3_LED = 1;
		CH2_LED = 1;
		CH1_LED = 1;
		PAR_LED = 1;
		SPI_LED = 1;
        UART_LED = 0;
	while(1)
	{


		
		write_reg(1,SFDR,m);
		write_reg(2,SFDR,m);
		write_reg(3,SFDR,m);
		write_reg(4,SFDR,m);


        //*********************************************
        //检测子串口1读回的数据个数和所发送数据是否为
        //主串口所发送的个数和数据.如有不正确熄灭到子串口CH1_LED
        if(read_reg(1,SFSR))
          {
           dat1=read_reg(1,SFDR);
           if(dat1==m)
             CH1_LED =0;
           else
             CH1_LED =1;
          }
        else
          CH1_LED =1;

        //*********************************************
        //检测子串口2读回的数据个数和所发送数据是否为
        //主串口所发送的个数和数据.如有不正确熄灭到子串口CH2_LED
        if(read_reg(2,SFSR))
          {
           dat2=read_reg(2,SFDR);
           if(dat2==m)
             CH2_LED =0;
           else
             CH2_LED =1;
          }
        else
         CH2_LED =2;

        //*********************************************
        //检测子串口3读回的数据个数和所发送数据是否为
        //主串口所发送的个数和数据.如有不正确熄灭到子串口CH3_LED
        if(read_reg(3,SFSR))
          {
           dat3=read_reg(3,SFDR);
           if(dat3==m)
             CH3_LED =0;
           else
             CH3_LED =1;
          }
        else
         CH3_LED =1;

        //*********************************************
        //检测子串口4读回的数据个数和所发送数据是否为
        //主串口所发送的个数和数据.如有不正确熄灭到子串口CH4_LED
        if(read_reg(4,SFSR))
          {
           dat4=read_reg(4,SFDR);
           if(dat4==m)
             CH4_LED =0;
           else
             CH4_LED =1;
          }
        else
          CH4_LED =1;



     m=m+1;

	}
	
	while(1)
	{
		do
		{
//*****************************************************			
			write_reg(1,SFDR,m);
			write_reg(2,SFDR,m);
			write_reg(3,SFDR,m);
			write_reg(4,SFDR,m);
//分别通过各路子串口发送数据m
//*****************************************************
			while(!(read_reg(1,SFSR)));
			while(!(read_reg(2,SFSR)));
  			while(!(read_reg(3,SFSR)));
			while(!(read_reg(4,SFSR)));

			dat1=read_reg(1,SFDR);
			dat2=read_reg(2,SFDR);
			dat3=read_reg(3,SFDR);
			dat4=read_reg(4,SFDR);
//先查看接收FIFO中是否有数据,如果接收FIFO中有数据则把各路子串口接收FIFO中的数据读出来
//*****************************************************
			if(dat1!=m || dat2!=m || dat3!=m || dat4!=m) 
			n=n+1;
		}
		while(m<255);
		if(m==255)
		m=0;
		m=m+1;
	}
}






⌨️ 快捷键说明

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