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

📄 testavrkit.c

📁 AVR开发板电路图/PCB/示范程序
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <io.h>
#include <delay.h>
#include <USART.h>
#include <Music.h>
#include <Types.h>
#include <TWI.h>
#include <TWIAPP.h>
#include <String.h>

#asm
.equ __ds1302_port=0x15 
.equ __ds1302_sclk=4
.equ __ds1302_io=5
.equ __ds1302_rst=6
#endasm

#include <DS1302V2.h>


#asm
    .equ __i2c_port=0x12
    .equ __scl_bit=0
    .equ __sda_bit=1
#endasm

#include <I2C.h>
#include <LCDv2.h>

#pragma warn-
eeprom unsigned char EEPROMS[512];
#pragma warn+

#define uchar unsigned char
#define uint unsigned int

void Pause(void)
{
  TransmitLineF("Press any key to start...");
  ReceiveByte();
}


void TestAllPort(void)
{
  unsigned char LED_A;
  unsigned char LED_B;
  unsigned char LED_C;
  unsigned char LED_D;
  unsigned char LED_E;
  unsigned char LED_F;
  unsigned char LED_G;
  
  TransmitLineF("Cable setting: LEDG <--> PortA,B,C,D,E,F,G");  
  Pause();
  
  #if defined _CHIP_ATMEGA128_ | defined _CHIP_ATMEGA128L_
  UCSR1A=0x00;
  UCSR1B=0x00;
  UCSR1C=0x00;
  UBRR1H=0x00;
  UBRR1L=0x00;
  #else
  UCSRA=0x00;
  UCSRB=0x00;
  UCSRC=0x00;
  UBRRH=0x00;
  UBRRL=0x00;  
  #endif
  
  
  DDRA=0xFF;
  DDRB=0xFF;
  DDRC=0xFF;
  DDRD=0xFF;
  #if defined _CHIP_ATMEGA128_ | defined _CHIP_ATMEGA128L_
  DDRE=0xFF;
  DDRF=0xFF;
  DDRG=0xFF;
  #endif
  
  LED_A=0B11001100;
  LED_B=0B11110000;
  LED_C=0B11111111;
  LED_D=0B10101010;
  LED_E=0B11000011;
  LED_F=0B11010100;
  LED_G=0B01010011;
  
  while (1)
  {
    PORTA=LED_A;
    PORTB=LED_B;
    PORTC=LED_B;
    PORTD=LED_D;
    #if defined _CHIP_ATMEGA128_ | defined _CHIP_ATMEGA128L_
    PORTE=LED_E;
    PORTF=LED_F;
    PORTG=LED_G;
	#endif
	
    LED_A=~LED_A;
    LED_B=~LED_B;    
    LED_C=~LED_C;
    LED_D=~LED_D;
    LED_E=~LED_E;
    LED_F=~LED_F;
    LED_G=~LED_G;
	
    delay_ms(500);
  }
}
/**************************************************************************/
void TestKeyPress(void)
{
  //flash unsigned char *Msg ="Press"
  register unsigned char Key;
  TransmitLineF("Cable setting: LEDG <--> PortA, KEY <--> PortC");  
  Pause();
  
  DDRA=0xFF;
  DDRC=0x00;
  
  //Key=PINC;
  
  while (1)
  {
    /*
	if (!Key&(1<<0)) TransmitLineF("Press K0");
    if (!Key&(1<<1)) TransmitLineF("Press K1");
    if (!Key&(1<<2)) TransmitLineF("Press K2");
    if (!Key&(1<<3)) TransmitLineF("Press K3");
    if (!Key&(1<<4)) TransmitLineF("Press K4");
    if (!Key&(1<<5)) TransmitLineF("Press K5");
    if (!Key&(1<<6)) TransmitLineF("Press K6");
    if (!Key&(1<<7)) TransmitLineF("Press K7");
	PORTA=Key;
	while (~PINC);*/
	
	Key=~PINC;	
	if (Key)
	{
	  while (~PINC);
	}
	if (Key&(1<<0)) TransmitLineF("Press K0");
    if (Key&(1<<1)) TransmitLineF("Press K1");
    if (Key&(1<<2)) TransmitLineF("Press K2");
    if (Key&(1<<3)) TransmitLineF("Press K3");
    if (Key&(1<<4)) TransmitLineF("Press K4");
    if (Key&(1<<5)) TransmitLineF("Press K5");
    if (Key&(1<<6)) TransmitLineF("Press K6");
    if (Key&(1<<7)) TransmitLineF("Press K7");	
  }
}
/*****************************************************************************/
#define LED_A 0b00000001
#define LED_B 0b00000010
#define LED_C 0b00000100
#define LED_D 0b00001000
#define LED_E 0b00010000
#define LED_F 0b00100000
#define LED_G 0b01000000
#define LED_T 0b10000000

