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

📄 main.i

📁 AVR单片机六路ADC采集与七段数码管显示采集值
💻 I
字号:
#line 55 "C:\PROGRA~1\ICCAVR\include\macros.h"
void _StackCheck(void);
void _StackOverflowed(char);

#line 6 "f:\MYDOCU~1\AVR\test\delay.h"
void Delay_MS(unsigned int iTime) 
{ unsigned char i; 
 while(iTime>0) 
 { 
 for (i=1;i<187;i++) 
 asm("nop"); 

 iTime--; 
 } 
} 


void Delay_US(unsigned int iTime) 
{
 unsigned int i,j;
 j = iTime * 8;
 for(i=0;i<j;i++);
}
#line 11 "f:\MYDOCU~1\AVR\test\main.c"
unsigned char SEG7[16] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};


unsigned char PADV[16] = {-1};
unsigned char CADV[16] = {0};

unsigned char ScaleCHindex = 0;


#pragma interrupt_handler OnTimer0:10
void OnTimer0(void)
{ unsigned char adv;
 (*(volatile unsigned char *)0x27) = 0x20 + ScaleCHindex; 

 (*(volatile unsigned char *)0x26)|=(1<<6); 
 Delay_US(60); 
 (*(volatile unsigned char *)0x26)|=(1<<6); 
 Delay_US(60);
 adv = (*(volatile unsigned char *)0x25);

 if(adv == 0xFF) adv = 0xFE;
 else if((*(volatile unsigned char *)0x25) == 0x00) adv = 0x01;

 CADV[ScaleCHindex] = adv;

 ScaleCHindex++;
 if(ScaleCHindex >= 6) ScaleCHindex = 0;


 adv = (*(volatile unsigned char *)0x30);
 Delay_US(50);
 if(adv != (*(volatile unsigned char *)0x30)) return; 

 CADV[6] = ((*(volatile unsigned char *)0x30) & 0x10) ? 0xFF : 0x00; 
 CADV[6+1] = ((*(volatile unsigned char *)0x30) & 0x20) ? 0xFF : 0x00;
 CADV[6+2] = ((*(volatile unsigned char *)0x30) & 0x40) ? 0xFF : 0x00;
 CADV[6+3] = ((*(volatile unsigned char *)0x30) & 0x80) ? 0xFF : 0x00;


}


void init_devices(void)
{


 unsigned int baud = 9600;

 asm("cli");


 (*(volatile unsigned char *)0x38) = 0xFF;
 (*(volatile unsigned char *)0x37) = 0xFF;


 (*(volatile unsigned char *)0x35) = 0x00;
 (*(volatile unsigned char *)0x34) = 0x00;


 (*(volatile unsigned char *)0x32) = 0xF0;
 (*(volatile unsigned char *)0x31) = 0x0F;


 (*(volatile unsigned char *)0x53) = 0x00; 
 (*(volatile unsigned char *)0x52) = 0x0F; 
 (*(volatile unsigned char *)0x53) = 0x05; 


 (*(volatile unsigned char *)0x26) = 0x00; 
 (*(volatile unsigned char *)0x27) = 0x20; 

 (*(volatile unsigned char *)0x28) = 0x80; 
 (*(volatile unsigned char *)0x26) = 0x83; 



 (*(volatile unsigned char *)0x40) = (unsigned char)(baud>>8);
 (*(volatile unsigned char *)0x29) = (unsigned char)(baud);
 (*(volatile unsigned char *)0x2A) = (1<<3);
 (*(volatile unsigned char *)0x40) = (1<<7)|(1<<3)|(1<<UCSZ8);


 (*(volatile unsigned char *)0x55) = 0x00;
 (*(volatile unsigned char *)0x5B) = 0x00;
 (*(volatile unsigned char *)0x59) = 0x01; 

 asm("sei");
}

main()
{ 
 int i = 0,j = 0;

 init_devices();

 while(1)
 { 
 for(j=0;j<16;j++)
 if(PADV[j] != CADV[j])
 { i = j;
 PADV[j] = CADV[j];
 }


 (*(volatile unsigned char *)0x32) = 0x01;
 (*(volatile unsigned char *)0x38) = SEG7[CADV[i] & 0x0F];
 Delay_MS(20);


 (*(volatile unsigned char *)0x32) = 0x02;
 (*(volatile unsigned char *)0x38) = SEG7[CADV[i] >> 4];
 Delay_MS(20);


 (*(volatile unsigned char *)0x32) = 0x08;
 (*(volatile unsigned char *)0x38) = SEG7[i];
 Delay_MS(20);
 }
}

⌨️ 快捷键说明

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