PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 18-02-2009, 11:20 AM   #1
vuthien86
Đệ tử 1 túi
 
Tham gia ngày: Feb 2009
Bài gửi: 13
:
Cool xem giúp mình đoạn code này lỗi ở đâu

#include <16F84A.h>
#include <def_84a.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT
#use delay(clock=10000000)
int8 i; //khai bao bien chay vong lap i
int8 temp;
//khai bao cac chuong trinh con ()
void chuong_trinh_1();//nhap nhay cong B
void chuong_trinh_2();//led sang tu trai qua phai
void chuong_trinh_3();//led sang tu phai qua trai
void chuong_trinh_4();//nhap nhay xen ke
void chuong_trinh_5();//led tat chay tu ngoai vao trong,roi chay ra ngoai
void chuong_trinh_6();//
void chuong_trinh_7();
void chuong_trinh_8();


void main()
{
trisb=0x00;//cong b xuat du lieu


while(1)
{
chuong_trinh_1();delay_ms(250);
chuong_trinh_3();delay_ms(250);
chuong_trinh_4();delay_ms(250);
chuong_trinh_5();delay_ms(250);
chuong_trinh_6();delay_ms(250);
chuong_trinh_7();delay_ms(250);
chuong_trinh_8();delay_ms(250);
}
}

void chuong_trinh_1()
{
portb=0x00;
delay_ms(1000);
portb=0xFF;
delay_ms(1000);
}
void chuong_trinh_2()
{//led nhay sang tu trai qua phai ,tao tre 250ms)
temp=0xFF;
for(i=0;i<=8;i++)
{
portb=temp;
delay_ms(250);
temp>>=1;//
}
}
void chuong_trinh_3()
{//led sang dich tu phai sang trai
temp=0xFF;
for(i=0;i<=8;i++)
{
portb=temp;
delay_ms(250);
temp<<=1;
}
}
void chuong_trinh_4()
{
portb=0xAA;
delay_ms(500);
portb=0x55;
delay_ms(500);
}
void chuong_trinh_5()
{
portb=0x7E;delay_ms(150);
portb=0xBD;delay_ms(150);
portb=0xDB;delay_ms(150);
portb=0xE7;delay_ms(150);
portb=0xDB;delay_ms(150);
portb=0xBD;delay_ms(150);
portb=0x7E;delay_ms(150);
}
void chuong_trinh_6()
{
temp=0xFF;
for(i=0;i<=8;i++)
{
portb=temp;
delay_ms(250);
temp=temp>>1;
}
}
void chuong_trinh_7()
{
portb=0xFE;delay_ms(150);
portb=0xFD;delay_ms(150);
portb=0xFB;delay_ms(150);
portb=0xF7;delay_ms(150);
portb=0xEF;delay_ms(150);
portb=0xDF;delay_ms(150);
portb=0xBF;delay_ms(150);
portb=0x7F;delay_ms(150);
}
void chuong_trinh_8()
{
portb=0x7F;delay_ms(150);
portb=0xBF;delay_ms(150);
portb=0xDF;delay_ms(150);
portb=0xEF;delay_ms(150);
portb=0xF7;delay_ms(150);
portb=0xFB;delay_ms(150);
portb=0xFD;delay_ms(150);
portb=0xFE;delay_ms(150);
}

=======================
mình dùng pic 16f84a ,thạch anh ngoài 10Mhz để đièu khiển nháy 8 led cổng B0->b7
mình định nghĩa chương trình con và gọi nó sao ko được vậy .xin các anh em chỉ giúp mình ,kiến thức C còn hạn chế lắm
vuthien86 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-02-2009, 03:48 PM   #2
nguyennam8888
Đệ tử 3 túi
 
Tham gia ngày: Dec 2008
Bài gửi: 50
:
mình nghĩ bạn nên viết main sau các chương trình con.
Chúc bạn thành Công
nguyennam8888 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-02-2009, 04:20 PM   #3
xuanhiendk2
Đệ tử 3 túi
 
Tham gia ngày: Jan 2009
Bài gửi: 52
:
#include "C:\Program Files\PICC\Devices\h.h"
int8 i; //khai bao bien chay vong lap i
int8 temp;
//khai bao cac chuong trinh con ()
void chuong_trinh_1();//nhap nhay cong B
void chuong_trinh_2();//led sang tu trai qua phai
void chuong_trinh_3();//led sang tu phai qua trai
void chuong_trinh_4();//nhap nhay xen ke
void chuong_trinh_5();//led tat chay tu ngoai vao trong,roi chay ra ngoai
void chuong_trinh_6();//
void chuong_trinh_7();
void chuong_trinh_8();
#byte port_B=0x06


void main()
{

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
set_tris_B(0x00);//cong b xuat du lieu


while(1)
{
chuong_trinh_1(); delay_ms(250);
chuong_trinh_3();delay_ms(250);
chuong_trinh_4();delay_ms(250);
chuong_trinh_5();delay_ms(250);
chuong_trinh_6();delay_ms(250);
chuong_trinh_7();delay_ms(250);
chuong_trinh_8();delay_ms(250);
}

}

