亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.c

?? AVR試驗板程序,有LED,鍵盤和串口的程序
?? C
字號:
//ICC-AVR application builder : 2007-2-22 12:20:11
// Target : M16
// Crystal: 10.000Mhz

#include <iom16v.h>
#include <macros.h>

unsigned char tmp_cn_0;                     //臨時計數器——0
unsigned char tmp_cn_1;                     //臨時計數器——1
unsigned char led_ch=0x80;                  //閃爍的花樣
unsigned char key_code;                     //鍵盤按下的鍵盤代碼
unsigned char tmp_led_index=0x00;
unsigned char const LED_INDEX[]={0X3F,0X06,0X5B,0X4F,
                                 0X66,0X6D,0X7D,0X07,
                                 0X7F,0X6F};//共陰管的數字0-9的代碼
void port_init(void)
{
 PORTA = 0xC0; 
 DDRA  = 0xC0; //高2位作為10位ADC的MSB,低2位用外部ADC輸入,其余用于鍵盤的輸入
 PORTB = 0xFF;
 DDRB  = 0xFF; //驅動靜態595顯示,只用到高4位,低四位保留
 PORTC = 0xFF; //m103 output only
 DDRC  = 0xFF; //ADC的低8位輸出
 PORTD = 0xFF;
 DDRD  = 0xFF; //高6位用于顯示LED,低2位用于串口的輸出。
}


//TIMER0 initialize - prescale:256      
// WGM: Normal
// desired value: 2mSec
// actual value:  1.997mSec (0.2%)
void timer0_init(void)                       //硬件計數器0的初始化程序
{
 TCCR0 = 0x00; //stop
 TCNT0 = 0xB2; //set count
 OCR0  = 0x4E;  //set compare
 TCCR0 = 0x04; //start timer
}

/*-----------------------ADC轉換初始化----------------------------------------*/
//ADC initialize
// Conversion time: 26uS
void adc_init(void)
{
 ADCSR = 0x00;                               //disable adc
 ADMUX = 0x00;                               //選擇外部基準電壓 通道 0 輸入
 ACSR  = 0xC0;                               //模擬比較器控制和狀態寄存器 ACSR
                                             //ACD置1,使模擬比較器禁用
 /*--ACD--ACBG--ACO--ACI---ACIE---ACIC---ACIS1---ACIS0------------------------*/
 /*-模擬比較起禁用--模擬比較器的能隙基準源--模擬比較起輸出--模擬比較器中斷標志*/
 /*-模擬比較器中斷使能--模擬比較器輸入捕捉使能--模擬比較器中斷模式選擇--------*/
 ADCSR = 0x8B;//模擬比較起控制和狀態寄存器
 /*-----------ADEN---ADSC---ADFR---ADIF---ADIE---ADPS2---ADPS1---ADPS0--------*/
 //使能模數轉換 ADC開始轉換 ADC連續轉換  ADC中斷使能  128分頻
}
/*-----------------------ADC轉換中斷程序--------------------------------------*/
#pragma interrupt_handler adc_isr:15
void adc_isr(void)                           //組合輸出ADC DATA
{
 unsigned char rr=0;
 //conversion complete, read value (int) using...
 PORTC=~(ADCL);                              //c口顯示低8位的信息 (反相)
 rr =ADCH<<6;                                //高8位的信息
 rr ^=(0x03<<6);                             //反相
 PORTA=rr;                                   //在A口高2位顯示
}

void start_adc_0(void)                       //啟動ADC轉換的程序
{
 ADMUX  = 0x00;                              //選擇通道0
 ADCSR |= 0x40;                              //開始ADC轉換
}

//SPI initialize                             //初始化硬件SPIS口的程序
// clock rate: 2500000hz
void spi_init(void)
{
 SPCR = 0x50; //setup SPI
 SPSR = 0x00; //setup SPI
}

void SPI_595_Out(unsigned char i)            //HC595數據的輸出 
{ 
SPDR = i;       /* 啟動數據傳輸 */ 
while (!(SPSR & (1<<SPIF)));                 //等待傳輸結束
}