unsigned char ShowLed(unsigned char LED)
{
  unsigned char LEDS[20]={
                         0x7F&(~LED_G),                  //0
                         LED_B|LED_C,                    //1
                         LED_A|LED_B|LED_G|LED_E|LED_D,  //2
                         LED_A|LED_B|LED_G|LED_C|LED_D,  //3
                         LED_F|LED_G|LED_B|LED_C,        //4
                         LED_A|LED_F|LED_G|LED_C|LED_D,  //5
                         0x7F&(~LED_B),                  //6
                         LED_A|LED_B|LED_C,              //7
                         0x7F,                           //8
                         0x7F&(~LED_E),                  //9
                         LED_F|LED_E|LED_G|LED_B|LED_C,  //H
                         LED_A|LED_F|LED_G|LED_E|LED_D,  //ERR
                         LED_A,                          //A
                         LED_B,                          //B
                         LED_C,                          //C
                         LED_D,                          //D
                         LED_E,                          //E
                         LED_F,                          //F
                         LED_G,                          //G
                         LED_T                           //.
                         };
  unsigned char LEDSHOW;
 if (LED<=11)
   {LEDSHOW = LEDS[LED];}
 else if ((LED>='0') && (LED<='9'))
   {LEDSHOW = LEDS[LED-'0'];}
 else if (LED=='.')
   {LEDSHOW = LEDS[19];}
 else if ((LED>='a') && (LED<='g'))
   {LEDSHOW = LEDS[LED-'a'+12];}
 else if ((LED>='A') && (LED<='G'))
   {LEDSHOW = LEDS[LED-'A'+12];} 
 else if (LED=='-')
   {LEDSHOW = LEDS[19];}
 else if ((LED=='H')||(LED=='h'))
   {LEDSHOW = LEDS[10];}
 else 
   {LEDSHOW = LEDS[11];}
 return LEDSHOW; 
}
void TestDLED(void)
{
unsigned char LED[6];
unsigned char State;
unsigned char Index;
unsigned int i;
PORTB=0x00;
DDRB=0x00;

PORTC=0x00;
DDRC=0xFF;

PORTD=0x00;
DDRD=0xFF;

PORTA=0x00;
DDRA=0xFF;

State=0;

  TransmitLineF("Cable setting: DLED2 <--> PortA, DLED1 <--> PortC"); 
  Pause();
  
for (i=0;i<6;i++) LED[i]=ShowLed(i);
Index=0;
while (1)
      {
       	if (UCSRA&(1<<RXC)) 
       	 {
       	   State=0;
	         for (i=5;i>=1;i--) LED[i]=LED[i-1];
	         LED[0]=ShowLed(UDR);
       	 }
        PORTA=~LED[Index];  //for M16;
        PORTC=1<<Index;
        Index++;
        if (Index>=6) Index=0;
       switch (State)
      {
      case 3:
         {
         for (i=0;i<6;i++) LED[i]=ShowLed(8);
         break;
         }
      case 4:
        {
         for (i=0;i<6;i++) LED[i]=ShowLed(i);
         break;
         }
      }
			delay_ms(1);
      }

}
/*****************************************************************************/
#define SND_TNE PORTD^=0x80
const byte music_dt0[]=
 {L6,P8,M1,P8,M3,P8,M1,P8,M2,P4,M1,P8,L7,P8,M3,P4,M2,P4,L6,P2,
 M1,P8,M3,P8,M5,P8,M5,P8,M6,P4,M5,P8,M4,P8,M3,P2,
 M4,P4,M5,P4,M7,P8,M6,P8,M3,P4,M3,P8,
 L7,P4,L6,P8,M3,P8,M2,P8,M4,P4,M4,P8,0,P8,
 M5,P8,M4,P8,M3,P4,M2,P8,M1,P8,M3,P4,M2,P4,L6,P2,L6,P8,0,P8,
 0,P4,0,0};

unsigned char delay_inc=0x0C;
unsigned char time_inc=0x01;
  
void delay(word t)
{
 uint i;
// uchar j;
 for (i=0;i<t;i++) i+=delay_inc;
//   for(j=1;j<8;j++);
}

