Chào các bạn trong diễn đàn. Hiện mình đang bắt đầu học PIC và tự mình đặt ra bài toán như sau
Cổng vào :
Port A0-A5 là các nút nhấn Sw1-sw6
Port C0-C2 lad các nút nhấn sw7-sw9
Cổng ra :
PortB
Khi nhấn các nút thì sẽ cho đầu ra ở portB xuất các tín hiệu khác nhau
Không bấm nút thì outport_B=0
Mình đã lập trình và chạy thử trên protues 7 thì hoạt động được, nhưng khi đổ chương trình vào chip thật thì không hoạt động được.
Mong cac bạn chỉ giúp mình chỗ nào sai hay thiếu sót để mình được học hỏi thêm
P/s : Trong mô phỏng, khi bấm nút có những lúc đầu ra bị nháy nháy không giữ được, vậy có phải do chương trình của mình có vấn đề không ?
Đây là chương trình của mình
Phần mô phỏng
Cổng vào :
Port A0-A5 là các nút nhấn Sw1-sw6
Port C0-C2 lad các nút nhấn sw7-sw9
Cổng ra :
PortB
Khi nhấn các nút thì sẽ cho đầu ra ở portB xuất các tín hiệu khác nhau
Không bấm nút thì outport_B=0
Mình đã lập trình và chạy thử trên protues 7 thì hoạt động được, nhưng khi đổ chương trình vào chip thật thì không hoạt động được.
Mong cac bạn chỉ giúp mình chỗ nào sai hay thiếu sót để mình được học hỏi thêm
P/s : Trong mô phỏng, khi bấm nút có những lúc đầu ra bị nháy nháy không giữ được, vậy có phải do chương trình của mình có vấn đề không ?
Đây là chương trình của mình
#include <16F886.h>
#use delay(crystal=20000000)
#define sw1 PIN_A0
#define sw2 PIN_A1
#define sw3 PIN_A2
#define sw4 PIN_A3
#define sw5 PIN_A4
#define sw6 PIN_A5
#define sw7 PIN_C0
#define sw8 PIN_C1
#define sw9 PIN_C2
#FUSES NOWDT //No Watch Dog Timer
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
void main()
{
while(TRUE)
{
//sw1
if(!input(sw1))
OUTPUT_B(0x70);
///sw2
else if(!input(sw2))
OUTPUT_B(0x0C);
///sw3
else if(!input(sw3))
OUTPUT_B(0x04);
///sw4
else if (!input(sw4))
OUTPUT_B(0x07);
///sw5
else if (!input(sw5))
OUTPUT_B(0x02);
///sw6
else if (!input(sw6))
OUTPUT_B(0x05);
///sw7
else if (!input(sw7))
OUTPUT_B(0x0E);
///sw8
else if (!input(sw8))
OUTPUT_B(0x0B);
///sw9
else if (!input(sw9))
OUTPUT_B(0x0A);
else
OUTPUT_B(0x00);
}
}
#use delay(crystal=20000000)
#define sw1 PIN_A0
#define sw2 PIN_A1
#define sw3 PIN_A2
#define sw4 PIN_A3
#define sw5 PIN_A4
#define sw6 PIN_A5
#define sw7 PIN_C0
#define sw8 PIN_C1
#define sw9 PIN_C2
#FUSES NOWDT //No Watch Dog Timer
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
void main()
{
while(TRUE)
{
//sw1
if(!input(sw1))
OUTPUT_B(0x70);
///sw2
else if(!input(sw2))
OUTPUT_B(0x0C);
///sw3
else if(!input(sw3))
OUTPUT_B(0x04);
///sw4
else if (!input(sw4))
OUTPUT_B(0x07);
///sw5
else if (!input(sw5))
OUTPUT_B(0x02);
///sw6
else if (!input(sw6))
OUTPUT_B(0x05);
///sw7
else if (!input(sw7))
OUTPUT_B(0x0E);
///sw8
else if (!input(sw8))
OUTPUT_B(0x0B);
///sw9
else if (!input(sw9))
OUTPUT_B(0x0A);
else
OUTPUT_B(0x00);
}
}
Comment