![]() |
|
![]() |
#1 |
Trưởng lão PIC bang
|
Bên ngoài vòng while nên khởi tạo giá trị cho biến a. Điều kiện lặp là a==8 do đó nếu giá trị a ban đầu không phải là 8 thì vòng lặp không chạy. Nếu vòng lặp có chạy thì chỉ chạy 1 lần, vì bên trong vòng lặp a bị thay đổi.
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 |
![]() |
![]() |
![]() |
#2 |
Đệ tử 2 túi
Tham gia ngày: Sep 2006
Bài gửi: 33
: |
vậy nếu như chương trình gán biến a=8 thì vòng lặp sẽ ko lặp 8 lần
vậy thì chương trình này phải viết lại như thế nào?? PHP Code:
nhưng vòng lệnh for thì thực hiện lặp 8 lần dc PHP Code:
|
![]() |
![]() |
![]() |
#3 |
Trưởng lão PIC bang
|
Code của bạn chỉ cần sửa lại thành
Code:
int8 a,b; main() { a = 0; while(a<8){ a++; portb=00; delay_ms(100); portb=0xFF; delay_ms(100); }
__________________
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 |
![]() |
![]() |
![]() |
#4 |
Nhập môn đệ tử
Tham gia ngày: Sep 2008
Bài gửi: 7
: |
![]() Em mới học ccs,cho em hỏi các bác cái def_877A là cái gì mà em tìm không có,mấy chương trình của các bác có khai báo nhưng có khi dịch được có khi thi không ,nhờ các bác?
|
![]() |
![]() |
![]() |
#5 |
Nhập môn đệ tử
Tham gia ngày: Mar 2009
Bài gửi: 5
: |
bạn đem về cho nó vào c/program file/picc/devices nhé. Còn trong đó có gì bạn mở ra sẽ biết thôi.
thay đổi nội dung bởi: badungdtk3, 19-03-2009 lúc 09:05 PM. |
![]() |
![]() |
![]() |
#6 |
Đệ tử 2 túi
Tham gia ngày: Sep 2006
Bài gửi: 33
: |
anh namqn cho em hỏi luôn cái chương trình này:
Code:
//Chuong trinh led sang don o PORTB /*ket qua o PORTB là:00000001,00000010,00000100,00001000,00010000,00100000,01000000,10000000,10000001,10000010,10000100,10001000,.....cuoi cung thi PORTB=0xFF */ #include<16F877A.h> #include<def_16f877a.h> #fuses NOWDT,PUT,HS,NOPROTECT,NOLVP #use delay(clock=20000000) #use fast_io(b) int8 sck,slx,bienxoay,bienluu,giatri; main() { trisb=0; while(true){ sck=8; portb=0; delay_ms(100); while(sck<1) { bienxoay=0; slx=sck; while(slx<1) { bienxoay=bienxoay<<1; giatri=bienluu|bienxoay; portb=giatri; delay_ms(100); slx--; } bienluu=giatri; sck--; } } } Cảm ơn anh trước! Em mới học nên ko hiểu! thay đổi nội dung bởi: namqn, 04-12-2006 lúc 11:12 PM. |
![]() |
![]() |
![]() |
#7 |
Trưởng lão PIC bang
|
Có lẽ chương trình chạy đúng theo những gì bạn viết đó chứ.
Chương trình nên được sửa lại thành: Code:
//Chuong trinh led sang don o PORTB /*ket qua o PORTB là:00000001,00000010,00000100,00001000,00010000,00100000,01000000,10000000,10000001,10000010,10000100,10001000,.....cuoi cung thi PORTB=0xFF */ #include<16F877A.h> #include<def_16f877a.h> #fuses NOWDT,PUT,HS,NOPROTECT,NOLVP #use delay(clock=20000000) #use fast_io(b) int8 sck,bienxoay; main() { trisb=0; while(true){ sck=8; portb=0; delay_ms(100); bienxoay=1; while(sck>0) { portb=bienxoay; bienxoay=bienxoay<<1; delay_ms(100); sck--; } } }
__________________
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 |
![]() |
![]() |
![]() |
#8 | |
Đệ tử 3 túi
Tham gia ngày: Jun 2010
Bài gửi: 57
: |
Trích:
|
|
![]() |
![]() |
![]() |
#9 |
Nhập môn đệ tử
Tham gia ngày: Jan 2007
Bài gửi: 7
: |
counter!!!
hoi ve counter: xin chao cac ban minh co mot thac nac the nay
khi ta dem xung ngoai dung :timer0 thi xung ngoai dua vao chan A4 va ta dung lenh: setup_counters(rtcc_ext_h_to_l,rtcc_div_1); bay gio minh muon dem xung tren c0va c1 (dung timer1) thi khai bao the nao? mong cac ban giup do cam on! |
![]() |
![]() |
![]() |
#10 |
Đệ tử 2 túi
|
cho mình hỏi cách sửa bộ compiler với! giả sử như sửa file lcd.c!
trong file lcd.c thi compiler mặc định là dữ liệu sẽ được gởi các chân RB4-RB7! nếu em muốn dl dc đưa ra các chân của RC4-RC7 thì phải làm như thế nào? |
![]() |
![]() |
![]() |
#11 |
Đệ tử 7 túi
Tham gia ngày: Jul 2007
Nơi Cư Ngụ: Đà Nẵng
Bài gửi: 188
: |
thì bạn define lại ngõ suất ra ! thường trong thư viện đó ng ta đ/n như sau
Code:
#define D4 RB4 #define D5 RB5 #define D6 RB6 #define D7 RB7 |
![]() |
![]() |
![]() |
#12 | ||
Đệ tử 6 túi
Tham gia ngày: Oct 2006
Bài gửi: 147
: |
help về Lm335+16F877A+LCD1602
lâu rùi không động chạm PIC nên quên mứt..!!!
mọi người cho em hỏi ::: Trích:
Trích:
|
||
![]() |
![]() |
![]() |
#13 |
Đệ tử 7 túi
Tham gia ngày: Jul 2007
Nơi Cư Ngụ: Đà Nẵng
Bài gửi: 188
: |
Đây là code LCD4bit , mình chỉnh lại từ code của anh Linh
Code:
#define E PIN_D0 #define RS PIN_D1 #define RW PIN_D2 #define LCD_D4 PIN_D4 #define LCD_D5 PIN_D5 #define LCD_D6 PIN_D6 #define LCD_D7 PIN_D7 void LCD_Init ( void ); // ham khoi tao LCD void LCD_SetPosition ( unsigned int data );//Thiet lap vi tri con tro void LCD_PutChar ( unsigned int data ); // Ham viet1kitu/1chuoi len LCD void LCD_PutCmd ( unsigned int data ) ; // Ham gui lenh len LCD void send_to_LCD( unsigned int data); void LCD_Init ( void ) { delay_ms(200); // thoi gian de LCD khoi dong output_low(RW); // RW = 0 output_low(RS); // che do gui lenh send_to_LCD( 0x00 ); output_high ( E ); output_low ( E ); delay_ms ( 10 ); send_to_LCD( 0x03 ); /* init with specific nibbles to start 4-bit mode */ output_high ( E ); output_low ( E ); delay_ms ( 3 ); // tao xung tren chan E output_high ( E ); output_low ( E ); delay_ms ( 3 ); output_high ( E ); output_low ( E ); delay_ms ( 3 ); send_to_LCD( 0x02 ); /* set 4-bit interface */ output_high ( E ); output_low ( E ); delay_ms ( 3 ); // tao xung tren chan E LCD_PutCmd ( 0x2C ); /* function set (all lines, 5x7 characters) */ LCD_PutCmd ( 0x0C); /* display ON, cursor off, no blink */ LCD_PutCmd ( 0x06 ); /* entry mode set, increment & scroll left */ LCD_PutCmd ( 0x01 ); /* clear display */ } void LCD_SetPosition ( unsigned int data ) { send_to_LCD( swap ( data ) | 0x08 ); output_high ( E ); output_low ( E ); delay_ms ( 3 ); // tao xung tren chan E send_to_LCD( swap ( data ) ); output_high ( E ); output_low ( E ); delay_ms ( 3 ); // tao xung tren chan E } void LCD_PutChar ( unsigned int data ) { output_high( RS ); //RS = 1 output_low ( RW ); //RW = 0 send_to_LCD( swap ( data ) ); // gui 4 bit cao output_high ( E ); output_low ( E ); delay_ms ( 3 ); // tao xung tren chan E send_to_LCD( swap ( data ) ); //gui 4 bit thap output_high ( E ); output_low ( E ); delay_ms ( 3 ); // tao xung tren chan E } void LCD_PutCmd ( unsigned int data ) { output_low(RS); // RS = 0 output_low(RW); // RW = 0 send_to_LCD( swap(data) ); // gui 4 bit cao output_high (E); output_low (E); delay_ms (3); send_to_LCD( swap(data) ); // gui 4 bit thap output_high (E); output_low (E); delay_ms ( 3 ); } void send_to_LCD( unsigned int data ) { output_bit ( LCD_D4, data & 0x01 ); output_bit ( LCD_D5, data & 0x02 ); output_bit ( LCD_D6, data & 0x04 ); output_bit ( LCD_D7, data & 0x08 ); } |
![]() |
![]() |
![]() |
#14 |
Đệ tử 7 túi
Tham gia ngày: Jul 2007
Nơi Cư Ngụ: Đà Nẵng
Bài gửi: 188
: |
hình như trong 2 file bạn include vào ko có định nghĩa trisa , trisb ,trisd . bạn chỉ cần khai báo lại địa chỉ là đc thui .. ko có gì cả !
|
![]() |
![]() |
![]() |
#15 |
Đệ tử 4 túi
Tham gia ngày: May 2007
Bài gửi: 69
: |
bạn cũng có thể viết như sau:
while(1)// vong lap luôn đúng { for(a=0;a=8;a++) .................. } |
![]() |
![]() |
![]() |
|
|
![]() |
||||
Ðề 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 |