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

📄 btm48.i

📁 AVR ICC基于AVR单片机的LED显示程序!
💻 I
字号:
#line 1 "D:\ele\AVR\ICC\biaotao\biaotouM48\btm48.c"
#line 1 "C:/PROGRA~1/icc/include/iom48v.h"




#line 7 "C:/PROGRA~1/icc/include/iom48v.h"


#line 11 "C:/PROGRA~1/icc/include/iom48v.h"


#line 14 "C:/PROGRA~1/icc/include/iom48v.h"


#line 17 "C:/PROGRA~1/icc/include/iom48v.h"






































































































































































































































































































































































































































































































































































































































#line 2 "D:\ele\AVR\ICC\biaotao\biaotouM48\btm48.c"
#line 1 "D:\ele\AVR\ICC\biaotao\biaotouM48/bt.h"
#line 1 "C:/PROGRA~1/icc/include/iom48v.h"




#line 7 "C:/PROGRA~1/icc/include/iom48v.h"


#line 11 "C:/PROGRA~1/icc/include/iom48v.h"


#line 14 "C:/PROGRA~1/icc/include/iom48v.h"


#line 17 "C:/PROGRA~1/icc/include/iom48v.h"






































































































































































































































































































































































































































































































































































































































#line 2 "D:\ele\AVR\ICC\biaotao\biaotouM48/bt.h"
#line 1 "C:/PROGRA~1/icc/include/macros.h"






























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














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




#line 3 "D:\ele\AVR\ICC\biaotao\biaotouM48/bt.h"
















































 unsigned char shu[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};
 unsigned char tm[4]={11,11,11,11};
 unsigned char doudian;

void port_init(void)
{
(*(volatile unsigned char *)0x25) = 0x30;
(*(volatile unsigned char *)0x24)  = 0x3C;
(*(volatile unsigned char *)0x28) = 0x06;
(*(volatile unsigned char *)0x27)  = 0x0F;
(*(volatile unsigned char *)0x2B) = 0xDf;
(*(volatile unsigned char *)0x2A)  = 0xD8;
}

void DAT(unsigned char x)
{
if((x&0x01)==0x01)(*(volatile unsigned char *)0x2B)|=0X40;else(*(volatile unsigned char *)0x2B)&=~0X40;
if((x&0x02)==0x02)(*(volatile unsigned char *)0x2B)|=0X80;else(*(volatile unsigned char *)0x2B)&=~0X80;
if((x&0x04)==0x04)(*(volatile unsigned char *)0x25)|=0X20;else(*(volatile unsigned char *)0x25)&=~0X20;
if((x&0x08)==0x08)(*(volatile unsigned char *)0x28)|=0X02;else(*(volatile unsigned char *)0x28)&=~0X02;
if((x&0x10)==0x10)(*(volatile unsigned char *)0x28)|=0X04;else(*(volatile unsigned char *)0x28)&=~0X04;
if((x&0x20)==0x20)(*(volatile unsigned char *)0x2B)|=0X10;else(*(volatile unsigned char *)0x2B)&=~0X10;
if((x&0x40)==0x40)(*(volatile unsigned char *)0x2B)|=0X08;else(*(volatile unsigned char *)0x2B)&=~0X08;
if((x&0x80)==0x80)(*(volatile unsigned char *)0x25)|=0X10;else(*(volatile unsigned char *)0x25)&=~0X10;
}



void del(int time)
	 {
  	  do
	  	{
		 time--;
		}
  	  while (time>1);
	 }

void dot(unsigned char dou)
{
switch(dou)
 {
 case 1 :(*(volatile unsigned char *)0x25)|=0X04;DAT(~0x80);del(226);(*(volatile unsigned char *)0x25)&=~0X04;DAT(0xff);del(5); break;
 case 2 :(*(volatile unsigned char *)0x25)|=0X08;DAT(~0x80);del(226);(*(volatile unsigned char *)0x25)&=~0X08;DAT(0xff);del(5); break;
 case 3 :(*(volatile unsigned char *)0x28)|=0X01;DAT(~0x80);del(226);(*(volatile unsigned char *)0x28)&=~0X01;DAT(0xff);del(5);  break;
 case 4 :(*(volatile unsigned char *)0x28)|=0X08;DAT(~0x80);del(226);(*(volatile unsigned char *)0x28)&=~0X08;DAT(0xff);del(5);  break;
 }
}

void A()
{
(*(volatile unsigned char *)0x25)|=0X04;DAT(shu[tm[0]]);del(180);(*(volatile unsigned char *)0x25)&=~0X04;DAT(0xff);del(5);asm("wdr");
(*(volatile unsigned char *)0x25)|=0X08;DAT(shu[tm[1]]);del(180);(*(volatile unsigned char *)0x25)&=~0X08;DAT(0xff);del(5);asm("wdr");
(*(volatile unsigned char *)0x28)|=0X01;DAT(shu[tm[2]]);del(180);(*(volatile unsigned char *)0x28)&=~0X01;DAT(0xff);del(5);asm("wdr");
(*(volatile unsigned char *)0x28)|=0X08;DAT(shu[tm[3]]);del(180);(*(volatile unsigned char *)0x28)&=~0X08;DAT(0xff);del(5);asm("wdr");
dot(doudian);
}

void bee(unsigned int soundlong,unsigned int tone)
{
 unsigned int spfreq,j,j1,k;
spfreq=(15000/tone)/2;
for(j=0;j<soundlong;j++)
 for(j1=0;j1<20;j1++)
 {
(*(volatile unsigned char *)0x25)&=~0X40;
 for(k=0;k<spfreq;k++);
(*(volatile unsigned char *)0x25)|=0X80;
 for(k=0;k<spfreq;k++);
 asm("wdr");
 }
(*(volatile unsigned char *)0x25)|=0X80;
}



void delay(unsigned int n)
{
 unsigned int i2=0;
   while(i2<n)
   {
   A();i2++;asm("wdr");
   }
}


void show(unsigned char n,unsigned int dat)
{
 unsigned char i;
    for(i=0;i<4;i++){
        tm[i]=dat%10;
        dat/=10;
        }
    i=3;
    while(tm[i]==0&&i>0){
       tm[i]=11;
       i--;
        }
	tm[3]=n;
A();
}



void show4(unsigned int dat,unsigned char x)
{
 unsigned char i;
doudian=x;
    for(i=0;i<4;i++){
        tm[i]=dat%10;
        dat/=10;
        }
    i=3;
    while(tm[i]==0&&i>0)
	   {
       tm[i]=11;
       i--;
        }
A();
}




#line 3 "D:\ele\AVR\ICC\biaotao\biaotouM48\btm48.c"
#line 1 "D:\ele\AVR\ICC\biaotao\biaotouM48/PT100.h"

 unsigned int const RPt100[20]={0,0,0,0,10000,0,11361,35,11940,50,13850,100,17216,190,21202,300,28090,500,31513,700};

 unsigned int PT100(unsigned long dat)
{
 unsigned char ii=0;
 unsigned int Rx;
Rx=(((1024-dat)*22000)/dat);
while(RPt100[2*ii]<=Rx)
 {
  ii++;
 }
 ii<<=1;
 ii-=2;
return (((RPt100[ii+3]-RPt100[ii+1])*((Rx-RPt100[ii])/10))/((RPt100[ii+2]-RPt100[ii])/10)+RPt100[ii+1]) ;
}
#line 4 "D:\ele\AVR\ICC\biaotao\biaotouM48\btm48.c"
#line 1 "C:/PROGRA~1/icc/include/macros.h"






























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




















#line 5 "D:\ele\AVR\ICC\biaotao\biaotouM48\btm48.c"
#line 1 "C:/PROGRA~1/icc/include/eeprom.h"

#line 4 "C:/PROGRA~1/icc/include/eeprom.h"























int EEPROMwrite_extIO( int location, unsigned char);
unsigned char EEPROMread_extIO( int);

void EEPROMReadBytes_extIO(int addr, void *ptr, int size);
void EEPROMWriteBytes_extIO(int addr, void *ptr, int size);






#line 6 "D:\ele\AVR\ICC\biaotao\biaotouM48\btm48.c"














 unsigned int StandartVref=0;



void watchdog_init(void)
{
 asm("wdr");
(*(volatile unsigned char *)0x60) = 0x0B;
}





void putchar(unsigned char c)
	{
    while (!((*(volatile unsigned char *)0xC0)&(1<< 5)))asm("wdr");
(*(volatile unsigned char *)0xC6)=c;

    }




void uart0_init(void)
{
(*(volatile unsigned char *)0xC1) = 0x00;
(*(volatile unsigned char *)0xC0) = 0x02;
(*(volatile unsigned char *)0xC2) = 0x06;
(*(volatile unsigned char *)0xC4) = 0x67;
(*(volatile unsigned char *)0xC5) = 0x00;
(*(volatile unsigned char *)0xC1) = 0x18;
}


unsigned long adc_rel[8];
unsigned char adc_mux;



void adc_init(void)
{
(*(volatile unsigned char *)0x7A) = 0x00;
(*(volatile unsigned char *)0x7C) = 0xC0;
(*(volatile unsigned char *)0x50)  = 0x80;
(*(volatile unsigned char *)0x7A)=(1<< 7)|(1<< 6)|(1<< 2)|(1<< 1)|(1<< 0) ;
}


 unsigned int cw(unsigned char mux)
{
(*(volatile unsigned char *)0x7C)=(1<< 6)|(mux&0x0f);
(*(volatile unsigned char *)0x7A)|=0xC0;
 del(200);
 return((*(volatile unsigned int *)0x78));
}



 unsigned int cw1(unsigned char mux)
{
 unsigned int adc_rel=0,a;
 unsigned char i;
 for(i=0;i<5;i++)
  {
  adc_rel+=cw(mux);
 asm("wdr");
  }
 return (unsigned int)(adc_rel/5);
}

void cwStand(unsigned char mux)
{
 unsigned int adc_rel=0,a;
 unsigned char i;

(*(volatile unsigned char *)0x7A) = 0x00;
(*(volatile unsigned char *)0x7C) = 0x40;
(*(volatile unsigned char *)0x50)  = 0x80;
(*(volatile unsigned char *)0x7A)=(1<< 7)|(1<< 6)|(1<< 2)|(1<< 1)|(1<< 0) ;
 for(i=0;i<5;i++)
  {
(*(volatile unsigned char *)0x7C)=(1<< 6)|(mux&0x0f);
(*(volatile unsigned char *)0x7A)|=0x40;
   del(200);
   adc_rel=(*(volatile unsigned int *)0x78);
  }
adc_rel=0;

 for(i=0;i<5;i++)
  {
(*(volatile unsigned char *)0x7C)=(1<< 6)|(mux&0x0f);
(*(volatile unsigned char *)0x7A)|=0x40;
   del(200);
   adc_rel+=(*(volatile unsigned int *)0x78);
 asm("wdr");
  }
  StandartVref=adc_rel;
}


void init_devices(void)
{

 asm("cli");
 port_init();
 watchdog_init();
 adc_init();

(*(volatile unsigned char *)0x55) = 0x00;
(*(volatile unsigned char *)0x69) = 0x00;
(*(volatile unsigned char *)0x3D) = 0x00;

(*(volatile unsigned char *)0x6E) = 0x00;
(*(volatile unsigned char *)0x6F) = 0x00;
(*(volatile unsigned char *)0x70) = 0x00;

(*(volatile unsigned char *)0x6B) = 0x00;
(*(volatile unsigned char *)0x6C) = 0x00;
(*(volatile unsigned char *)0x6D) = 0x00;
(*(volatile unsigned char *)0x68) = 0x00;
(*(volatile unsigned char *)0x64) = 0x00;
 asm("sei");

}



void main(void)
{
 unsigned int n=11100;
 unsigned char ii=0;
 unsigned int Counter,Rx,TH,Zb,TL;

init_devices();
cwStand();

while(1)
{
dat=0;
delay1(100);
dat=cw1(7);
Rx=dat*(5000/1024);
show41(Rx,1) ;
}


while(1)
{
(*(volatile unsigned char *)0x25)|=0X01;(*(volatile unsigned char *)0x24)&=~0X01;
Counter=0;Rx=0;
while(!(((*(volatile unsigned char *)0x23)&0X01)==0X01));
while((((*(volatile unsigned char *)0x23)&0X01)==0X01));

(*(volatile unsigned char *)0x85) = 0x00;(*(volatile unsigned char *)0x84) = 0x00;(*(volatile unsigned char *)0x81) = 0x02;
while(!(((*(volatile unsigned char *)0x23)&0X01)==0X01));
TH=0xffff*Counter+(*(volatile unsigned int *)0x84);
while((((*(volatile unsigned char *)0x23)&0X01)==0X01));
while(!(((*(volatile unsigned char *)0x23)&0X01)==0X01));
(*(volatile unsigned char *)0x85) = 0x00;(*(volatile unsigned char *)0x84) = 0x00;(*(volatile unsigned char *)0x81) = 0x02;
while((((*(volatile unsigned char *)0x23)&0X01)==0X01));
TL=0xffff*Counter+(*(volatile unsigned int *)0x84);
}


#line 217 "D:\ele\AVR\ICC\biaotao\biaotouM48\btm48.c"

while(1)
{

delay(10);
show4(PT100(cw1(5)),1);


}


}

⌨️ 快捷键说明

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