View Single Post
Old 01-09-2009, 10:40 PM   #2
Mr.Bi
Đệ tử 7 túi
 
Tham gia ngày: Jul 2007
Nơi Cư Ngụ: Đà Nẵng
Bài gửi: 188
:
Trích:
Nguyên văn bởi socola View Post
Mình có viết 1 CT điều khiển có 2 nút nhấn. Khi nhấn phím 1 thì led đơn 1 sáng và led 7 hiện số 1. Tương tự khi bấm số 2
Vấn đề mình cần giúp là khi mình tắt nguồn và bật lại thì led 7 đoạn, led đơn vẫn hiện 1 số.
Ý mình là khi bật nguồn tất cả sẽ tắt hết để mình chọn lại số mình muốn

Thanks
Góp í đầu tiên ,đừng bao giờ dùng biến toàn cục và cục bộ trùng nhau thế

Code:
#include <16F877A.h>
#fuses NOWDT,PUT,HS,NOPROTECT,NOLVP
#use     delay(clock=20000000)

#define led0   rd0
#define led1   rd1

#define bt0    rc0
#define bt1    rc1

#define loa    ra2

#define led7vcc      ra0

#define data_led     portb

#define led_singer   portd


const unsigned char dig[]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};

void display_int(int dta)
{ led7vcc = 0;
   if(dta==0) data_led = dig[0xFF];
   else data_led = dig[dta%10];
   delay_ms(2);
   led7vcc = 1;
}

void led_don(int dta)
{
   switch(dta)
   {  case 0: led_singer = 0x00;break;
      case 1: led_singer = 0x01; break;
      case 2: led_singer = 0x02; break;
   
      default:led_singer = 0x00; break;
   }
}

int detect_sw()
{  int dta ;
  
   if(bt0 == 0)
   {  
      dta=1;
      loa = 1;
      delay_ms(50);
      loa = 0;
      delay_ms(200);
      
   };   
   if(bt1== 0)
   {  
      dta=2;
      loa = 1;
      delay_ms(50);
      loa = 0;
      delay_ms(200);
    } ; 
   
   return dta;
}

void main()
{
   int i =0;
  
   trisa = 0x00;
   trisb = 0x00;
   trisc = 0xff;
   trisd = 0x00;
   
   porta = portb = portc = portd = 0x00;
    
   while(1)
   { i=detect_sw();
      display_int(i);
      led_don(i);
   }
}
Mr.Bi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn