PIC Vietnam

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

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

Lỗi lập trình ngôn ngữ cấp cao Những lỗi trường gặp trong lập trình. Khóa luồng khi bug được lỗi.

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 30-07-2009, 06:20 PM   #1
Em_ku
Nhập môn đệ tử
 
Tham gia ngày: Jul 2009
Bài gửi: 10
:
Khó hiểu thật!!! Các bác giúp em với

Em viết đoạn code như sau. Theo em nghĩ và cách viết thì chân RA4 phải được xuất ra 5V, chân RẠ cũng xuất ra 5V. Nhưng trong chương trình proteus thì nó xuất RA4=0V còn RA5=5V. Sao lạ vậy?? Hay có lỗi gì khi dịch sang file hex
code:
Code:
#include <16f877a.h>
#use delay(clock=4000000)
#byte portb=0x06
#byte trisb=0x86
#byte porta=0x05
//#use fast_IO(a)
#bit RA4=porta.4
#bit RA5=porta.5

main ()
{
set_tris_a(0b11001111);
while (1)
{
RA4=1;
RA5=1;
portb=0xF9;
delay_ms(10);
}
}

thay đổi nội dung bởi: phamminhtuan, 30-07-2009 lúc 07:57 PM. Lý do: vui lòng để code vào thẻ code (#)
Em_ku vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-07-2009, 08:54 PM   #2
bien_van_khat
...Damned...
 
bien_van_khat's Avatar
 
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
:
Đã trả lời ở đây. Diễn đàn đã hoạt động khá lâu, do đó hầu hết các vấn đề thường gặp đều đã được hỏi, các bạn nên tận dụng công cụ search.

http://www.picvietnam.com/forum/show...drain#post3971
__________________
- Xin đọc trước khi post bài

Xin đặt code trong thẻ [ code ] [ /code ]
bien_van_khat vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-07-2009, 11:18 PM   #3
hoc_picpicpic
Đệ tử 6 túi
 
Tham gia ngày: Feb 2009
Bài gửi: 127
:
chân RA4 là cực máng hở , nên muốn có 5V thì phải mắc thêm điện trở (4.7K)kéo lên
+5V
hoc_picpicpic vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-08-2009, 03:16 AM   #4
Em_ku
Nhập môn đệ tử
 
Tham gia ngày: Jul 2009
Bài gửi: 10
:
Muốn có 5V thì phải mắc thêm điện trở 4k7 kéo lên là sao ạ?? vì trong mạch dùng chương trình mô phỏng proteus của em đã có điện trở 4k7 rồi ạ mà nó vẫn kô lên đc 5V.
Bác giải thích rõ hơn giúp em vơi. Em cũng đọc mấy cái link bác trên đưa nhưng cũng kô hiểu thế nào là cực máng hở cũng như cái chân RA4.
Bên cạnh đây bác xem giúp em cái đoạn chương trình này với. Đề là xuất ra 4leg 7 đoạn với các số từ 1 đến 9999.
Theo em nghĩ là đúng rồi mà sao vẫn kô ra được như ý
code:
Code:
#include <C:\Program Files\PICC\Devices\16f877a.h>
#fuses HS,NOWDT
#use delay(clock=4000000)
#byte trisb=0x86   
#byte portb=0x06
#byte trisd=0x88   
#byte portd=0x08
#use fast_IO(b)
#use fast_IO(d)
#bit RD0=portd.0
#bit RD1=portd.1
#bit RD2=portd.2
#bit RD3=portd.3
int A[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void display (int so)
{
int i,hngan,htram,hchuc,hdonvi,du1,du2;
hngan=so/1000;
du1=so%1000;
htram=du1/100;
du2=du1%100;
hchuc=du2/10;
hdonvi=du2%10;
for (i=0;i<25;i++)
 {
 RD0=0; RD1=1; RD2=1; RD3=1; 
 portb=A[hngan]; delay_ms(10);
RD0=1; RD1=0; RD2=1; RD3=1; 
 portb=A[hchuc]; delay_ms(10);
 RD0=1; RD1=1; RD2=0; RD3=1; 
 portb=A[hchuc]; delay_ms(10);
 RD0=1; RD1=1; RD2=1; RD3=0; 
 portb=A[hdonvi]; delay_ms(10);
 }
}
void main ()
{
int i;
set_tris_d(0x00);
set_tris_b(0x00);
while (1)
{
for (i=0;i<=9999;i++)
 {
 display (i);
 }
}
}

thay đổi nội dung bởi: namqn, 02-08-2009 lúc 10:14 AM. Lý do: định dạng code
Em_ku vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-08-2009, 10:22 AM   #5
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi Em_ku View Post
Muốn có 5V thì phải mắc thêm điện trở 4k7 kéo lên là sao ạ?? vì trong mạch dùng chương trình mô phỏng proteus của em đã có điện trở 4k7 rồi ạ mà nó vẫn kô lên đc 5V.
Bác giải thích rõ hơn giúp em vơi. Em cũng đọc mấy cái link bác trên đưa nhưng cũng kô hiểu thế nào là cực máng hở cũng như cái chân RA4.
Bên cạnh đây bác xem giúp em cái đoạn chương trình này với. Đề là xuất ra 4leg 7 đoạn với các số từ 1 đến 9999.
Theo em nghĩ là đúng rồi mà sao vẫn kô ra được như ý
code:
...
Bạn hãy đọc tài liệu hướng dẫn của CCS C, mục "Basic and Special Types" (trang 37, dùng con số phía dưới trang). Mục đó có nêu rõ kiểu int của C chuẩn sẽ được CCS C hiểu là int8, tức là một kiểu có kích thước 8-bit, chỉ biểu diễn được các giá trị từ 0 đến 255. Do đó, code của bạn sẽ có nhiều chỗ chạy không như ý muốn.

Link để tải tài liệu hướng dẫn dưới đây, trong trường hợp bạn chưa biết:
http://www.ccsinfo.com/downloads/ccs_c_manual.pdf

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
namqn 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à 12:59 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