View Single Post
Old 07-01-2010, 10:28 AM   #4
slowlove
Đệ tử 1 túi
 
Tham gia ngày: Mar 2006
Bài gửi: 15
:
Post

Đâ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.
slowlove vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn