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///////////////////////////////////
nhưng k biết có mạch k hay có nhưng mở = phần mềm nào nhỉ 
nhưng k biết có mạch k hay có nhưng mở = phần mềm nào nhỉ 
Comment