Đệ tử 1 túi
Tham gia ngày: Mar 2006
Bài gửi: 15
:
|
Đây là code chính của trương trình...ko đính kèm đc file nên các bạn xem tạm vì code quá dài...:D
ngoài ra thư viện cho LCD mình để life riêng,các chương trình trong menu mình cũng để riêng..
=========================================
Code:
#include <16F877A.h>
#device *=16 adc=10
#use delay(clock=20M)
#define lcd_4bit
#include <lcd_lib.c>
#include <menu_list.c>
#include <2416.c>
#fuses NOWDT,HS,NOPUT,NOPROTECT,NODEBUG,NOBROWNOUT,NOLVP,NOCPD,NOWRT
#priority int_timer2,int_timer0
/*******************************/
#bit OE = 0x08.7
/*----------*/
#bit c0 = 0x07.0
#bit c1 = 0x07.1
#bit c2 = 0x07.2
#bit c3 = 0x07.3
#bit c4 = 0x07.4
#bit c5 = 0x07.5
#bit c6 = 0x07.6
#bit c7 = 0x07.7
/*--------------*/
#byte portB=0x06
#byte portC=0x07
#byte portD=0x08
/*---------Dinh nghia Marco------------*/
#define kiemtra (c4+(c5<<1)+(c6<<2)+(c7<<3))
#define start_quetphim enable_interrupts(int_timer2)
#define stop_quetphim disable_interrupts(int_timer2)
/*---------------------------------------------*/
unsigned int1 chon_play;
unsigned int8 a,b;
unsigned int8 phim,chon_ct,chon_page,backup;
unsigned int8 data;
const unsigned char msg_ask[]={" YES 1 NO 2 "};
/*-----------------------------------------------------------------*/
/*----------------------cac chuong trinh con-----------------------*/
/*-----------------------------------------------------------------*/
void muiten(void){data=0x7e;display();}
void eraser(void){data=' ';display();}
/*----------------------*/
void contro(unsigned int8 dong,cot){
moveto(dong,cot);muiten();
delay_ms(20);
moveto(dong,cot);eraser();
delay_ms(20);
}
/*-----Loi Chao------*/
void wellcome(void){
const unsigned char msg1[]={"BAN QUYEN SP CUA"};
const unsigned char msg2[]={"Slowlove-(29/06)"};
for(a=0;msg1[a]!='\0';++a){data=msg1[a];display();}
moveto(2,1);
for(a=0;msg2[a]!='\0';++a){data=msg2[a];display();}
delay_ms(800);
}
/*------------------*/
void cau_hoi_xac_nhan(void){
const unsigned char msg1[]={"Co muon chay CT?"};
clear();
for(a=0;msg1[a]!='\0';++a){data=msg1[a];display();}
moveto(2,1);
for(a=0;msg_ask[a]!='\0';++a){data=msg_ask[a];display();}
}
/*------------------*/
void thong_bao_complete(void){
const unsigned char msg[]={"Complete !"};
clear();moveto(1,4);
for(a=0;msg[a]!='\0';++a){data=msg[a];display();} //Complete
delay_ms(200);
}
void thong_bao_resetpage(void){
const unsigned char msg1[]={"GO \"BEGIN_PAGE\" ?"};
clear();
for(a=0;msg1[a]!='\0';++a){data=msg1[a];display();}
moveto(2,1);
for(a=0;msg_ask[a]!='\0';++a){data=msg_ask[a];display();}
}
/*----------------------------------------------------------------------------*/
/*-----------------------------Chuong trinh chinh-----------------------------*/
/*----------------------------------------------------------------------------*/
#include <program.c>
void main(void){
setup_timer_0(rtcc_internal|rtcc_div_256);
setup_timer_2(t2_div_by_16,255,8);
enable_interrupts(int_timer0);
disable_interrupts(int_timer2);
enable_interrupts(global);
/*---------Cac lenh khoi tao ban dau-------*/
setup_adc_ports(no_analogs);
set_tris_a(0);
set_tris_c(0xf0);
set_tris_d(0x00);
portC=portD=0;
OE=0;
/*--------Cac lenh hien thi ban dau--------*/
khoitao(1,0);
cursor(1,0,0);
wellcome();
/*****************phan xu li chinh cua chuong trinh*********************/
while(true){
clear();
while(true)
{
start_quetphim;
menu_display(chon_page);
while((phim==0)||(phim==1)||(phim==2));
phim=4;
while(true)
{
if((phim==1)||(phim==2))break;
switch(phim){
case 0:goto thuc_hien_chuong_trinh;
case 4:stop_quetphim,backup=phim,contro(1,1),start_quetphim;break;
case 5:stop_quetphim,backup=phim,contro(1,9),start_quetphim;break;
case 6:stop_quetphim,backup=phim,contro(2,1),start_quetphim;break;
case 8:stop_quetphim,backup=phim,contro(2,9),start_quetphim;break;
default:stop_quetphim,phim=backup;}
}
stop_quetphim;
if(phim==2)++chon_page;
if((phim==1)&&(chon_page>0))--chon_page;
if(chon_page==8)chon_page=0;
}
/*-----------------------------------------------------------------------------*/
thuc_hien_chuong_trinh:
if(chon_page<7&&read_eeprom(1))
{
unsigned int8 backup_chon;
cau_hoi_xac_nhan();
while(phim==0);
stop_quetphim;
backup_chon=4;
while(true)
{
if(phim==0)break;
switch(phim){
case 4:stop_quetphim,backup_chon=phim,chon_play=0,contro(2,2),start_quetphim;break;
case 5:stop_quetphim,backup_chon=phim,chon_play=1,contro(2,9),start_quetphim;break;
default:stop_quetphim,phim=backup_chon;}
}
}
stop_quetphim;
if(chon_play==0||read_eeprom(1)==0||chon_page==7)
{
switch(backup)
{
case 4:chon_ct=(chon_page<<2)+1;break;
case 5:chon_ct=(chon_page<<2)+2;break;
case 6:chon_ct=(chon_page<<2)+3;break;
case 8:chon_ct=(chon_page<<2)+4;break;
}
chay_chuongtrinh(chon_ct);
thong_bao_complete(); //complete
if(chon_page>0&&chon_page<7&&read_eeprom(0))
{
unsigned int8 backup_chon;
unsigned int1 chon_reset;
thong_bao_resetpage();
start_quetphim;
while(phim==0);
backup_chon=4;
while(true)
{
if(phim==0)break;
switch(phim){
case 4:stop_quetphim,backup_chon=phim,chon_reset=0,contro(2,2),start_quetphim;break;
case 5:stop_quetphim,backup_chon=phim,chon_reset=1,contro(2,9),start_quetphim;break;
default:stop_quetphim,phim=backup_chon;}
}
stop_quetphim;
if(chon_reset==0)chon_page=0;
}
}
}
}
/*-----------------------------------------------------------------*/
/*------------Cac chuong trinh con phuc vu ngat timer--------------*/
/*-----------------------------------------------------------------*/
#int_ext
void ext(void){}
/*--------------------------*/
#int_timer0
void chose(void){
static unsigned int8 x,value0;
++value0;
if(value0==10){
output_a(3<<x++);
if(bit_test(x,3))x=0;
value0=0;
}
}
/*--------------------------*/
#int_timer1
void timer1(void){}
/*--------------------------*/
#int_timer2
void quet(void){
portC=1;
switch(kiemtra){
case 1:phim=12;break;
case 2:phim=13;break;
case 4:phim=14;break;
case 8:phim=15;break;
default:phim=16;}
portC=2;
switch(kiemtra){
case 1:phim=8;break;
case 2:phim=9;break;
case 4:phim=10;break;
case 8:phim=11;break;}
portC=4;
switch(kiemtra){
case 1:phim=4;break;
case 2:phim=5;break;
case 4:phim=6;break;
case 8:phim=7;break;}
portC=8;
switch(kiemtra){
case 1:phim=0;break;
case 2:phim=1;break;
case 4:phim=2;break;
case 8:phim=3;break;}
portC=0;
}
/*--------------------------*/
thay đổi nội dung bởi: slowlove, 07-01-2010 lúc 10:34 AM.
|