![]() |
|
|
|
|
#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++) .................. } |
|
|
|
![]() |
| Ðiều Chỉnh | |
| Xếp Bài | |
|
|
Similar Threads
|
||||
| Ðề 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 |