void disp_led(unsigned char i)
{
PORTB &= ~(1 << PB4);              //準備鎖存,在全部的四個LED數據送完后再鎖存 
SPI_595_Out(i);                    
PORTB |=  (1 << PB4);              //在這個時候鎖存數據  顯示
}

//UART0 initialize                           //初始化串口0的程序
// desired baud rate: 9600
// actual: baud rate:9615 (0.2%)
// char size: 8 bit   沒有校驗位
// parity: Disabled
void uart0_init(void)
{
 UCSRB = 0x00;                               //disable while setting baud rate
 UCSRA = 0x00;
 UCSRC = BIT(URSEL) | 0x06;
 UBRRL = 0x40;                               //set baud rate lo
 UBRRH = 0x00;                               //set baud rate hi
 UCSRB = 0x98;
}

void USART_Transmit( unsigned char data )
{

while ( !( UCSRA & (1<<UDRE)) )              // 等待發送緩沖器為空
; 
UDR = data;                                  //將數據放入緩沖器,發送數據
}

unsigned char USART_Receive(void)            //使用中斷接受時不用此函數
{
while ( !(UCSRA & (1<<RXC)) )                // 等待接收數據
;
return UDR;                                  // 從緩沖器中獲取并返回數據
}

#pragma interrupt_handler uart0_rx_isr:12    
void uart0_rx_isr(void)                      //串口0的中斷服務程序
{
 USART_Transmit(UDR);                        //把接收到的數據重新發回給PC機 
}


//call this routine to initialize all peripherals
void init_devices(void)
{
 //stop errant interrupts until set up
 CLI(); //disable all interrupts
 port_init();
 timer0_init();
 uart0_init();
 spi_init();
 adc_init();
 MCUCR = 0x00;
 GICR  = 0x00;
 ASSR &= ~(0X08);
 TIMSK = 0x01; //timer interrupt sources
 SEI(); //re-enable interrupts
 //all peripherals are now initialized
}


void flash_led_type1(void)                    //PD口的跑馬燈顯示  從右到左
{
if (led_ch==0x02) led_ch=0x80;
PORTD=~(led_ch);      
led_ch=led_ch>>1;
}

void flash_led_type2(void)                    //PD口的跑馬燈顯示  從左到右
{
if (led_ch==0x00) led_ch=0x02;
PORTD=~(led_ch);      
led_ch=led_ch<<1;
}

void flash_led_type3(void)                    //PD口的跑馬燈顯示  反相
{
PORTD^=0XFC;                    
}

void flash_led_type4(void)                    //PD口的跑馬燈顯示  流水
{
unsigned char tmp_PD;
tmp_PD=PIND;
tmp_PD|=0XFC;
led_ch++;
if (led_ch==0X87) led_ch=0X80;
switch (led_ch)
{

case 0X81: PORTD=~(0X78); break;     //0111 10  00 代碼
case 0X82: PORTD=~(0XD4); break;     //1011 01  00 代碼
case 0X83: PORTD=~(0XCC); break;     //1100 11  00 代碼
case 0X84: PORTD=~(0XCC); break;     //1100 11  00 代碼
case 0X85: PORTD=~(0XD4); break;     //1011 01  00 代碼
case 0X86: PORTD=~(0X78); break;     //0111 10  00 代碼
}                 
}


void delay30ms(void)                          //延時30毫秒的子程序
{
unsigned int tmp_delay_cn;
for (tmp_delay_cn=0;tmp_delay_cn<300;tmp_delay_cn++)
;
}


unsigned char check_key_pressed(void)         //檢查是否有鍵盤按下
{
unsigned char key_tem;
key_tem=PINA &= ~(0XC3);
if(key_tem!=0X3C)
return 1;
else
return 0;
}


unsigned char find_key_code(void)
{
unsigned char uuu;
if(check_key_pressed()==1)
{
 delay30ms();                                //延時去抖動
 if(check_key_pressed()==1)
  {
  uuu=(PINA & 0X3C);
  return uuu;                   //屏蔽最高和最低兩位
  }
}
return 0XC3;
}

#pragma interrupt_handler timer0_ovf_isr:10  //
void timer0_ovf_isr(void)
{
 TCNT0 = 0xB2;                               //計數器初始值重載
 if (tmp_cn_0==100)                           //固定時間產生變化
 {
   switch (key_code)                         //根據按下的鍵盤產生一定的閃燈花樣
   {
   case 0X1C: flash_led_type4(); break;      
   case 0X2c: flash_led_type3(); break;      
   case 0X34: flash_led_type2(); break;      
   case 0X38: flash_led_type1(); break;     
   default:   flash_led_type4(); break;
   }                 
 
 disp_led(LED_INDEX[tmp_led_index]);        //循環顯示8段數字LED
 tmp_led_index++;
 if (tmp_led_index==10) tmp_led_index=0;    //LED計數器歸零
 
 tmp_cn_0=0;                                //臨時計數器0歸零
 }
 else
 {
 tmp_cn_0=tmp_cn_0+1;                       //臨時計數器遞增
 }
}


//****************** MAIN 程序的入口*************************//

void main()
{
unsigned char tmp_key_code;
init_devices();
while(1)
{
  start_adc_0();                             //循環進行ADC轉換
  
  tmp_key_code=find_key_code() & 0X3C;              //判斷是否按下鍵盤
  
  if (tmp_key_code!=0x3c) key_code=tmp_key_code;    

  
}
}
//****************** MAIN 程序結束 *************************//



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色8久久精品久久久久久蜜| 中文字幕欧美一区| 中文字幕一区免费在线观看| 天堂久久一区二区三区| 成人h版在线观看| 欧美一级理论片| 亚洲精品国产精华液| 国产一区二区精品久久| 欧美伦理电影网| 亚洲三级在线看| 国产91丝袜在线播放0| 日韩欧美不卡一区| 亚洲www啪成人一区二区麻豆| 成人国产免费视频| 国产三级精品三级| 久久99久久99| 日韩欧美一级精品久久| 亚欧色一区w666天堂| 91福利在线免费观看| 欧美国产一区视频在线观看| 精品一区二区三区在线观看| 欧美日韩国产一级| 午夜伊人狠狠久久| 在线观看欧美黄色| 夜夜亚洲天天久久| 欧美亚洲综合色| 亚洲综合一区二区| 欧美亚洲综合另类| 亚洲va天堂va国产va久| 91福利在线播放| 亚洲福利电影网| 欧美色精品在线视频| 亚洲成人av中文| 欧美日韩高清一区二区| 日韩在线一区二区| 欧美电影一区二区| 久久精品国产网站| 久久久精品综合| 国产成人小视频| 国产精品三级电影| 91免费版在线| 美女诱惑一区二区| 久久久久久久久久久久电影| 国产精品一品二品| 国产精品美女久久福利网站 | 久久人人97超碰com| 国产乱码精品一区二区三区av| 欧美精品一区视频| 波多野结衣视频一区| 一区二区在线观看免费视频播放| 色综合久久久久久久久久久| 亚洲国产精品一区二区www| 3d成人h动漫网站入口| 麻豆精品一二三| 国产精品色眯眯| 色88888久久久久久影院按摩| 五月综合激情日本mⅴ| 精品区一区二区| 风间由美性色一区二区三区| 亚洲精品乱码久久久久久| 欧美二区三区的天堂| 国产美女在线精品| 一区二区三区四区不卡在线| 日韩视频免费观看高清完整版在线观看 | 日韩欧美卡一卡二| 国产福利一区二区三区视频在线 | 成人黄色av电影| 亚洲网友自拍偷拍| 久久人人97超碰com| 色八戒一区二区三区| 久久精品99国产精品日本| 亚洲视频狠狠干| 精品欧美乱码久久久久久| 色综合天天视频在线观看| 捆绑紧缚一区二区三区视频 | 精品国产露脸精彩对白| 色国产综合视频| 国产一区二区三区在线观看免费| 亚洲同性gay激情无套| 精品日韩成人av| 欧美日韩视频在线观看一区二区三区| 经典三级一区二区| 亚洲午夜久久久久久久久久久| 久久久久国产精品麻豆| 欧美日韩免费一区二区三区| 粉嫩高潮美女一区二区三区| 五月激情综合网| 亚洲免费大片在线观看| 久久久一区二区三区| 欧美一区二区三区色| 91黄色小视频| 成人黄色免费短视频| 精品一区二区在线播放| 天天色 色综合| 一区二区三区在线播放| 中文字幕+乱码+中文字幕一区| 91精品婷婷国产综合久久性色 | 91精品欧美一区二区三区综合在| 99re热视频这里只精品| 国产99精品在线观看| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲va在线va天堂| 一区二区三区波多野结衣在线观看| 久久久久久久网| 2022国产精品视频| 精品国精品自拍自在线| 日韩午夜在线播放| 91麻豆精品国产91久久久更新时间 | 亚洲美女偷拍久久| 日韩一区有码在线| 国产精品久久久久久久久免费相片| 久久久精品国产99久久精品芒果| 日韩视频一区二区三区在线播放 | 在线观看一区二区视频| 91丨九色丨国产丨porny| 成人app网站| 99精品一区二区| 波多野结衣在线一区| 成人听书哪个软件好| 丰满少妇久久久久久久| eeuss鲁片一区二区三区| 99久久99久久综合| 在线精品观看国产| 欧美福利电影网| 日韩精品一区二区三区视频播放| 日韩欧美一二三四区| 精品国一区二区三区| 国产无人区一区二区三区| 国产精品卡一卡二| 亚洲色图.com| 亚洲va天堂va国产va久| 日韩电影免费在线看| 开心九九激情九九欧美日韩精美视频电影 | 国产久卡久卡久卡久卡视频精品| 成人一级片在线观看| 色综合天天综合在线视频| 欧美日韩中文字幕一区| 欧美大尺度电影在线| 国产精品色噜噜| 亚洲a一区二区| 美国三级日本三级久久99| 国产精品正在播放| 99在线精品一区二区三区| 欧美日韩亚洲综合| 久久综合成人精品亚洲另类欧美 | 日本伦理一区二区| 91精品国产aⅴ一区二区| 久久精品日产第一区二区三区高清版 | 91麻豆自制传媒国产之光| 91精品在线麻豆| 国产精品精品国产色婷婷| 亚洲高清久久久| 国产suv精品一区二区6| 欧美日韩欧美一区二区| 久久精品人人做人人爽人人 | 自拍偷在线精品自拍偷无码专区| 亚洲国产成人高清精品| 国产二区国产一区在线观看| 欧美视频在线观看一区| 国产日韩精品一区二区浪潮av| 亚洲国产日产av| 成人毛片在线观看| 日韩女优制服丝袜电影| 一区二区三区成人在线视频| 久久www免费人成看片高清| 色悠久久久久综合欧美99| 日韩女同互慰一区二区| 亚洲国产精品久久人人爱| 国产+成+人+亚洲欧洲自线| 91精品视频网| 亚洲一级二级在线| 懂色av一区二区在线播放| 91麻豆精品国产91久久久久 | 亚洲欧洲成人精品av97| 老色鬼精品视频在线观看播放| 色国产精品一区在线观看| 久久久久久电影| 美女视频网站久久| 欧美视频自拍偷拍| 一区二区三区中文免费| 成人av资源网站| 精品国产乱码久久久久久图片| 日韩精品一二区| 欧美日韩免费一区二区三区视频| 国产精品美日韩| 国产精品一二三区| 欧美成人猛片aaaaaaa| 五月天久久比比资源色| 色婷婷国产精品久久包臀| 国产精品全国免费观看高清 | 亚洲欧洲日本在线| 成人免费视频app| 久久久久国产免费免费| 国产综合久久久久久久久久久久| 欧美一区二区三区四区五区 | 91精品国产高清一区二区三区蜜臀| 亚洲精品高清在线| 色一区在线观看| 亚洲精品伦理在线| 色综合色综合色综合|