void chuong_trinh_1()
{
port_b=0x00;
delay_ms(50);
port_b=0xFF;
delay_ms(50);
}
void chuong_trinh_2()
{//led nhay sang tu trai qua phai ,tao tre 250ms)
temp=0xFF;
for(i=0;i<=8;i++)
{
port_b=temp;
delay_ms(50);
temp>>=1;//
}
}
void chuong_trinh_3()
{//led sang dich tu phai sang trai
temp=0xFF;
for(i=0;i<=8;i++)
{
port_b=temp;
delay_ms(50);
temp<<=1;
}
}
void chuong_trinh_4()
{
port_b=0xAA;
delay_ms(50);
port_b=0x55;
delay_ms(50);
}
void chuong_trinh_5()
{
port_b=0x7E;delay_ms(150);
port_b=0xBD;delay_ms(150);
port_b=0xDB;delay_ms(150);
port_b=0xE7;delay_ms(150);
port_b=0xDB;delay_ms(150);
port_b=0xBD;delay_ms(150);
port_b=0x7E;delay_ms(150);
}
void chuong_trinh_6()
{
temp=0xFF;
for(i=0;i<=8;i++)
{
port_b=temp;
delay_ms(250);
temp=temp>>1;
}
}
void chuong_trinh_7()
{
port_b=0xFE;delay_ms(50);
port_b=0xFD;delay_ms(50);
port_b=0xFB;delay_ms(50);
port_b=0xF7;delay_ms(50);
port_b=0xEF;delay_ms(50);
port_b=0xDF;delay_ms(50);
port_b=0xBF;delay_ms(50);
port_b=0x7F;delay_ms(50);
}
void chuong_trinh_8()
{
port_b=0x7F;delay_ms(50);
port_b=0xBF;delay_ms(50);
port_b=0xDF;delay_ms(50);
port_b=0xEF;delay_ms(50);
port_b=0xF7;delay_ms(50);
port_b=0xFB;delay_ms(50);
port_b=0xFD;delay_ms(50);
port_b=0xFE;delay_ms(50);
}
xuanhiendk2 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-02-2009, 06:13 PM   #4
vmt.dttt
Đệ tử 1 túi
 
Tham gia ngày: Nov 2007
Bài gửi: 11
:
====>> bạn dùng trình dịch CCS
Chắc là file thư viện của bạn chưa khai báo:
#byte portb=0x06 ///// Tra datasheet

và: dùng set_tris_b(0x00); //// Not use: "trisb"

Trong chương trình main:
khai báo while (true) //// not use: "while(1)"
vmt.dttt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-02-2009, 07:57 PM   #5
picpen
Đệ tử 5 túi
 
picpen's Avatar
 
Tham gia ngày: Jun 2008
Bài gửi: 112
:
Trích:
mình định nghĩa chương trình con và gọi nó sao ko được vậy .xin các anh em chỉ giúp mình ,kiến thức C còn hạn chế lắm
Bạn đã mắc một lỗi trong trương trình , khi bạn khai báo nguyên mẫu các chương trình con . Vì vậy khi bạn nhấn phím F9 để dịch thì chương trình sẽ báo lỗi

Code:
//khai bao cac chuong trinh con ()
void chuong_trinh_1();//nhap nhay cong B
void chuong_trinh_2();//led sang tu trai qua phai
void chuong_trinh_3();//led sang tu phai qua trai
void chuong_trinh_4();//nhap nhay xen ke
void chuong_trinh_5();//led tat chay tu ngoai vao trong,roi chay ra ngoai
void chuong_trinh_6();//
void chuong_trinh_7();
void chuong_trinh_8();
Bạn phải khai báo như sau mới đúng :


//khai bao cac chuong trinh con ()
void chuong_trinh_1(void);//nhap nhay cong B
void chuong_trinh_2(void);//led sang tu trai qua phai
void chuong_trinh_3(void);//led sang tu phai qua trai
void chuong_trinh_4(void);//nhap nhay xen ke
void chuong_trinh_5(void);//led tat chay tu ngoai vao trong,roi chay ra ngoai
void chuong_trinh_6(void);//
void chuong_trinh_7(void);
void chuong_trinh_8(void);

................... CHÚC BẠN THÀNH CÔNG ..................
__________________
** xin hãy cho tôi là tượng đá
** Để muôn đời không nhớ thương ai ..!!
picpen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-02-2009, 10:15 AM   #6
xuanhiendk2
Đệ tử 3 túi
 
Tham gia ngày: Jan 2009
Bài gửi: 52
:
Mình đã sửa cho bạn rồi và mình đã chạy thử thấy ok. Các ý kiến của vmt.dttt và picpen theo mình nghĩ ko đúng lắm.
while(1) vẫn được. void chuong_trinh_1(); vẫn được. Bạn có thể xem lại code mình đã gửi cho bạn. Chúc may mắn
xuanhiendk2 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-02-2009, 12:35 AM   #7
picpen
Đệ tử 5 túi
 
