Nguyên văn bởi sang_dientu
Xem bài viết
c
/************************************************************************************************/ // TEN CONG TRINH: HEN GIO BAT TAT THIET BI DA NANG // NGUOI THUC HIEN: DINH THANH SANG // DIA CHI : AN MY - CAM CHAU - HOI AN - QUANG NAM - VIET NAM // THOI GIAN: 15 THANG 7 NAM 2011 DEN 9 THANG 3 NAM 2012 // UNG DUNG CUA THIET BI: DIET KHIEN BAT TAT THIET BI CHIEU SANG VA CAC THIET BI KHAC // THONG SO: DIEN AP SU DUNG 220VAC DONG MOI TAI 15A CONG SUAT TIEU THU CUA THIET BI 0.5W // HIEN THI 4 LED 7 DOAN // DIEU CHINH BANG NUT AN CO // THIET BI DA DANG KY QUYEN SO HUU TAC GIA. /************************************************************************************************/ //////////////////////////////bat dau chuong trinh//////////////////////////////////// #include<htc.h> __CONFIG( XT & WDTDIS & BORDIS & IESODIS & FCMDIS & LVPDIS & PWRTEN & MCLREN & UNPROTECT & DUNPROTECT ); #ifndef _XTAL_FREQ #define _XTAL_FREQ 4000000 #endif //////////////////////////////////////////khai bao bien//////////////////////////////////////// int l1,l2,l3, i=0,onset=0, h1=0,h2=0,m1=0,m2=0,s=0, mode=0,save=0,auoff=100, menu=80, ms1=0,ms2=0,hs1=0,hs2=0, timeon=0,timeoff=0, h1p=0,h2p=0,m1p=0,m2p=0; ///////////////////////////////////////////bang ma led/////////////////////////////////////////// char ledht[]={cac b?n nhap vao ma Hex de hien thi}; ////////////////////////////////////////////chuong trinh con hien thi led//////////////////////////////////// void led(int hl1,int hl2,int ml1,int ml2) { cac ban doc ro rang phan cung va xuat du lieu ra post } ///////////////////////////////////////////////////chuong trinh con cai dat time thuc///////////////////////////////////////// void settimeled() { if(RB2!=1) { dung thuat toan de tang gia tri phut tu 0-->60 } if(RB1!=1) { tuong tu phut } } ///////////////////////////////////////////////chuong trinh khai bao eeprom///////////////////////////////////// void khaibaoeeprom() { EEDAT=1; EEADR=1; EEPGD=0; WRERR=1; WREN=1; WR=1; RD=0; } ///////////////////////////////////////////////chuong trinh ghi va doc eeprom////////////////////////////////////////// //Read from EEPROM unsigned char readEEPROM(unsigned char dataR_ADR) { EEADR = dataR_ADR; //data Read AdDRess EEPGD = 0; RD = 1; return(EEDAT); } //Write to EEPROM void writeEEPROM(unsigned char dataW_ADR, unsigned char dataW_DAT) { EEADR = dataW_ADR; //data Write AdDRess EEDAT = dataW_DAT; //data Write DATa EEPGD = 0; WREN = 1; GIE = 0; while(GIE==1){ GIE = 0; } EECON2 = 85; EECON2 = 170; WR = 1; GIE = 1; while(WR==1){ } WREN = 0; __delay_ms(5); } //////////////////////////////////////////////////////////////////////chuong trinh con bat tat tai bang tay//////////////////////////////////// void load1() { if (RB5!=1) { dung thuat toan de bien doi pin o tranh thai nay sang tranh thau khac va save } } void load2() { if (RB6!=1) { tuong tu load1 } } void load3() { if (RB7!=1) { tuong tu load1 } } ////////////////////////////////////////////////chuong trinh ngat////////////////////////////////////////// void interrupt isr() { if((TMR1IF)&&(TMR1IE)) { s++; TMR1H=0x80; TMR1L=0x00; if(s>59) { m2=m2++; s=0; save=0; if (m2>9) { dung thuat toan tuong tu cai dat phut } if(RC7!=0) { dung thuat toan tuong tu cai dat phut } } TMR1IF = 0; } if(INTF&&INTE) { nhan ngat ngoai thay doi che do_ } } /////////////////////////////////////////////////////////khai bao chuc nang ngat///////////////////////////////////////////////// void khaibaongat() { TMR1CS=1; // 0= INTERNAL CLOCK ,1= EXTERNAL CLOCK T1OSCEN=1; TMR1IF=0; TMR1IE = 1; // TIMER1 Interrupt Enable bit ; GIE = 1; // Global Interrupt Enable bit PEIE=1; TMR1ON=1; // ENABLE TIMER 1 // T1CKPS0=0; // T1CKPS1=0; // TMR1GE=0; // T1SYNC=1; TMR1H=0x80; TMR1L=0x00; RBIE=1; INTE=1; INTF=1; T0IF=1; } ////////////////////////////////////////////////////////////////chuong trinh con bat tat che do ////////////////////////////////////////// void time_on() { if(RB3!=1) { tuong tu load1 } } void time_off() { if(RB4!=1) { tuong tu load1 } } /////////////////////////////////////////////////chuong trinh cai dat time cho hen gio///////////////////////////////////////// void settime() { if(RB2!=1) //set min { dung thuat toan tuong tu cai dat phut } if(RB1!=1) //set hour { dung thuat toan tuong tu cai dat phut } } ////////////////////////////////////////////////////////////////////cai dat gia tri va cong viec///////////////////////////////////////////////////////////////////////////////////////// void settimeload(void) { onset=0 ; while((menu==10)||(menu==20)||(menu==30)||(menu==40)||(menu==50)||(menu==60)||(menu==70)) { mode=menu; onset++; timeon=readEEPROM(0x01+mode); timeoff=readEEPROM(0x02+mode); while(timeon==2) { vao che do_ cai dat thoi gian hen gio } while(timeoff==2) { vao che do_ cai dat thoi gian hen gio } hs1=hs2=ms1=ms2=0; for(i=0;i<700;i++) { hien thi cac cong viec che do_ bat hay tat } for(i=0;i<700;i++) { hien thi thoi gian bat } for(i=0;i<700;i++) { hien thi thoi gian tat } if(onset>8) { menu=0; } } } ///////////////////////////////////////////////////////////////////doc gia tri cai dat va xu ly cong viec////////////////////////////////////////////////////////////////////////////////////////// void readload() { for(int j=10;j<90;j=j+10) { int addon=0; int addoff=0; led(h1,h2,m1,m2); if(readEEPROM(0x01+j)==1) addon=j; if(readEEPROM(0x02+j)==1) addoff=j; if(s<3) { if((addon>0)&&(addon<50)&&(readEEPROM(0x03+addon)==h1)&&(readEEPROM(0x04+addon)==h2)&&(readEEPROM(0x05+addon)==m1)&&(readEEPROM(0x06+addon)==m2)) { doc va so sanh cac gia tri da luu voi thoi gian thuc } if((addoff>0)&&(addoff<50)&&(readEEPROM(0x07+addoff)==h1)&&(readEEPROM(0x08+addoff)==h2)&&(readEEPROM(0x09+addoff)==m1)&&(readEEPROM(0x10+addoff)==m2)) //neu setload timeoff=1; { doc va so sanh cac gia tri da luu voi thoi gian thuc } } if(RC7==0) //ban ngay { doc va so sanh cac gia tri da luu voi thoi gian thuc khi ban ngay } else //ban dem { auoff=0; doc va so sanh cac gia tri da luu voi thoi gian thuc khi ban dem } } RC6=l1=readEEPROM(0x01); RC5=l2=readEEPROM(0x02); RC4=l3=readEEPROM(0x03); } ////////////////////////////////////////////////////////////////////////chuong trinh chinh///////////////////////////////////////////////////////////////////////////////////// void main() { TRISA0=TRISA1=TRISA2=TRISA3=TRISA4=TRISA5=0; TRISC2=TRISC3=TRISC4=TRISC5=TRISC6=0; WPUB0=WPUB1=WPUB2=WPUB3=WPUB4=WPUB5=WPUB6=WPUB7=1; ANS0=ANS1=ANS2=ANS3=ANS4=ANS8=ANS9=ANS10=ANS11=ANS12=ANS13=0; TRISB0=TRISB1=TRISB2=TRISB3=TRISB4=TRISB5=TRISB6=TRISB7=1; khaibaongat(); khaibaoeeprom(); l1=RC6= /// doc cac gia tri da luu//////////// l2=RC5= /// doc cac gia tri da luu//////////// l3=RC4= /// doc cac gia tri da luu//////////// h1= /// doc cac gia tri da luu//////////// h2= /// doc cac gia tri da luu//////////// m1= /// doc cac gia tri da luu//////////// m2= /// doc cac gia tri da luu//////////// while(1) { load1(); load2(); load3(); settimeled(); led(h1,h2,m1,m2); readload(); settimeload(); if(RC7==0) { h1p=h2p=m1p=m2p=0; } save++; if(save>10) save=5; if(save==3) { } } ////////////////////////////////////////////////ket thuc chuong trinh code bo mat na hen gio dungf PIC 16f886///////////////////////////////////
/************************************************************************************************/ // TEN CONG TRINH: HEN GIO BAT TAT THIET BI DA NANG // NGUOI THUC HIEN: DINH THANH SANG // DIA CHI : AN MY - CAM CHAU - HOI AN - QUANG NAM - VIET NAM // THOI GIAN: 15 THANG 7 NAM 2011 DEN 9 THANG 3 NAM 2012 // UNG DUNG CUA THIET BI: DIET KHIEN BAT TAT THIET BI CHIEU SANG VA CAC THIET BI KHAC // THONG SO: DIEN AP SU DUNG 220VAC DONG MOI TAI 15A CONG SUAT TIEU THU CUA THIET BI 0.5W // HIEN THI 4 LED 7 DOAN // DIEU CHINH BANG NUT AN CO // THIET BI DA DANG KY QUYEN SO HUU TAC GIA. /************************************************************************************************/ //////////////////////////////bat dau chuong trinh//////////////////////////////////// #include<htc.h> __CONFIG( XT & WDTDIS & BORDIS & IESODIS & FCMDIS & LVPDIS & PWRTEN & MCLREN & UNPROTECT & DUNPROTECT ); #ifndef _XTAL_FREQ #define _XTAL_FREQ 4000000 #endif //////////////////////////////////////////khai bao bien//////////////////////////////////////// int l1,l2,l3, i=0,onset=0, h1=0,h2=0,m1=0,m2=0,s=0, mode=0,save=0,auoff=100, menu=80, ms1=0,ms2=0,hs1=0,hs2=0, timeon=0,timeoff=0, h1p=0,h2p=0,m1p=0,m2p=0; ///////////////////////////////////////////bang ma led/////////////////////////////////////////// char ledht[]={cac b?n nhap vao ma Hex de hien thi}; ////////////////////////////////////////////chuong trinh con hien thi led//////////////////////////////////// void led(int hl1,int hl2,int ml1,int ml2) { cac ban doc ro rang phan cung va xuat du lieu ra post } ///////////////////////////////////////////////////chuong trinh con cai dat time thuc///////////////////////////////////////// void settimeled() { if(RB2!=1) { dung thuat toan de tang gia tri phut tu 0-->60 } if(RB1!=1) { tuong tu phut } } ///////////////////////////////////////////////chuong trinh khai bao eeprom///////////////////////////////////// void khaibaoeeprom() { EEDAT=1; EEADR=1; EEPGD=0; WRERR=1; WREN=1; WR=1; RD=0; } ///////////////////////////////////////////////chuong trinh ghi va doc eeprom////////////////////////////////////////// //Read from EEPROM unsigned char readEEPROM(unsigned char dataR_ADR) { EEADR = dataR_ADR; //data Read AdDRess EEPGD = 0; RD = 1; return(EEDAT); } //Write to EEPROM void writeEEPROM(unsigned char dataW_ADR, unsigned char dataW_DAT) { EEADR = dataW_ADR; //data Write AdDRess EEDAT = dataW_DAT; //data Write DATa EEPGD = 0; WREN = 1; GIE = 0; while(GIE==1){ GIE = 0; } EECON2 = 85; EECON2 = 170; WR = 1; GIE = 1; while(WR==1){ } WREN = 0; __delay_ms(5); } //////////////////////////////////////////////////////////////////////chuong trinh con bat tat tai bang tay//////////////////////////////////// void load1() { if (RB5!=1) { dung thuat toan de bien doi pin o tranh thai nay sang tranh thau khac va save } } void load2() { if (RB6!=1) { tuong tu load1 } } void load3() { if (RB7!=1) { tuong tu load1 } } ////////////////////////////////////////////////chuong trinh ngat////////////////////////////////////////// void interrupt isr() { if((TMR1IF)&&(TMR1IE)) { s++; TMR1H=0x80; TMR1L=0x00; if(s>59) { m2=m2++; s=0; save=0; if (m2>9) { dung thuat toan tuong tu cai dat phut } if(RC7!=0) { dung thuat toan tuong tu cai dat phut } } TMR1IF = 0; } if(INTF&&INTE) { nhan ngat ngoai thay doi che do_ } } /////////////////////////////////////////////////////////khai bao chuc nang ngat///////////////////////////////////////////////// void khaibaongat() { TMR1CS=1; // 0= INTERNAL CLOCK ,1= EXTERNAL CLOCK T1OSCEN=1; TMR1IF=0; TMR1IE = 1; // TIMER1 Interrupt Enable bit ; GIE = 1; // Global Interrupt Enable bit PEIE=1; TMR1ON=1; // ENABLE TIMER 1 // T1CKPS0=0; // T1CKPS1=0; // TMR1GE=0; // T1SYNC=1; TMR1H=0x80; TMR1L=0x00; RBIE=1; INTE=1; INTF=1; T0IF=1; } ////////////////////////////////////////////////////////////////chuong trinh con bat tat che do ////////////////////////////////////////// void time_on() { if(RB3!=1) { tuong tu load1 } } void time_off() { if(RB4!=1) { tuong tu load1 } } /////////////////////////////////////////////////chuong trinh cai dat time cho hen gio///////////////////////////////////////// void settime() { if(RB2!=1) //set min { dung thuat toan tuong tu cai dat phut } if(RB1!=1) //set hour { dung thuat toan tuong tu cai dat phut } } ////////////////////////////////////////////////////////////////////cai dat gia tri va cong viec///////////////////////////////////////////////////////////////////////////////////////// void settimeload(void) { onset=0 ; while((menu==10)||(menu==20)||(menu==30)||(menu==40)||(menu==50)||(menu==60)||(menu==70)) { mode=menu; onset++; timeon=readEEPROM(0x01+mode); timeoff=readEEPROM(0x02+mode); while(timeon==2) { vao che do_ cai dat thoi gian hen gio } while(timeoff==2) { vao che do_ cai dat thoi gian hen gio } hs1=hs2=ms1=ms2=0; for(i=0;i<700;i++) { hien thi cac cong viec che do_ bat hay tat } for(i=0;i<700;i++) { hien thi thoi gian bat } for(i=0;i<700;i++) { hien thi thoi gian tat } if(onset>8) { menu=0; } } } ///////////////////////////////////////////////////////////////////doc gia tri cai dat va xu ly cong viec////////////////////////////////////////////////////////////////////////////////////////// void readload() { for(int j=10;j<90;j=j+10) { int addon=0; int addoff=0; led(h1,h2,m1,m2); if(readEEPROM(0x01+j)==1) addon=j; if(readEEPROM(0x02+j)==1) addoff=j; if(s<3) { if((addon>0)&&(addon<50)&&(readEEPROM(0x03+addon)==h1)&&(readEEPROM(0x04+addon)==h2)&&(readEEPROM(0x05+addon)==m1)&&(readEEPROM(0x06+addon)==m2)) { doc va so sanh cac gia tri da luu voi thoi gian thuc } if((addoff>0)&&(addoff<50)&&(readEEPROM(0x07+addoff)==h1)&&(readEEPROM(0x08+addoff)==h2)&&(readEEPROM(0x09+addoff)==m1)&&(readEEPROM(0x10+addoff)==m2)) //neu setload timeoff=1; { doc va so sanh cac gia tri da luu voi thoi gian thuc } } if(RC7==0) //ban ngay { doc va so sanh cac gia tri da luu voi thoi gian thuc khi ban ngay } else //ban dem { auoff=0; doc va so sanh cac gia tri da luu voi thoi gian thuc khi ban dem } } RC6=l1=readEEPROM(0x01); RC5=l2=readEEPROM(0x02); RC4=l3=readEEPROM(0x03); } ////////////////////////////////////////////////////////////////////////chuong trinh chinh///////////////////////////////////////////////////////////////////////////////////// void main() { TRISA0=TRISA1=TRISA2=TRISA3=TRISA4=TRISA5=0; TRISC2=TRISC3=TRISC4=TRISC5=TRISC6=0; WPUB0=WPUB1=WPUB2=WPUB3=WPUB4=WPUB5=WPUB6=WPUB7=1; ANS0=ANS1=ANS2=ANS3=ANS4=ANS8=ANS9=ANS10=ANS11=ANS12=ANS13=0; TRISB0=TRISB1=TRISB2=TRISB3=TRISB4=TRISB5=TRISB6=TRISB7=1; khaibaongat(); khaibaoeeprom(); l1=RC6= /// doc cac gia tri da luu//////////// l2=RC5= /// doc cac gia tri da luu//////////// l3=RC4= /// doc cac gia tri da luu//////////// h1= /// doc cac gia tri da luu//////////// h2= /// doc cac gia tri da luu//////////// m1= /// doc cac gia tri da luu//////////// m2= /// doc cac gia tri da luu//////////// while(1) { load1(); load2(); load3(); settimeled(); led(h1,h2,m1,m2); readload(); settimeload(); if(RC7==0) { h1p=h2p=m1p=m2p=0; } save++; if(save>10) save=5; if(save==3) { } } ////////////////////////////////////////////////ket thuc chuong trinh code bo mat na hen gio dungf PIC 16f886///////////////////////////////////
Comment