cần giúp phím nhấn và led đơn trên pic12f629

wintily

Học sinh phổ thông
#31
mình copy từng tý trong các diễn đàn có ví dụ như bài đầu là ấn nút thì led đỏ nhấn lại thì nút tắt.mình đã xuất ra thành công led đỏ nhưng chân GP4,GP5 không hiểu vì sao không xuất nguồn ra.mong bạn co thể chỉ thêm mình.(mình dung output_high(pin_a5))
 

hieulv105

Sinh viên đại học
#32
mình copy từng tý trong các diễn đàn có ví dụ như bài đầu là ấn nút thì led đỏ nhấn lại thì nút tắt.mình đã xuất ra thành công led đỏ nhưng chân GP4,GP5 không hiểu vì sao không xuất nguồn ra.mong bạn co thể chỉ thêm mình.(mình dung output_high(pin_a5))
Để sử dụng chân GP4, GP5 là I/O bạn phải config cho 2 chân này là I/O bằng cách thêm khai báo #fuses INTRC_IO hoặc #fuses INTRC.
Bạn chạy code trên mô phỏng hay là mạch thật, bạn Buid bằng phần mềm gì: CCS hay là MPLAP nhúng CCS Complier...
 

wintily

Học sinh phổ thông
#33
ak mình dùng ccs nhúng vào proteus. mình chỉ biết C nên đang tập tành cám ơn bạn rất nhiều!bạn cho mình hỏi luôn cái chân có những cổng này thì phải khai báo fuse hả ??(CIN-/ICSPCLK GP4/T1G/OSC2/CLKOUT/CLKIN)
p/s mình thử thêm #fuses INTRC_IO thì báo lỗi sử dụng delay??
 

Sad Prince

Học sinh phổ thông
#36
Các anh có thể giúp em viết chương trình chỉ dùng 1 nút nhấn thả để điều khiển led như vậy đc không ạ, khi nhấn rồi thả thì led sáng rồi tắt, khi nhấn giữ khoảng tầm 3s thì led sáng liên tục khi sáng như vậy cứ nhấn là led sáng rồi tắt và cứ như thế không nhấn nữa thì led vẫn sáng. nhấn giữ 3s nữa thì led sẽ tắt
Em cám ơn ạ
 

hanamoi116

Học sinh phổ thông
#38
em thử xem sao:
Mã:
#include <12F629.h>
#fuses NOMCLR, INTRC_IO,NOWDT,NOPROTECT, NOPUT, NOPROTECT, NOBROWNOUT, NOCPD
#use delay (clock=4000000)
int8 bien_led,bien=0,over_5s=0;
#define sw  PIN_A3                             
#define led_1 PIN_A0 
#define led_2 PIN_A1
#define led_3 PIN_A2
#int_timer1
void timer_1()
  {
bien++;
if(bien==100)//100*50000 =5s
{
bien=0;if(bien_led!=0)
over_5s=0xaa;
set_timer1(0x3CAF);//thiet lap gia tri ban dau cho timer1
}}
void main()
{
SET_TRIS_A(0b00001000);
output_A(0xff);
bien_led=0;
setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_1 );
set_timer1(0x3CAF);//thiet lap gia tri ban dau cho timer1
enable_interrupts(GLOBAL);
enable_interrupts(INT_TIMER1);
while(1){
if(!input(sw))delay_ms(10);
if(!input(sw)){
if(over_5s==0xaa){bien_led=0;goto thoat;}
bien_led++;if(bien_led>3)bien_led=1;
thoat:
switch ( bien_led){//!!!!!!!!!!!!!!!!!!
case 0:{output_high(led_1);output_high(led_2);output_high(led_3);break;}
case 1:{output_low(led_1);output_high(led_2);output_high(led_3);break;}
case 2:{output_high(led_1);output_low(led_2);output_high(led_3);break;}
case 3:{output_high(led_1);output_high(led_2);output_low(led_3);break;}
}//!!!!!!!!!!!!!!!!!!!!
while(!input(sw)){}
delay_ms(10);over_5s=0;bien=0;
}}}
Bạn viết thêm khi ấn giữ công tắc quá 3s để điều khiển túp năng quạt được không?Cám ơn bạn nhiều nhé!
 

Quảng cáo Google