picpen's Avatar
 
Tham gia ngày: Jun 2008
Bài gửi: 112
:
Trích:
Nguyên văn bởi xuanhiendk2 View Post
Mình đã sửa cho bạn rồi và mình đã chạy thử thấy ok. Các ý kiến của vmt.dttt và picpen theo mình nghĩ ko đúng lắm.
while(1) vẫn được. void chuong_trinh_1(); vẫn được. Bạn có thể xem lại code mình đã gửi cho bạn. Chúc may mắn
Uh , cám ơn bạn đã nhắc nhở , đúng là mình đã nhầm thật . Chết thật , lâu không vào diễn đàn lên " kiếm pháp " bị mai một dần . Đúng là " văn ôn võ luyện "
__________________
** xin hãy cho tôi là tượng đá
** Để muôn đời không nhớ thương ai ..!!
picpen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-02-2009, 11:31 AM   #8
xuanhiendk2
Đệ tử 3 túi
 
Tham gia ngày: Jan 2009
Bài gửi: 52
:
Trích:
Nguyên văn bởi picpen View Post
Uh , cám ơn bạn đã nhắc nhở , đúng là mình đã nhầm thật . Chết thật , lâu không vào diễn đàn lên " kiếm pháp " bị mai một dần . Đúng là " văn ôn võ luyện "
Bạn picpen có câu châm ngôn nghe hay thế! Là man hay woman mà nghe....
xuanhiendk2 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-02-2009, 12:13 PM   #9
picpen
Đệ tử 5 túi
 
picpen's Avatar
 
Tham gia ngày: Jun 2008
Bài gửi: 112
:
Trích:
Nguyên văn bởi xuanhiendk2 View Post
Bạn picpen có câu châm ngôn nghe hay thế! Là man hay woman mà nghe....
Bạn học lớp DK2 à ?? vậy thì mình cùng trường rồi nha . Bạn vừa ra trường , giờ làm ở đâu vậy ??
__________________
** xin hãy cho tôi là tượng đá
** Để muôn đời không nhớ thương ai ..!!
picpen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-03-2009, 12:48 PM   #10
vmt.dttt
Đệ tử 1 túi
 
Tham gia ngày: Nov 2007
Bài gửi: 11
:
Trích:
Nguyên văn bởi xuanhiendk2 View Post
Mình đã sửa cho bạn rồi và mình đã chạy thử thấy ok. Các ý kiến của vmt.dttt và picpen theo mình nghĩ ko đúng lắm.
while(1) vẫn được. void chuong_trinh_1(); vẫn được. Bạn có thể xem lại code mình đã gửi cho bạn. Chúc may mắn

Ấy ấy... đừng vội kết luận như thế;
Một bài toán có nhiều cách giải quyết...
- while(1) // vẫn được <-- tớ có bảo ko được đâu

----------
Tớ xài TRUE trong TH trên là có lý do;
Ấy có biết không ????
vmt.dttt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-03-2009, 01:36 PM   #11
xuanhiendk2
Đệ tử 3 túi
 
Tham gia ngày: Jan 2009
Bài gửi: 52
:
Trích:
Nguyên văn bởi vmt.dttt View Post
Ấy ấy... đừng vội kết luận như thế;
Một bài toán có nhiều cách giải quyết...
- while(1) // vẫn được <-- tớ có bảo ko được đâu

----------
Tớ xài TRUE trong TH trên là có lý do;
Ấy có biết không ????
Hì! Mình mới học Pic nên kiến thức còn hạn chế! Mình không biết bạn định dùng While(true) để làm gì cả. Mình thấy chương trình của bạn vuthien viết while(1) và cần sửa để nó chạy được thì mình chỉ có vài lời khuyên đó thôi. Nói chung khi sửa cho người khác thì nên giữ nguyên Code. He he!!!!
xuanhiendk2 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-02-2009, 07:37 PM   #12
vuthien86
Đệ tử 1 túi
 
Tham gia ngày: Feb 2009
Bài gửi: 13
:
mình sủa dc rồi .cảm ơn các bạn nhiều
vuthien86 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-02-2009, 12:38 PM   #13
xuanhiendk2
Đệ tử 3 túi
 
Tham gia ngày: Jan 2009
Bài gửi: 52
:
Okie thế chắc bạn biết mình rồi! Bạn tên gì và học lớp nào thế? Mình thì vẫn đang thất nghiệp đây! Hi hi! Xem có chỗ nào giới thiệu cho mình với!!!
xuanhiendk2 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-03-2009, 01:11 PM   #14
PhamDucHung87
Nhập môn đệ tử
 
Tham gia ngày: Mar 2009
Bài gửi: 3
:
anh Xuan Hien a.em dang muốn tim hiểu về PIC ứng dụng cụ thể là đo độ ẩm và báo cháy anh có tài liệu gì liên quan thì gửi cho em với.em cam ơn anh.hòm thư của em là Phạm Đức Hung220987@gmail.com
PhamDucHung87 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 05:30 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam