版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.智能家居控制系統(tǒng)C程序日期:2010-03-03 來源:本站編輯 作者:admin 字體:大 中 小 (投遞新聞) *include bit r_flag; enum eepromtype M2401,M2402,M2404,M2408,M2416,M2432,M2464,M24128,M24256; extern bit RW24*(unsigned char *DataBuff,unsigned char ByteQuantity,unsigned int Address, unsigned char ControlByte,enum eepromtype EepromType); sb
2、it key = P20; bit key_flag; sbit dog = P07; sbit LED = P00; sbit TELA = P36; sbit TEL = P37; sbit RING = P32; sbit switching =P04; unsigned char mode; bit passwordflag; unsigned char password6; unsigned char passwordtest6; void dlms(unsigned int x); void reset(void); void open(void); /* / / INT1中斷服務(wù)
3、程序 / /* / unsigned char ring_fluctuation; unsigned char ring_count; bit ring_flag; void service_int0() interrupt 0 using 1 if(ring_fluctuation5) EX0=0;/INT1_OFF; ring_dlsm+; if(ring_dlsm=20)/等待一秒 ring_dlsm=0; EX0=1;/INT1_ON; ring_fluctuation=0; ring_count+;/震鈴次數(shù) if(ring_flag)/有效振鈴 if(ring_count=6) r
4、ing_count=7; mode=1; else/無效振鈴 if(ring_count2) ring_reset_time=800; if(ring_count=2)|(ring_count=1) ring_time+; if(ring_time=200) ring_flag=1; if(ring_count0)&(ring_count0) ring_reset_time+; if(ring_reset_time=1100)/55s reset(); LED=0; dlms(100); LED=1; dlms(100); LED=0; dlms(100); LED=1; dlms(100);
5、 LED=0; dlms(100); LED=1; dlms(100); LED=0; dlms(100); LED=1; dlms(100); LED=0; dlms(100); LED=1; dlms(100); LED=0; dlms(100); LED=switching; /* / / INT1中斷服務(wù)程序 / /* / unsigned char DTMF; void service_int1() interrupt 2 using 1 EX1=0; DTMF=P1; DTMF=DTMF4; void main(void) TMOD=0x11; TH1=0x3c; TL1=0xb0
6、; TR1=1; ET1=1; IT0=1; EX0=1; IT1=0; EX1=1; reset(); EA=0; r_flag=RW24*(password,6,0x0000,0xa1,M2402);/R if(P2_0=0) dlms(20); if(P2_0=0) ring_flag=1; mode=1; passwordflag=1; ring_count=7; ring_fluctuation=6; EA=1; while(1) open(); dog=dog; switch(mode) case 0:; break; case 1: TEL=1; LED=0;/ dlms_tim
7、e=0; ring_reset_time=0; while(dlms_time40) dlms(1); TELA=TELA; ring_reset_time=0; LED=1;/ TELA=0; mode+; DTMF=255; EX1=1; LED=switching; break; case 2:/password if(DTMF!=255) passwordtest0=DTMF; if(INT1=1) dlms_time=0; while(dlms_time2); if(INT1=1) DTMF=255; mode+; dlms_time=0; while(dlms_time10) dl
8、ms(2); TELA=TELA; EX1=1; TELA=0; break; case 3:/password if(DTMF!=255) passwordtest1=DTMF; if(INT1=1) dlms_time=0; while(dlms_time2); if(INT1=1) DTMF=255; mode+; dlms_time=0; while(dlms_time10) dlms(2); TELA=TELA; EX1=1; TELA=0; break; case 4:/password if(DTMF!=255) passwordtest2=DTMF; if(INT1=1) dl
9、ms_time=0; while(dlms_time2); if(INT1=1) DTMF=255; mode+; dlms_time=0; while(dlms_time10) dlms(2); TELA=TELA; EX1=1; TELA=0; break; case 5:/password if(DTMF!=255) passwordtest3=DTMF; if(INT1=1) dlms_time=0; while(dlms_time2); if(INT1=1) DTMF=255; mode+; dlms_time=0; while(dlms_time10) dlms(2); TELA=
10、TELA; EX1=1; TELA=0; break; case 6:/password if(DTMF!=255) passwordtest4=DTMF; if(INT1=1) dlms_time=0; while(dlms_time2); if(INT1=1) DTMF=255; mode+; dlms_time=0; while(dlms_time2); if(INT1=1) DTMF=255; mode+; /EX1=1; break; case 8: if(passwordflag=0) if(passwordtest0=password0)&(passwordtest1=passw
11、ord1)&(passwordtest2=password2)&(passwordtest3=password3)&(passwordtest4=password4)&(passwordtest5=password5) mode+; dlms_time=0; else reset(); else dlms_time=0; while(dlms_time10) dlms(2); TELA=TELA; TELA=0; password0=passwordtest0; password1=passwordtest1; password2=passwordtest2; password3=passwo
12、rdtest3; password4=passwordtest4; password5=passwordtest5; EA=0; r_flag=RW24*(password,6,0x0000,0xa0,M2402);/W EA=1; reset(); break; case 9: while(dlms_time20) dlms(1); TELA=TELA; while(dlms_time25) while(dlms_time45) dlms(1); TELA=TELA; TELA=0; EX1=1; mode+; break; case 10: switch(DTMF) case 1: if(
13、ring_reset_time1050) dlms_time=0; switching=0; LED=0; while(dlms_time10) while(dlms_time20) dlms(2); TELA=TELA; while(dlms_time30) while(dlms_time40) dlms(2); TELA=TELA; TELA=0; DTMF=255; EX1=1; break; case 2: if(ring_reset_time1050) dlms_time=0; switching=1; LED=1; while(dlms_time10) while(dlms_tim
14、e20) dlms(4); TELA=TELA; while(dlms_time30) while(dlms_time40) dlms(4); TELA=TELA; TELA=0; DTMF=255; EX1=1; break; case 12: reset(); break; break; /-/ default:; /-/ void reset(void) TEL=0; TELA=0; ring_fluctuation=0; ring_count=0; ring_flag=0; ring_dlsm=0; ring_time=0; dlms_time=0; ring_reset_time=0
15、; key_flag=0; mode=0; EX1=1; DTMF=255; LED=switching; passwordflag=0; passwordtest0=255; passwordtest1=255; passwordtest2=255; passwordtest3=255; passwordtest4=255; passwordtest5=255; void open(void) if(key=0)&(key_flag=0)&(passwordflag=0) dlms_time=0; while(dlms_time10) key_flag=0; void dlms(unsign
16、ed int x) unsigned int i; while (x-0) dog=dog; for (i=0;i163;i+) ; /24c* /-START-/ /enum eepromtype M2401,M2402,M2404,M2408,M2416,M2432,M2464,M24128,M24256; /extern bit RW24*(unsigned char *DataBuff,unsigned char ByteQuantity,unsigned int Address, / unsigned char ControlByte,enum eepromtype EepromTy
17、pe); / flag=RW24*(&x,1,0x0000,0xa0,M24256);/W 24C256 / flag=RW24*(&x,1,0x0000,0xa1,M24256);/R 24C256 *include /*pragma ot(6,SIZE) *include *define ERRORCOUNT 10 sbit SDA=P27;/對(duì)應(yīng)硬件 sbit SCL=P26;/對(duì)應(yīng)硬件 enum eepromtype M2401,M2402,M2404,M2408,M2416,M2432,M2464,M24128,M24256; enum eepromtype EepromType;
18、/*/ /DataBuff為讀寫數(shù)據(jù)輸入輸出緩沖區(qū)的首址 /ByteQuantity 為要讀寫數(shù)據(jù)的字節(jié)數(shù)量 /Address 為EEPROM的片內(nèi)地址 /ControlByte 為EEPROM的控制字節(jié),具體形式為(1)(0)(1)(0)(A2)(A1)(A0)(R/W),其中R/W=1, /表示讀操作,R/W=0為寫操作,A2,A1,A0為EEPROM的頁選或片選地址; /EepromType為枚舉變量,需為M2401至M24256中的一種,分別對(duì)應(yīng)24C01至24C256; /函數(shù)返回值為一個(gè)位變量,若返回1表示此次操作失效,0表示操作成功; /ERRORCOUNT為允許最大次數(shù),若出現(xiàn)
19、ERRORCOUNT次操作失效后,則函數(shù)中止操作,并返回1 /*/ extern bit RW24*(unsigned char *DataBuff,unsigned char ByteQuantity,unsigned int Address, unsigned char ControlByte,enum eepromtype EepromType) void Delay(unsigned char DelayCount); void IICStart(void); void IICStop(void); bit IICRecAck(void); void IICNoAck(void); v
20、oid IICAck(void); unsigned char IICReceiveByte(void); void IICSendByte(unsigned char sendbyte); unsigned char data j,i=ERRORCOUNT; bit errorflag=1; while(i-) IICStart(); IICSendByte(ControlByte&0xfe); if(IICRecAck() continue; if(EepromTypeM2416) IICSendByte(unsigned char)(Address8); if(IICRecAck() c
21、ontinue; IICSendByte(unsigned char)Address); if(IICRecAck() continue; if(!(ControlByte&0x01) j=ByteQuantity; errorflag=0; /*clr errorflag while(j-) IICSendByte(*DataBuff+); if(!IICRecAck() continue; errorflag=1; break; if(errorflag=1) continue; break; else IICStart(); IICSendByte(ControlByte); if(IICRecAck() continue; while(-ByteQuantity) *DataBuff+=IICReceiveByte(); IICAck(); *DataBuff=IICReceiveByte(); /read last byte data IICNoAck(); errorflag=0;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)員工培訓(xùn)與職業(yè)發(fā)展路徑制度
- 2026河北邯鄲市曲周縣醫(yī)院招聘人事代理人員26人備考題庫附答案
- 交通宣傳教育材料制作與發(fā)放制度
- 2026湖北省定向天津大學(xué)選調(diào)生招錄考試備考題庫附答案
- 2026甘肅銀行股份有限公司招聘校園考試備考題庫附答案
- 2026福建福州市馬尾海關(guān)單證資料管理崗位輔助人員招聘1人參考題庫附答案
- 2026西藏日喀則市亞東縣糧食公司人員招聘1人參考題庫附答案
- 公共交通服務(wù)質(zhì)量投訴處理制度
- 2026重慶大學(xué)附屬涪陵醫(yī)院年衛(wèi)生專業(yè)技術(shù)人員招聘22人參考題庫附答案
- 2026年及未來5年市場(chǎng)數(shù)據(jù)中國(guó)方塊地毯行業(yè)發(fā)展前景預(yù)測(cè)及投資方向研究報(bào)告
- 人教版七年級(jí)地理上冊(cè)教案(全冊(cè))
- 2025年-江西建筑安全員《A證》考試題庫及答案
- 財(cái)務(wù)制度管理制度清單
- 陜西省榆林市2025屆高三下學(xué)期第二次模擬檢測(cè)化學(xué)試卷(原卷版+解析版)
- 雙梁橋式起重機(jī)安裝施工方案
- 水泵電機(jī)年度維修項(xiàng)目方案投標(biāo)文件(技術(shù)方案)
- 2024-2025學(xué)年江西省南昌市高二上學(xué)期期末聯(lián)考數(shù)學(xué)試卷(含答案)
- 肝門部膽管癌診斷和治療指南(2025版)解讀課件
- GB/T 6075.6-2024機(jī)械振動(dòng)在非旋轉(zhuǎn)部件上測(cè)量評(píng)價(jià)機(jī)器的振動(dòng)第6部分:功率大于100 kW的往復(fù)式機(jī)器
- 加油站市場(chǎng)營(yíng)銷戰(zhàn)略
- 口腔醫(yī)保知識(shí)培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論