freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

紅外遙控密碼鎖的設計與實現(xiàn)-資料下載頁

2025-06-02 00:34本頁面
  

【正文】 //等待按鍵松開 while(key_1==0)。 }//學習失敗 light=1。//指示燈滅 code_right=0。 } void key_control(unsigned char number)//判斷按鍵 { TR1=0。 TL1=0。 TH1=0。//清零定時器 1 TR1=1。 time_1=0。 delay(800)。//延時約 8 毫秒防抖動 switch(number) { case 0: if(key_0==0) { while(key_0==0 amp。amp。 time_1_time_delay)。 if (key_0==0 amp。amp。 time_1=_time_delay)//按鍵控制 { while(key_0==0)。//wait 大學本科生畢業(yè)設計(論文) 36 code_learn(number)。//學習 } else { if(key_0==1 amp。amp。 time_1_time_delay/2) { out_0=~out_0。//輸出取反 } } } break。 case 1: if(key_1==0) { while(key_1==0 amp。amp。 time_1_time_delay)。 if (key_1==0 amp。amp。 time_1=_time_delay)//按鍵控制 { while(key_1==0)。//wait code_learn(number)。//學習 } else { if(key_1==1 amp。amp。 time_1_time_delay/2) { out_1=~out_1。//輸出取反 } } } break。 } 大學本科生畢業(yè)設計(論文) 37 code_right=0。//清零紅外代碼 } //***********************************AT24C02****************************** void AT24C_start(void) { SDA=1。 delay(1)。 SCL=1。 delay(1)。 SDA=0。 delay(1)。 SCL=0。 } void AT24C_stop(void) //停止 { SDA=0。 delay(1)。 SCL=1。 delay(1)。 SDA=1。 delay(1)。 } void AT24C_ack(void) //應答 { SCL=0。 delay(1)。 SDA=0。 delay(1)。 SCL=1。 delay(1)。 大學本科生畢業(yè)設計(論文) 38 SCL=0。 delay(1)。 SDA=1。 } void AT24C_unack(void) //不應答 { SDA=1。 delay(1)。 SCL=1。 delay(1)。 SCL=0。 delay(1)。 } unsigned char AT24C_cack(void) //檢查應答 { delay(1)。 SCL=0。 delay(1)。 SDA=1。 delay(1)。 SCL=1。 delay(1)。 if(SDA==0) { SCL=0。 return(1)。 } else { 大學本科生畢業(yè)設計(論文) 39 SCL=0。 return(0)。 } } void AT24C_write(unsigned char temp) //寫一個字節(jié) { unsigned char i。 SCL=0。 for (i=0。i8。i++) { temp=temp1。 SDA=CY。 delay(1)。 SCL=1。 delay(1)。 SCL=0。 } } unsigned char AT24C_read(void) //讀一個字節(jié) ,返回數(shù)據(jù) { unsigned char i,j,temp=0。 for (i=0。i8。i++) { SDA=1。 delay(1)。 SCL=1。 delay(1)。 if(SDA==1) j=1。 else 大學本科生畢業(yè)設計(論文) 40 j=0。 temp=(temp1)|j。 SCL=0。 } return(temp)。 } unsigned char AT24C_write_addr(unsigned char addr,unsigned long dd) //寫入指定地址的 4個字節(jié) { unsigned char i,a[4]。 for(i=4。i0。i) { a[i1]=dd。 dd=dd8。 } AT24C_start()。 AT24C_write(0xa0)。//寫地址 +寫 if(AT24C_cack()==0) { AT24C_stop()。//應答不對停止 return(0)。 } AT24C_write(addr)。 if(AT24C_cack()==0) { AT24C_stop()。//應答不對停止 return(0)。 } for(i=0。i4。i++) { 大學本科生畢業(yè)設計(論文) 41 AT24C_write(a[i])。 if(AT24C_cack()==0) { AT24C_stop()。 return(0)。 } } AT24C_stop()。 return(1)。 } unsigned long AT24C_read_addr(unsigned char addr) //讀出指定地址的 4 個字節(jié) { unsigned char i。 unsigned long temp=0。 AT24C_start()。 AT24C_write(0xa0)。 if(AT24C_cack()==0) { AT24C_stop()。 return(0)。 } AT24C_write(addr)。 if(AT24C_cack()==0) { AT24C_stop()。 return(0)。 } AT24C_start()。 AT24C_write(0xa1)。 大學本科生畢業(yè)設計(論文) 42 if(AT24C_cack()==0) { AT24C_stop()。 return(0)。 } for(i=0。i4。i++) { temp=(temp8)。 temp=temp+AT24C_read()。 if(i=3) { AT24C_unack()。 } else { AT24C_ack()。 } } AT24C_stop()。 return(temp)。 } //**********判斷代碼子程序 ************ unsigned char d_code_x(unsigned int t)//判斷紅外位是 0或 1 { if(t=0x480 amp。amp。 t=0x300) return 0。 else { if(t=0x8ee amp。amp。 t=0x700) return 1。 大學本科生畢業(yè)設計(論文) 43 else return 0xff。//錯誤 } } //*********** 接收代碼中斷 ************ void receive_code() interrupt 0 using 1 { unsigned int temp。 unsigned char dd_code。 if(TR0==0) { TH0=TL0=0。 TR0=1。 } else { TR0=0。 temp=TH0*256+TL0。 TH0=TL0=0。 TR0=1。 dd_code=d_code_x(temp)。 if(dd_code==0||dd_code==1) { code_t=(code_t1)+dd_code。 code_length++。 } else { if(code_length=_code_length amp。amp。 code_right==0) { 大學本科生畢業(yè)設計(論文) 44 code_tt=code_t。//紅外代碼正確 code_right=1。 } code_length=0。 code_t=0。 } } } //定時器 1,中斷 ,定時約 void time1() interrupt 3 using 2 { time_1++。 if(time_1=7 amp。amp。 light_flash==1) { time_1=0。 light=~light。 time_flash++。 } } void code_control(void)//紅外遙控 { unsigned char i。 code_right=0。 for(i=0。i_control_number。i++)//讀 EEPROM 比較紅外遙控代碼 { d_addr=i*4。 EA=0。//關中斷 d_code=AT24C_read_addr(d_addr)。 大學本科生畢業(yè)設計(論文) 45 EA=1。//開中斷 if(code_tt==d_code) { switch(i) { case 0: out_0=~out_0。break。 case 1: out_1=~out_1。break。 } } } } //*********main*********** void main(void) { TMOD=0x11。 //T0 定時方式 1,T1 定時方式 1 IT0=1。 //INT0 邊沿觸發(fā) EX0=1。 //外部中斷 0允許 TR0=0。 //定時器 0計數(shù)開關 TR1=1。 //定時器 1開 ET1=1。 //定時器 1中斷開 EA=1。 //打開 CPU 總中斷請求 while(1) { if(key_0==0)//判斷按鍵是否按下 { key_control(0)。 } if(key_1==0) { 大學本科生畢業(yè)設計(論文) 46 key_control(1)。 } if(code_right==1) { EX0=0。 code_control()。 delay(100)。 EX0=1。 } } }
點擊復制文檔內(nèi)容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1