久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4250|回復: 1
打印 上一主題 下一主題
收起左側

無線紅外模塊-AVR程序代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:51024 發表于 2014-7-12 01:56 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式


以前學的AVR寫的一些程序,分享一下









#include

#include

#define uint unsigned int

#define uchar unsigned char



// Alphanumeric LCD Module functions

#asm

   .equ __lcd_port=0x18 ;PORTB

#endasm

#include   



uchar startflag=0,bitnum,irtime,irprosok,irreceok;

uchar irdata[33],dis[8],ircode[4];



// External Interrupt 0 service routine

interrupt [EXT_INT0] void ext_int0_isr(void)

{

if(startflag==1)  

{

         if(irtime>=32)

              {  

                 bitnum=0;

              }

         irdata[bitnum]=irtime;

         irtime=0;

         bitnum++;

         if(bitnum==33)

                  {  

                       bitnum=0;

                       irreceok=1;

                  }

                  }

if(startflag==0)

{   

startflag=1;

irtime=0;

}

}





// Timer 0 output compare interrupt service routine

interrupt [TIM0_COMP] void timer0_comp_isr(void)

{

irtime++;

}



void irpros(void)

{

uchar k,value,i,j;

k=1;

for(j=0;j<4;j++)

{

for(i=0;i<8;i++)

{

value=value>>1;

if(irdata[k]>6)

{

value=value|0x80;

}

k++;

}

ircode[j]=value;

}

irprosok=1;

}  



void irwork(void)

{

dis[0]=ircode[0]/16;

dis[1]=ircode[0];

dis[2]=ircode[1]/16;

dis[3]=ircode[1];

dis[4]=ircode[2]/16;

dis[5]=ircode[2];

dis[6]=ircode[3]/16;

dis[7]=ircode[3];



}



void display_lcd()

{

lcd_gotoxy(0,0);

lcd_putchar(dis[0]+48);

lcd_putchar(dis[1]+48);

lcd_putchar(dis[2]+48);

lcd_putchar(dis[3]+48);

lcd_putchar(dis[4]+48);

lcd_putchar(dis[5]+48);

lcd_putchar(dis[6]+48);

lcd_putchar(dis[7]+48);

}



// Declare your global variables here



void main(void)

{

// Declare your local variables here



// Input/Output Ports initialization

// Port A initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTA=0x00;

DDRA=0x00;



// Port B initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTB=0x00;

DDRB=0x00;



// Port C initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTC=0x00;

DDRC=0x00;



// Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTD=0x00;

DDRD=0x00;



// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: 62.500 kHz

// Mode: CTC top=OCR0

// OC0 output: Disconnected

TCCR0=0x0C;

TCNT0=0x00;

OCR0=0x0f;



// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Normal top=FFFFh

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer 1 Overflow Interrupt: Off

// Input Capture Interrupt: Off

// Compare A Match Interrupt: Off

// Compare B Match Interrupt: Off

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;



// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer 2 Stopped

// Mode: Normal top=FFh

// OC2 output: Disconnected

ASSR=0x00;

TCCR2=0x00;

TCNT2=0x00;

OCR2=0x00;



// External Interrupt(s) initialization

// INT0: On

// INT0 Mode: Falling Edge

// INT1: Off

// INT2: Off

GICR|=0x40;

MCUCR=0x02;

MCUCSR=0x00;

GIFR=0x40;



// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x02;



// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0x80;

SFIOR=0x00;



// LCD module initialization

lcd_init(16);



// Global enable interrupts

#asm("sei")



while (1)

      {if(irreceok)

      {

      irpros();

      irreceok=0;

      }

      if(irprosok)

      {

      irwork();

      irprosok=0;

      }

      display_lcd();

      };

}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:143447 發表于 2017-6-29 10:18 | 只看該作者
謝謝 分享不錯
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日产国产成人免费图片 | 久久一| www久久99| 日韩精品一区二区久久 | 国产精品69av| 成人精品区 | 天堂成人国产精品一区 | 日韩精品一区二区在线 | 另类在线 | 亚洲精品欧美 | 日韩福利片| 国产美女特级嫩嫩嫩bbb片 | 色综合av| 国产精品久久久久久一区二区三区 | 午夜在线免费观看 | www国产成人免费观看视频,深夜成人网 | 国产91九色 | 日韩一二区 | 精品欧美黑人一区二区三区 | 日韩在线视频精品 | 亚洲一区二区三区高清 | 激情在线视频网站 | 四虎在线观看 | 日本天天操 | 久久九九99 | 国产精久久久久久久妇剪断 | 亚洲成人三区 | 在线精品一区二区 | 国产在线不卡 | 国产一区二区三区四区五区加勒比 | 成人精品国产 | 草久久 | 91精品国产色综合久久 | 成人激情免费视频 | 亚洲国产一区二区三区 | 国产精品99久久久久久动医院 | 狠狠干天天干 | 一区二区三区回区在观看免费视频 | 日本三级电影免费 | 日韩在线一区二区三区 | 久久久.com|