void TestSound(void)
{
  //struct MUSICDAT * music_dat;
  //unsigned char c;

  unsigned int i,j,k;  
  unsigned char name;
  unsigned int time;
  
  DDRD|=0x80;
  
  TransmitLineF("Cable setting: Sound.SSD--PortD.PD7"); 
  //if time_inc

  
  while (1)
  {
      TransmitLineF("Please input Speed:");
      time_inc=ReceiveByte();
	  i=0;
	  while (i<sizeof(music_dt0))
	  {
		name=music_dt0[i];
		time=music_dt0[i+1];
		for (k=0;k<time;k++)
		for (j=0;j<=time_inc;j++)
		  {
		  SND_TNE;
		  delay(tone_frq[name]);
		  SND_TNE;
		  delay(tone_frq[name]);
		  }
	   delay_ms(20); 
	   i+=2;
	  }
  }
  //while ((name==0)&&(time==0));
}
/*****************************************************************************/
void TestDS1302(void)
{
	//unsigned char State=0;
	unsigned char Cmd;
	//unsigned char i,j;
    unsigned char RTC[6];
	unsigned char Buffer[10];
	
	TransmitLineF("Cable setting: "); 
	TransmitLineF("  VCC     <--> DS1302.VCC");
    TransmitLineF("  PORTC.4 <--> DS1302.SCL");
    TransmitLineF("  PORTC.5 <--> DS1302.SDA");
    TransmitLineF("  PORTC.6 <--> DS1302.RST");
    TransmitLineF("  GND     <--> DS1302.GND");
	TransmitLineF(" "); 
	TransmitLineF("DS1302 Menu");
	TransmitLineF("---------------------");
	TransmitLineF("1.Start/Stop Timer");
	TransmitLineF("2.Get Date");
	TransmitLineF("3.Get Time");
	TransmitLineF("4.Reset Date");
	TransmitLineF("5.Reset Time");
	TransmitLineF("---------------------");
	TransmitLineF("Please choose item:");
	
	
	while (1)
	{
		Cmd=ReceiveByte();
		switch (Cmd)
		{
			case '1':
			{
				rtc_switch();
				rtc_get_time(&RTC[2],&RTC[1],&RTC[0]);
				TransmitStringF("DS1302 state is :");
				ByteToHexBuffer(RTC[0],&Buffer[0]);
				Buffer[2]=0;
				TransmitLine(Buffer);
				break;
			}
			case '2':
			{
				rtc_get_date_bcd(&RTC[5],&RTC[4],&RTC[3]);
				ByteToHexBuffer(RTC[3],&Buffer[0]);
				Buffer[2]='-';
				ByteToHexBuffer(RTC[4],&Buffer[3]);
				Buffer[5]='-';
				ByteToHexBuffer(RTC[5],&Buffer[6]);
				Buffer[8]=0;
				TransmitStringF("Current date is 20");
				TransmitLine(Buffer);
				break;
			}
			case '3':
			{
				rtc_get_time_bcd(&RTC[2],&RTC[1],&RTC[0]);
				ByteToHexBuffer(RTC[2],&Buffer[0]);
				Buffer[2]=':';
				ByteToHexBuffer(RTC[1],&Buffer[3]);
				Buffer[5]=':';
				ByteToHexBuffer(RTC[0],&Buffer[6]);
				Buffer[8]=0;
				TransmitStringF("Current time is ");
				TransmitLine(Buffer);
				break;
			}
			case '4':
			{
			    RTC[3]=1; //date
				RTC[4]=1; //month
				RTC[5]=0; //year
				rtc_set_date(RTC[3],RTC[4],RTC[5]);
				delay_ms(10);
				rtc_get_date_bcd(&RTC[5],&RTC[4],&RTC[3]);
				ByteToHexBuffer(RTC[3],&Buffer[0]);
				Buffer[2]='-';
				ByteToHexBuffer(RTC[4],&Buffer[3]);
				Buffer[5]='-';
				ByteToHexBuffer(RTC[5],&Buffer[6]);
				Buffer[8]=0;
				TransmitStringF("Reset date is 20");
				TransmitLine(Buffer);
				break;				
			}
			case '5':
			{
			    RTC[2]=0; //
				RTC[1]=0; //month
				RTC[0]=0; //year
				rtc_set_time(RTC[2],RTC[1],RTC[0]);
				delay_ms(10);
				rtc_get_time_bcd(&RTC[2],&RTC[1],&RTC[0]);
				ByteToHexBuffer(RTC[2],&Buffer[0]);
				Buffer[2]=':';
				ByteToHexBuffer(RTC[1],&Buffer[3]);
				Buffer[5]=':';
				ByteToHexBuffer(RTC[0],&Buffer[6]);
				Buffer[8]=0;
				TransmitStringF("Reset time is ");
				TransmitLine(Buffer);
				break;
			}			
			default :
			{
				TransmitLineF("Bad Command.");
			}
		}
	}
}
/*****************************************************************************/
#define URD PORTA.0

⌨️ 快捷键说明

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