Title: module sw input 4ตัว กับ portb Post by: enics on December 18, 2009, 01:31:27 PM ผมอยากทดสอบใช้ module sw input 4ตัว กับ portb โดยใช้คำสั่ง ดังนี้
@ DEVICE PIC16F877A,HS_OSC,LVP_OFF,BOD_OFF,WDT_OFF DEFINE OSC 20 '------------------------------------ S2 VAR PORTB.5 L1 VAR PORTD.5 TRISA = %111111 TRISB = %00000000 ADCON1 = 7 OPTION_REG=%10000111 START: IF S1= 1 THEN GOTO LOWS HIGH L1 PAUSE 100 LOWS: LOW L1 GOTO START END เรื่องมันมีอยู่ว่า module sw1 มันอยู่ที่ portb 4 แต่พอรันโปรแกรม led ติดเลยครับ แต่พอเปลี่ยนเป็น sw2 ที่ portb5 ทำงานปกติครับ ส่วนsw3 sw4 ที่ portb6 portb7 เหมือนกับ sw1 ครับ ช่วยหน่อย Title: Re: module sw input 4ตัว กับ portb Post by: s_engine on December 20, 2009, 02:46:08 PM ใช้คอมไพเลอร์ อะไรเขียนหรอครับ อยากจะแนะนำแต่กะไม่ใช่เซียน ถ้าเป็น ccs compiler ผมกะพอจะแนะนำได้บ้าง
แล้วทดสอบ ยังไงหรอครับ ต่อวงจรจริงหรือ ซิม เอาครับ Title: Re: module sw input 4ตัว กับ portb Post by: s_engine on December 20, 2009, 05:25:48 PM #include <16F877.H> #fuses XT, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP #use delay(clock = 20000000) void main (void){ set_tris_b (0xff); // set port B to input set_tris_d (0x00); // set port D to output OUTPUT_d(0x00); // start output port d is all low while(true){ if(!input(pin_b4)){ // B4 ถูกกด D4 ติด 1 วิ output_high(PIN_d4); delay_ms(1000); } if(!input(pin_b5)){ // B5 ถูกกด D5 ติด 1 วิ output_high(PIN_d5); delay_ms(1000); } if(!input(pin_b6)){ // B6 ถูกกด D6 ติด 1 วิ output_high(PIN_d6); delay_ms(1000); } if(!input(pin_b7)){ // B7 ถูกกด D7 ติด 1 วิ output_high(PIN_d7); delay_ms(1000); } OUTPUT_d(0x00); } } (http://www.myuppic.com/io/testio1.jpg) (http://www.myuppic.com/show.php?id=6bab19f825c40a1dfc1df0d8551ae8d6) Thanks: อัพรูป (http://www.myuppic.com) smsฟรี (http://www.uppicweb.com) hositng (http://www.nethispeed.com) ccs c compiler v.4.057 proteus v7.4 sp3 อัพให้ไปลองเล่นดูนะครับ ข้างในมีทั้ง .c .hex และ ไฟล์ สำหรับ ซิมมูเลต (http://www.uploadtoday.com/images/partner/download_file.jpeg) (http://www.beupload.com/download/?674353&A=965708) Title: Re: module sw input 4ตัว กับ portb Post by: siriwat1977 on December 28, 2009, 11:19:33 PM DEFINE OSC 20
SW1 VAR PORTB.4 SW2 VAR PORTB.5 SW3 VAR PORTB.6 SW4 VAR PORTB.7 L1 VAR PORTD.4 L2 VAR PORTD.5 L3 VAR PORTD.6 L4 VAR PORTD.7 LOW L1 LOW L2 LOW L3 LOW L4 TRISB = 255 TRISD = 0 START: IF (SW1=1)AND(SW2=1)AND(SW3=1)AND(SW4=1) THEN GOTO START IF (SW1=0)AND(SW2=1)AND(SW3=1)AND(SW4=1) THEN GOSUB LOOP1 IF (SW1=1)AND(SW2=0)AND(SW3=1)AND(SW4=1) THEN GOSUB LOOP2 IF (SW1=1)AND(SW2=1)AND(SW3=0)AND(SW4=1) THEN GOSUB LOOP3 IF (SW1=1)AND(SW2=1)AND(SW3=1)AND(SW4=0) THEN GOSUB LOOP4 GOTO START LOOP1: HIGH L1 PAUSE 1000 LOW L1 PAUSE 10 RETURN LOOP2: HIGH L2 PAUSE 1000 LOW L2 PAUSE 10 RETURN LOOP3: HIGH L3 PAUSE 1000 LOW L3 PAUSE 10 RETURN LOOP4: HIGH L4 PAUSE 1000 LOW L4 PAUSE 10 RETURN เป็นภาษาเบสิค ใช้ pic basic pro คอมไพเลอร์ ลองดูนะครับ |