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 Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 10-01-2009, 06:07 PM   #136
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
Bạn sửa lại code trong vòng while (1) của bạn thành như sau xem:
Code:
   while (1)
      {
         PORTB = PORTB | 0x0C;	//Bat cac bit RB2 va RB3
         delay_ms(1000);
         PORTB = PORTB & 0xF3;	//Tat cac bit RB2 va RB3
         delay_ms(1000);
      }
Bạn đọc thêm về hoạt động read-modify-write đã được nói đến nhiều lần trên diễn đàn, chẳng hạn ở đây:
http://www.picvietnam.com/forum/showthread.php?p=4613

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
Old 10-01-2009, 08:06 PM   #137
vdtk3
Đệ tử 2 túi
 
Tham gia ngày: Jun 2007
Bài gửi: 30
:
Cảm ơn bác Namqn nhiều em thử được rồi ! Mấy hôm trước em cũng viết vậy nhưng vẫn chạy bình thường, cứ tưởng là máy bị Virut cơ chứ .
vdtk3 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-01-2009, 08:52 PM   #138
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 vdtk3 View Post
Cảm ơn bác Namqn nhiều em thử được rồi ! Mấy hôm trước em cũng viết vậy nhưng vẫn chạy bình thường, cứ tưởng là máy bị Virut cơ chứ .
Với tốc độ xung clock tương đối thấp, bạn có thể gặp may rằng các hiện tượng liên quan đến hoạt động read-modify-write chưa đủ mạnh để làm cho PIC của bạn chạy không đú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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-01-2009, 04:40 AM   #139
ga_dientu
Nhập môn đệ tử
 
Tham gia ngày: Dec 2008
Bài gửi: 7
:
Code:
#include <16F877A.h>
#fuses NOWDT,PUT,XT,NOPROTECT
#use delay(clock=4000000)
#use fast_io(b)
#byte portb=0x06
#define led pin_B0
int16 count;
int8 a;
//Chuong trinh ngat TMR0
#int_timer0
void interrupt_timer0()
{
set_timer0(6);
++count;
if(count==2000)
   {
count=0;
a=a<<1;  // dich trai a 1bit
   }
if(a==256)
   {
a=1;
count=0;
   }
}
//Chuong trinh chinh
main()
{
set_tris_b(0);
enable_interrupts(global);
enable_interrupts(int_timer0);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2);
set_timer0(6);
count=0;
a=1;
while(true)
   {
portb=a;
   }
}
Đây là chương trình dùng ngắt Timer0 định thời 1s của anh NHH,mong a chị giải đáp dùng em làm sao tính được thời gian định thời trong chương trình này

thay đổi nội dung bởi: namqn, 14-01-2009 lúc 07:00 AM.
ga_dientu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-01-2009, 08:09 PM   #140
ga_dientu
Nhập môn đệ tử
 
Tham gia ngày: Dec 2008
Bài gửi: 7
:
Việc tính toán thời gian định thời của Timer em đã hiểu, chỉ còn vấn đề tại sao lại set_timer0 (6). Mong sớm nhận được câu trả lời .
ga_dientu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-01-2009, 08:53 PM   #141
manhha2799
Đệ tử 5 túi
 
Tham gia ngày: Apr 2007
Bài gửi: 121
:
Send a message via Yahoo to manhha2799
set_timer0 (6) là để cho chương trình đếm từ bắt đầu từ số 6 chứ không phải là số 0. Tức là mỗi lần tràn là 256-6=250.
__________________
Bảng ledsigns chất lượng cao...
http://www.ledviet.info - manhha2700@yahoo.com
Đt:0949299699

thay đổi nội dung bởi: manhha2799, 19-01-2009 lúc 09:28 AM.
manhha2799 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-01-2009, 09:45 PM   #142
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 manhha2799 View Post
set_timer0 (6) là để cho chương trình đếm từ bắt đầu từ số 6 chứ không phải là số 0. Tức là mỗi lần tràn là 256-6=200.
256 - 6 = 250!

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
Old 06-02-2009, 10:33 PM   #143
ga_dientu
Nhập môn đệ tử
 
Tham gia ngày: Dec 2008
Bài gửi: 7
:
Một số chương trình hiến thị LCD có viết là LCD = 0xC3 // vị trí hàng 2,cột 4//,em chưa hiểu mấy cách xác định vị trí này.
ga_dientu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-02-2009, 10:57 PM   #144
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 ga_dientu View Post
Một số chương trình hiến thị LCD có viết là LCD = 0xC3 // vị trí hàng 2,cột 4//,em chưa hiểu mấy cách xác định vị trí này.
Bạn tham khảo các tutorial về các module LCD, chẳng hạn như ở đây:
http://www.winpicprog.co.uk/pic_tutorial3.htm

Để đặt con trỏ màn hình LCD ở một vị trí nào đó, bạn sẽ dùng lệnh "Set Display Address", có bit 7 mang giá trị '1' (ứng với giá trị 0x80). 7 bit thấp hơn của lệnh sẽ xác định địa chỉ cần di chuyển con trỏ đến. Thông thường, hàng 1 của LCD có địa chỉ bắt đầu là 0x00, hàng 2 của LCD có địa chỉ bắt đầu là 0x40.

Do đó, cột 4 của hàng 2 sẽ có địa chỉ là 0x43. Như vậy cần xuất lệnh 0x80 + 0x43 = 0xC3 để di chuyển đến hàng 2, cột 4.

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
Old 05-03-2009, 10:34 PM   #145
thaithien
Đệ tử 7 túi
 
Tham gia ngày: Aug 2007
Bài gửi: 213
:
Em lục nhưng chưa thấy link download CCS.Ai biết chỉ dùm.Cám ơn
thaithien 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:17 AM   #146
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 thaithien View Post
Em lục nhưng chưa thấy link download CCS.Ai biết chỉ dùm.Cám ơn
Bạn tìm nhầm luồng rồi, luồng dưới đây mới là chỗ để tìm link download:
http://www.picvietnam.com/forum/showthread.php?t=958

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
Old 06-03-2009, 05:54 AM   #147
vietanh
Đệ tử 1 túi
 
Tham gia ngày: Dec 2005
Bài gửi: 20
:
đây này bản bản 4.084 http://rapidshare.com/files/176228329/CCS_4.084.RAR
con đây la bùa chú // http://rapidshare.com/files/176409172/Key_pcwhd.exe
vietanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-03-2009, 05:53 PM   #148
notbadday
Nhập môn đệ tử
 
Tham gia ngày: Oct 2007
Bài gửi: 5
:
Question Lỗi với khai báo #device *=16 ADC=10

Em đang viết chương trình sử dụng ADC 10 bit. Dùng khai báo #device *=16 ADC=10 nhưng bị báo lỗi. Đã thử ở CCS 4.057 và 4.084 nhưng đều báo lỗi (=> ko phải do phần mềm)
Đây là code của em nó:
Code:
#include <16F877A.h>
#include <stdlib.h>
#device *=16 ADC=10
#fuses XT,NOWDT,NOPROTECT,NOLVP

void main()
{
}
notbadday vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-03-2009, 09:03 PM   #149
vietanh
Đệ tử 1 túi
 
Tham gia ngày: Dec 2005
Bài gửi: 20
:
kiêm tra lại cai ##include <stdlib.h> cua bạn co trong thư viện không . không co thi xoa dong đó di dich ok

nếu không ban phai viết nhu thế nay thi moi đúng không bao sai
#include <16F877A.h>
#device *=16 ADC=10
#fuses XT,NOWDT,NOPROTECT,NOLVP
#include <stdlib.h>
void main()
{
}
vietanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-03-2009, 11:11 PM   #150
notbadday
Nhập môn đệ tử
 
Tham gia ngày: Oct 2007
Bài gửi: 5
:
Cám ơn bạn. Mình đã sửa lại được rồi. Khai báo #device ngay dưới dòng #include <16F877A.h> thì không bị báo lỗi nữa. Có lẽ CCS bắt phải theo thứ tự vậy :-/
Code:
#include <16F877A.h>
#device *=16 ADC=10
#include <stdlib.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP

void main()
{
}

thay đổi nội dung bởi: notbadday, 08-03-2009 lúc 11:15 PM. Lý do: chèn code
notbadday vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ðiều Chỉnh
Xếp Bà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à 09:41 PM.


Đượ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