View Single Post
Old 08-09-2009, 12:14 AM   #9
tienchuan
Đệ tử 4 túi
 
tienchuan's Avatar
 
Tham gia ngày: Oct 2008
Bài gửi: 71
:
Trích:
Nguyên văn bởi vandat07 View Post
Em đang định viết chương trình điều khiển đèn led nháy nhiều chế độ dùng 1 button nhưng mà chưa biết làm thế nào? Có phải phải dùng ngắt ngoài không?

Ai biết thì cho em code.

Thank!
bài này của A Linhnc308,bạn lấy về edit lại theo ý mình nếu thích: "sory A Linh "
Code:
#include <16f877a.h>
#include <def_877a.h>
#device *=16
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)

int8 mode,i;
byte temp;

#INT_EXT
EXT_ISR() 
{

mode++;
if (mode==9) mode = 0;
}
// End of INT

void program1();
void program2();
void program3();
void program4();
void program5();
void program6();
void program7();
void program8();

void main()
{

   trisd = 0x00;
   trisb = 0xFF;
   portd=0xff;
   enable_interrupts(int_EXT);
   ext_int_edge(L_TO_H);
   enable_interrupts(GLOBAL);
   mode = 0;
while (1) {
   switch(mode) {
      case 1: program1(); break;
      case 2: program2(); break;
      case 3: program3(); break;
      case 4: program4(); break;
      case 5: program5(); break;
      case 6: program6(); break;
      case 7: program7(); break;
      case 8: program8(); break;
   }
}
}

void program1() 
{
   PortD = 0x00;
   delay_ms(10);
   Portd = 0xFF;
   delay_ms(100);
}
void program2() {
   temp = 0xFF;
   for (i=0;i<=8;i++) 
   {
      portd = temp;
      delay_ms(100);
      temp >>= 1;
   }
}
void program3()
{
    temp = 0xFF;
   for (i=0;i<=8;i++) 
   {
      portd = temp;
      delay_ms(100);
      temp <<= 1;
   }
}
void program4() {
   portd = 0xAA;
   delay_ms(100);
   portd = 0x55;
   delay_ms(100);
}
void program5() 
{
   Portd = 0x7E;
   delay_ms(150);
   Portd = 0xBD;
   delay_ms(250);
   Portd = 0xDB;
   delay_ms(150);
   Portd = 0xE7;
   delay_ms(150);
   Portd = 0xDB;
   delay_ms(150);
   Portd = 0xBD;
   delay_ms(150);
   Portd = 0x7E;
   delay_ms(150);
}
void program6() 
{
  temp = 0xFF;
   for (i=0;i<=8;i++) {
      portd = temp;
      delay_ms(250);
      temp = temp >> 1;
   }
}
void program7()
{

   Portd = 0xFE;
   delay_ms(150);
   Portd = 0xFD;
   delay_ms(150);
   Portd = 0xFB;
   delay_ms(150);
   Portd = 0xF7;
   delay_ms(150);
   Portd = 0xEF;
   delay_ms(150);
   PortD = 0xDF;
   delay_ms(150);
   Portd = 0xBF;
   delay_ms(150);
   Portd = 0x7F;
   delay_ms(150);
}

void program8() {
   Portd = 0x7F;
   delay_ms(150);
   Portd = 0xBF;
   delay_ms(150);
   PortD = 0xDF;
   delay_ms(150);
   Portd = 0xEF;
   delay_ms(150);
   Portd = 0xF7;
   delay_ms(150);
   Portd = 0xFB;
   delay_ms(150);
   Portd = 0xFD;
   delay_ms(150);
   Portd = 0xFE;
   delay_ms(150);
}
tienchuan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn