![]() |
![]() |
#61 |
Nhập môn đệ tử
Tham gia ngày: Oct 2008
Bài gửi: 5
: |
help me
code của em không chạy các bác ơi
Code:
#include<16f877a.h> #fuses NOWDT,PUT,HS,NOPROTECT #device PIC16f877a*=16 ADC=10 #use delay(clock=4000000) #include <lcd.c> #byte portb=0x06 #byte portd=0x08 #bit b0=portb.0 #bit b1=portb.1 #bit b2=portb.2 #bit b3=portb.3 #bit b4=portb.4 #bit b5=portb.5 #bit b6=portb.6 #bit b7=portb.7 #int_rb void docphim() { if(b0&&b4) lcd_putc("giang"); if(b1&&b4) lcd_putc("hoang"); if(b2&&b4) lcd_putc("k9a"); if(b3&&b4) lcd_putc(" "); if(b0&&b5) lcd_putc("hoang"); if(b1&&b5) lcd_putc("giang"); }//end int void main(void) { set_tris_b(0xf0); set_tris_d(0x00); enable_interrupts(INT_RB); enable_interrupts(GLOBAL); ext_int_edge(H_to_L); { portb=1; portb=2; portb=4; portb=8; lcd_putc("hoang giang !!!"); delay_ms(100); lcd_putc("\f"); } while(true);} thay đổi nội dung bởi: namqn, 04-04-2009 lúc 08:47 PM. Lý do: định dạng code |
![]() |
![]() |
![]() |
#62 |
Đệ tử 6 túi
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Di Linh
Bài gửi: 131
: |
while (true); /// mình nghĩ có vấn đề ở dấu ' ; '
|
![]() |
![]() |
![]() |
#63 |
Nhập môn đệ tử
Tham gia ngày: Feb 2009
Bài gửi: 2
: |
Code:
#include<16F887.h> #fuses NOWDT,PUT,HS,NOPROTECT #use delay(clock=20000000) #use fast_io(b) #byte portb=0x00 int i; int j; main() { for(i=0;i<=7;i++) { j=2^i; portb= j ; // led 8-1on delay_ms(1000); } }
__________________
AK Lovely thay đổi nội dung bởi: namqn, 05-04-2009 lúc 07:42 PM. Lý do: định dạng code |
![]() |
![]() |
![]() |
#64 | |
Trưởng lão PIC bang
|
Trích:
Chương trình của bạn không có một vòng lặp vô tận ở cuối để tránh cho vi điều khiển chạy tiếp những lệnh vô nghĩa phía sau mã chương trình. Với loại bài toán thay đổi trạng thái LED, không nên dùng Proteus để mô phỏng. Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
![]() |
![]() |
![]() |
#65 |
Nhập môn đệ tử
Tham gia ngày: Oct 2008
Bài gửi: 5
: |
|
![]() |
![]() |
![]() |
#66 |
Nhập môn đệ tử
Tham gia ngày: Dec 2008
Bài gửi: 8
: |
không hiểu tại sao khi em chép <DEF_16F877A.H> vào thư mục Devices rồi mà khi kiểm lỗi vẩn báo lỗi , các bác giúp em với. chưởng trình như sau
/*******BAT DAU CHUONG TRINH************/ #INCLUDE <16F877A.H> #INCLUDE <DEF_16F877A.H> #DEFINE STOP PIN_B4 #DEFINE DKTH PIN_B5 #DEFINE DKNG PIN_B6 #FUSES NOWDT,PUT,HS,NOPROTECT,NOLVP #USE DELAY(CLOCK=20000000) //SU DUNG THACH ANH 20MHZ #USE FAST_IO(A) #USE FAST_IO(B) #USE FAST_IO(D) INT8 I,BCHUC,BDVI,VDVI,VCHUC; INT8 SBUOC=0,A,SVONG=0; INT8 R_KEY=0; CONST UNSIGNED CHAR DIG[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X9 0}; CONST UNSIGNED CHAR ROTATE[]={14,12,13,9,11,3,7,6}; /************************************************** ******* CHUONG TRINH DIEU KHIEN LED QUAY THUAN SU DUNG LOAI DONG CO BUOC 48 RANG DIEU KHIEN NUA BUOC */ //CHUONG TRINH NGAT RB #INT_RB VOID NGAT_RB() { IF(RBIF==1) { IF(INPUT(STOP)==0){A=0;} IF(INPUT(DKTH)==0){A=1;} IF(INPUT(DKNG)==0){A=2;} } RBIF=0; } //CHUONG TRINH DOI SO BUOC, SO VONG RA SO BCD HEX_BCD() { VCHUC=SVONG/10; VDVI=SVONG%10; BCHUC=SBUOC/10; BDVI=SBUOC%10; } HIENTHI1() { PORTC=DIG[BDVI]; //HIEN THI SO BUOC DON VI PORTD=0X0F; DELAY_US(100); PORTD=0; //CHONG LEM PORTC=DIG[BCHUC]; //HIEN THI SO BUOC CHUC PORTD=0X17; DELAY_US(100); PORTD=0; PORTC=0XBF; //HIEN THI DAU GACH PHAN CACH PORTD=0X1B; DELAY_US(100); PORTD=0; PORTC=DIG[VDVI]; //HIEN THI SO VONG DON VI PORTD=0X1D; DELAY_US(100); PORTD=0; PORTC=DIG[VCHUC]; //HIEN THI SO VONG CHUC PORTD=0X1E; DELAY_US(100); PORTD=0; } HIENTHI() { I=0; SBUOC++; IF(SBUOC>95){ SBUOC=0; SVONG++; IF(SVONG>99){SVONG=0;} } HEX_BCD(); WHILE(I<10) { HIENTHI1(); I++; } } QUAYTHUAN() { PORTA=ROTATE[R_KEY]; HIENTHI(); IF (R_KEY < 7){R_KEY++;} ELSE R_KEY=0; } QUAYNGICH() { IF (R_KEY > 0){R_KEY--;} ELSE R_KEY=7; PORTA=ROTATE[R_KEY]; HIENTHI(); } STP() { OUTPUT_A(0XFF); HEX_BCD(); HIENTHI1(); } VOID MAIN () { SET_TRIS_A(0); // PORTA DIEU KHIEN DONG CO BUOC SET_TRIS_B(0XFF); // PORTB LA PORT NHAP DU LIEU SET_TRIS_C(0); // PORTC XUAT MA HIEN THI SET_TRIS_D(0); // PORTD QUET LED ENABLE_INTERRUPTS(GLOBAL); //CHO PHEP NGAT TOAN CUC ENABLE_INTERRUPTS(INT_RB); //CHO PHEP NGAT RB EXT_INT_EDGE(H_TO_L); //CHO PHEP NGAT CANH XUONG A=0; WHILE(1) { SWITCH(A) { CASE 0 : STP(); //NEU A=0 THI STOP BREAK; CASE 1 : QUAYTHUAN(); //NEU A=1 THI QUAY THUAN BREAK; CASE 2 : QUAYNGICH(); //NEU A=2 THI QUAY NGHICH BREAK; } } } |
![]() |
![]() |
![]() |
#67 |
Nhập môn đệ tử
Tham gia ngày: Dec 2008
Bài gửi: 8
: |
không hiểu tại sao khi em chép <DEF_16F877A.H> vào thư mục Devices rồi mà khi kiểm lỗi vẩn báo lỗi , các bác giúp em với. chưởng trình như sau
/*******BAT DAU CHUONG TRINH************/ #INCLUDE <16F877A.H> #INCLUDE <DEF_16F877A.H> #DEFINE STOP PIN_B4 #DEFINE DKTH PIN_B5 #DEFINE DKNG PIN_B6 #FUSES NOWDT,PUT,HS,NOPROTECT,NOLVP #USE DELAY(CLOCK=20000000) //SU DUNG THACH ANH 20MHZ #USE FAST_IO(A) #USE FAST_IO(B) #USE FAST_IO(D) INT8 I,BCHUC,BDVI,VDVI,VCHUC; INT8 SBUOC=0,A,SVONG=0; INT8 R_KEY=0; CONST UNSIGNED CHAR DIG[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X9 0}; CONST UNSIGNED CHAR ROTATE[]={14,12,13,9,11,3,7,6}; /************************************************** ******* CHUONG TRINH DIEU KHIEN LED QUAY THUAN SU DUNG LOAI DONG CO BUOC 48 RANG DIEU KHIEN NUA BUOC */ //CHUONG TRINH NGAT RB #INT_RB VOID NGAT_RB() { IF(RBIF==1) { IF(INPUT(STOP)==0){A=0;} IF(INPUT(DKTH)==0){A=1;} IF(INPUT(DKNG)==0){A=2;} } RBIF=0; } //CHUONG TRINH DOI SO BUOC, SO VONG RA SO BCD HEX_BCD() { VCHUC=SVONG/10; VDVI=SVONG%10; BCHUC=SBUOC/10; BDVI=SBUOC%10; } HIENTHI1() { PORTC=DIG[BDVI]; //HIEN THI SO BUOC DON VI PORTD=0X0F; DELAY_US(100); PORTD=0; //CHONG LEM PORTC=DIG[BCHUC]; //HIEN THI SO BUOC CHUC PORTD=0X17; DELAY_US(100); PORTD=0; PORTC=0XBF; //HIEN THI DAU GACH PHAN CACH PORTD=0X1B; DELAY_US(100); PORTD=0; PORTC=DIG[VDVI]; //HIEN THI SO VONG DON VI PORTD=0X1D; DELAY_US(100); PORTD=0; PORTC=DIG[VCHUC]; //HIEN THI SO VONG CHUC PORTD=0X1E; DELAY_US(100); PORTD=0; } HIENTHI() { I=0; SBUOC++; IF(SBUOC>95){ SBUOC=0; SVONG++; IF(SVONG>99){SVONG=0;} } HEX_BCD(); WHILE(I<10) { HIENTHI1(); I++; } } QUAYTHUAN() { PORTA=ROTATE[R_KEY]; HIENTHI(); IF (R_KEY < 7){R_KEY++;} ELSE R_KEY=0; } QUAYNGICH() { IF (R_KEY > 0){R_KEY--;} ELSE R_KEY=7; PORTA=ROTATE[R_KEY]; HIENTHI(); } STP() { OUTPUT_A(0XFF); HEX_BCD(); HIENTHI1(); } VOID MAIN () { SET_TRIS_A(0); // PORTA DIEU KHIEN DONG CO BUOC SET_TRIS_B(0XFF); // PORTB LA PORT NHAP DU LIEU SET_TRIS_C(0); // PORTC XUAT MA HIEN THI SET_TRIS_D(0); // PORTD QUET LED ENABLE_INTERRUPTS(GLOBAL); //CHO PHEP NGAT TOAN CUC ENABLE_INTERRUPTS(INT_RB); //CHO PHEP NGAT RB EXT_INT_EDGE(H_TO_L); //CHO PHEP NGAT CANH XUONG A=0; WHILE(1) { SWITCH(A) { CASE 0 : STP(); //NEU A=0 THI STOP BREAK; CASE 1 : QUAYTHUAN(); //NEU A=1 THI QUAY THUAN BREAK; CASE 2 : QUAYNGICH(); //NEU A=2 THI QUAY NGHICH BREAK; } } } |
![]() |
![]() |
![]() |
#68 |
Nhập môn đệ tử
Tham gia ngày: Dec 2008
Bài gửi: 8
: |
em đã tim ra lỗi, cam ơn
|
![]() |
![]() |
![]() |
#69 |
Nhập môn đệ tử
Tham gia ngày: Feb 2009
Bài gửi: 7
: |
sao mình sử dụng chương trình CCS để viết chương trình cho PIC thì sau khi viết xong lại không thể compile để chuyển thành file .hex được vì nút compile đó bị mờ đi, mình bấm thử F9 cũng không được, xin mọi người chỉ giúp. Đa tạ!
|
![]() |
![]() |
![]() |
#70 |
Nhập môn đệ tử
Tham gia ngày: Jul 2009
Bài gửi: 10
: |
hix, các bác ơi. Khó hiểu thật. Em dùng timer0 để tạo thời gian trễ là 1s. Nháy leg hiển thị số. Em nghĩ đã đúng rồi, vì thử các led nháy 1s đúng mà sao khi bỏ vào led bảy đoạn nó lại chạy quá nhanh kô như ý muốn được. Hix vậy là sao đây ạ?? Muốn xử lý thì thế nào ??
code: #include <16f877a.h> #fuses HS, NOWDT #use delay(clock=4000000) #byte portb=0x06 #byte trisb=0x86 #byte INTCON=0x0b #bit TMR0IF=INTCON.2 #byte TMR0=0x01 #use fast_IO (b) void tre1s (int so) { int i,j; TMR0IF=0; setup_timer_0 (RTCC_INTERNAL|RTCC_DIV_16); set_timer0 (6); for (i=0;i<=so;i++) { while (TMR0IF==0) { } } } void main () { int a,b; int C[10]= {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 }; set_tris_b (0x00); a=0; while (1) { for (a=0;a<=9;a++) { tre1s (250); portb=C[a]; tre1s (250); } } } |
![]() |
![]() |
![]() |
#71 |
Đệ tử 3 túi
Tham gia ngày: Feb 2009
Bài gửi: 47
: |
|
![]() |
![]() |
![]() |
#72 |
Nhập môn đệ tử
Tham gia ngày: Jul 2009
Bài gửi: 10
: |
bác nói rõ hơn một chút được kô ạ?? Còn cái 1s đó kô wan trọng. Theo em nghĩ mình tính toán cũng đúng mà. Thời gian để i tăng lên 1 đơn vị: (255-6+1)*1*16 = 40000. Vậy giá trị số phải là 250. Em wen ở đó kô có dấu bằng xảy ra.
Vấn đề em thắc mắc ở đây. Là cái đoạn sau. Nếu em thay đoạn sau: void main () { int a=0b00000001; set_tris_b(0x00); while (1) { portb=a; tre1s (250); rotate_left (&a,1); } } thì đèn led ở portb của em nháy từng con với thời gian trễ là 1s. Còn nếu em thay cái đoạn trên thì nó nhảy gì gì đâu ấy à. Em kô hiểu được thay đổi nội dung bởi: Em_ku, 06-09-2009 lúc 04:12 PM. |
![]() |
![]() |
![]() |
#73 |
Nhập môn đệ tử
Tham gia ngày: Jul 2009
Bài gửi: 10
: |
Kô ai giúp em với!! Hix em chờ lâu quá mà kô thấy. Cũng tìm khắp diễn đàn rồi mà kô thấy có chỗ nào nói về cái này cả
|
![]() |
![]() |
![]() |
#74 |
Đệ tử 1 túi
Tham gia ngày: Oct 2008
Bài gửi: 19
: |
mh cũng gốp zui thêm 1 số chưg trìh ccs,các ct này chạy tốt trên protues7.4
http://www.mediafire.com/?xzynn5nmgnz |
![]() |
![]() |
![]() |
#75 | |
Đệ tử 3 túi
Tham gia ngày: Feb 2009
Bài gửi: 47
: |
Trích:
Hàm tre1s() của bạn chỉ đơn giản là thực hiện các lệnh trong đó mỗi lệnh tốn khoảng vài us làm sao mà trễ đc đến 1s cơ chứ. |
|
![]() |
![]() |
![]() |
|
|
![]() |
||||
Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
dsPIC Tutorial 3-Đọc ngõ vào và giao tiếp LCD | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 92 | 19-02-2017 11:15 PM |
dsPIC Tutorial 2-Các kỹ thuật cơ bản | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 33 | 17-10-2013 11:09 PM |
dsPIC Tutorial 4-Module UART và I2C | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 76 | 09-05-2012 10:55 AM |
Tutorial LCD cua Nigel??????? | spirit | Cơ bản về vi điều khiển và PIC | 16 | 16-03-2009 05:32 PM |
tutorial hay cho newbie | FUD84 | Cơ bản về vi điều khiển và PIC | 2 | 04-12-2005 02:29 AM |