Trích:
Nguyên văn bởi socola
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);
}
}