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

📄 led.i

📁 AVR基本外设测试程序
💻 I
字号:
#line 1 "F:\AVR-PRO\avr3\led.c"
#line 1 "F:\AVR-PRO\avr3/main.h"
#line 1 "C:/icc/include/iom8v.h"




#line 7 "C:/icc/include/iom8v.h"


#line 10 "C:/icc/include/iom8v.h"


#line 13 "C:/icc/include/iom8v.h"


#line 16 "C:/icc/include/iom8v.h"






















































































































































































































































































































































































































































#line 2 "F:\AVR-PRO\avr3/main.h"
#line 1 "C:/icc/include/macros.h"






























#line 35 "C:/icc/include/macros.h"














void _StackCheck(void);
void _StackOverflowed(char);




#line 3 "F:\AVR-PRO\avr3/main.h"
#line 1 "C:/icc/include/stdio.h"


#line 1 "C:/icc/include/stdarg.h"


typedef char *va_list;




#line 9 "C:/icc/include/stdarg.h"

char *_va_start(void *, int);

#line 13 "C:/icc/include/stdarg.h"




#line 4 "C:/icc/include/stdio.h"
#line 1 "C:/icc/include/_const.h"




#line 10 "C:/icc/include/_const.h"







#line 5 "C:/icc/include/stdio.h"

int getchar(void);
int putchar(char);
int puts( char *);
int printf( char *, ...);
int vprintf( char *, va_list va);
int sprintf(char *, char *, ...);
int vsprintf(char *, char *, va_list va);

int scanf( char *, ...);
int vscanf( char *, va_list va);
int sscanf(char *, char *, ...);
int vsscanf(char *, char *, va_list va);






int cprintf(const char *, ...);
int csprintf(char *, const char *, ...);



#line 4 "F:\AVR-PRO\avr3/main.h"
#line 1 "F:\AVR-PRO\avr3/key.c"
#line 1 "F:\AVR-PRO\avr3/sga.h"
#line 1 "C:/icc/include/iom8v.h"




#line 7 "C:/icc/include/iom8v.h"


#line 10 "C:/icc/include/iom8v.h"


#line 13 "C:/icc/include/iom8v.h"


#line 16 "C:/icc/include/iom8v.h"






















































































































































































































































































































































































































































#line 2 "F:\AVR-PRO\avr3/sga.h"
#line 1 "C:/icc/include/macros.h"






























#line 35 "C:/icc/include/macros.h"




















#line 3 "F:\AVR-PRO\avr3/sga.h"
#line 1 "C:/icc/include/stdio.h"




























#line 4 "F:\AVR-PRO\avr3/sga.h"


























 unsigned char MBZ,VARIA_BIT,LCD[23],KKEY_n[14],KEY,
 			   CHW;

 struct data
 {
   unsigned BEEP1:1;
   unsigned BEEP2:1;
   unsigned BIT1 :1;
    unsigned BIT2 :1;
   unsigned BIT3 :1;
   unsigned BIT4 :1;
   unsigned BIT5 :1;
   unsigned BIT6 :1;
 }a;


#line 2 "F:\AVR-PRO\avr3/key.c"

unsigned char key_t2()
{
	static unsigned char   NK=0,
            			   PPK=111,
			           KZT,
                                   YYK,
                                   NKEY_n,
				   key_i=0;

	unsigned char   a,c, KEYIN,z,i;
    z=0;
(*(volatile unsigned char *)0x34)|=0X3E;
(*(volatile unsigned char *)0x35)|=(1 << (5));(*(volatile unsigned char *)0x35)|=(1 << (4));(*(volatile unsigned char *)0x35)|=(1 << (3));
	_nop_();
    switch(key_i)
	{
		case 0:(*(volatile unsigned char *)0x35)|=(1 << (2));(*(volatile unsigned char *)0x35)&=-(1 << (1));  break;
		case 1:(*(volatile unsigned char *)0x35)&=-(1 << (2));(*(volatile unsigned char *)0x35)|=(1 << (1));  break;

	}
	key_i++;
	if(key_i==2)	key_i=0;
     _nop_(); _nop_();_nop_();_nop_();_nop_();
     _nop_(); _nop_();_nop_();_nop_();_nop_();
     _nop_(); _nop_();_nop_();_nop_();_nop_();
     _nop_(); _nop_();_nop_();_nop_();_nop_();
     _nop_(); _nop_();_nop_();_nop_();_nop_();
(*(volatile unsigned char *)0x34)|=0XC7;
	 i=(*(volatile unsigned char *)0x35);
	 i=i&0x38;
	     if(i==0x18)
	{
		a=3;
	}else
	     if(i==0x28)
	{
		a=4;
	}else
		if(i==0x30)
	{
		a=5;
	}else
	{
		a=0;
	}

	a=a*10+key_i;
	if(a<20)
	{
		NKEY_n++;
        if(NKEY_n==4)
        {

            NKEY_n=0;   z=1;
            for(a=0;a!=14;a++)
            KKEY_n[a]=0;
            KEYIN=0;
        }
	}else
    {
        NKEY_n=0;
        switch(a)
        {
            case 32:KKEY_n[4]++;break;
            case 33:KKEY_n[5]++;break;
            case 31:KKEY_n[3]++;break;
            case 30:KKEY_n[8]++;break;

            case 42:KKEY_n[2]++;break;
            case 43:KKEY_n[7]++;break;
            case 41:KKEY_n[1]++;break;
            case 40:KKEY_n[0]++;break;

            case 52:KKEY_n[11]++;break;
            case 53:KKEY_n[13]++;break;
	   	    case 51:KKEY_n[12]++;break;
            case 50:KKEY_n[6]++;break;

			case 63:KKEY_n[9]++;break;
            case 60:KKEY_n[10]++;break;


        }
        for(a=0;a!=14;a++)
        {
            if(KKEY_n[a]==4)
            {
                KEYIN=a+1;  z=1;
                NKEY_n=0;
                for(c=0;c!=14;c++)  KKEY_n[c]=0;
                break;
            }
        }
        if(a==14)   return(0);
    }

    if(z==0)    return(0);


   if(KEYIN==0)
	{

		if((++NK)>2)
		{
			NK=30;
			KEY=0;


			switch(PPK)
			{
				case 5 :
					KEY=PPK;
					PPK=111;
					if(YYK<16)
                                        	return(1);
					break;
				default:PPK=111;
			}
                        YYK=0;
		}
		return(0);
	}
	NK=0;

	if(PPK!=KEYIN)
	{
	  PPK=KEYIN;
	  YYK=0;
	  KZT=1;
	  return(0);
	}
	if(YYK==200) return(0);
	++YYK;
	switch(KZT)
	{
	case 1:   if((PPK== 5 && YYK>26))
			{
				YYK=200;
				KEY=PPK;
				return(2);
			}

		 if  (  PPK== 1  || PPK== 2    )
			     {
					if(YYK!=1) return(0);
                    _nop_();
					KEY=PPK;
					return(1);
			     }

			if(PPK== 3 || PPK== 4  )
			{
				KEY=PPK;
				KZT=2;        YYK=0;
				if(CHW==0)BEEP1=1;
				return(1);
			}
			return(0);
		case 2: if(YYK!=20 && (PPK== 3 || PPK== 4  ))
                           return(0);
			YYK=0;
			KEY=PPK;
			KZT=3;
			return(1);
		case 3: if (YYK!=10)     return(0);
			YYK=0;
			KEY=PPK;
			return(1);
	}
}
#line 5 "F:\AVR-PRO\avr3/main.h"


































 extern unsigned char key_t2();

 extern unsigned char MBZ,VARIA_BIT,LCD[23],KKEY_n[14],KEY,
 				 	  CHW;
 struct data
 {
   unsigned BEEP1:1;
   unsigned BEEP2:1;
   unsigned BIT1 :1;
   unsigned BIT2 :1;
   unsigned BIT3 :1;
   unsigned BIT4 :1;
   unsigned BIT5 :1;
   unsigned BIT6 :1;
 }a;

#line 2 "F:\AVR-PRO\avr3\led.c"


 #pragma interrupt_handler timet0_ovf:10
  void timet0_ovf(void)
  {
   	  static unsigned int
	  		 BEEP1_CONT=110,
			 BEEP2_CONT=190,
	  		 M05_CONT=800;
(*(volatile unsigned char *)0x5F) =0X80;
(*(volatile unsigned char *)0x52)=0XEE;
(*(volatile unsigned char *)0x37)|=(1 << (0));
(*(volatile unsigned char *)0x38)|=(1 << (0));
	    M05_CONT--;
	    if(M05_CONT==0)
	    {
	       M05_CONT=800;
		   if(MBZ==0)   { MBZ=1; }
		   else         { MBZ=0; }
	    }
		if(a.BEEP1==1)
		{
(*(volatile unsigned char *)0x32)&=~(1 << (6));
		    if((BEEP1_CONT--)==1)
	          {
 	           BEEP1_CONT=110;
(*(volatile unsigned char *)0x32)|=(1 << (6));
	           a.BEEP1=0;
	          }
		}

			if(a.BEEP2==1)
	{
		--BEEP2_CONT;
		if(BEEP2_CONT>113)
		{
(*(volatile unsigned char *)0x32)&=~(1 << (6));
		}else
		if(BEEP2_CONT>75)
		{
(*(volatile unsigned char *)0x32)|=(1 << (6));
		}else
		if(BEEP2_CONT>0)
		{
(*(volatile unsigned char *)0x32)&=~(1 << (6));
		}else
		if(BEEP2_CONT==0)
		{
(*(volatile unsigned char *)0x32)|=(1 << (6));
			a.BEEP2=0;
			BEEP2_CONT=190;
		}
	}


  }



#line 137 "F:\AVR-PRO\avr3\led.c"


void main(void)
{
   unsigned int i;
   unsigned char x;



#line 153 "F:\AVR-PRO\avr3\led.c"
  for(x=0;x<23;x++)  LCD[x]=0XFF;

(*(volatile unsigned char *)0x53)=0X05;
(*(volatile unsigned char *)0x52)=0XEE;
(*(volatile unsigned char *)0x59)|=0X01;

(*(volatile unsigned char *)0x31)&=0XF3;
(*(volatile unsigned char *)0x55)=0X08;



#line 168 "F:\AVR-PRO\avr3\led.c"
(*(volatile unsigned char *)0x37)|=0X3e;
(*(volatile unsigned char *)0x4F)=0X63;
(*(volatile unsigned char *)0x4E)=0X12;
(*(volatile unsigned int *)0x4A)=0x61A7;
(*(volatile unsigned int *)0x48)=2500;

(*(volatile unsigned char *)0x5F) =0X80;
  MBZ=0;
  while(1)
  {

(*(volatile unsigned char *)0x31)|=(1 << (7));
(*(volatile unsigned char *)0x31)|=(1 << (6));
	if(MBZ==0)
	 {
(*(volatile unsigned char *)0x32)|=(1 << (7));
	 }
	if(MBZ==1)
	 {
(*(volatile unsigned char *)0x32)&=~(1 << (7));
	   a.BEEP1=1;
	 }
  }
}

⌨️ 快捷键说明

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