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

Ðề tài đã khoá
 
Ðiều Chỉnh Xếp Bài
Old 06-10-2006, 05:40 PM   #1
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Trích:
Nguyên văn bởi son_um View Post
Trong đoạn code về quét bàn phím, có lệnh sau e không hiếu,mong được các bác giải thích: IF((RBIF)&&(RBIE)....

#int_RB
void ngat_RB()
{
if((RBIF)&&(RBIE))
{
{
if(RB4&&RB0)
a=dig[0];
}
{
if(RB4&&RB1)
a=dig[4];
Thân.
Phép toán && là phép and logic.Chắc là không phải giải thích về phép toán này.
__________________
Ngày mai bắt đầu từ ngày hôm nay

Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này:
http://www.picvietnam.com/forum//showthread.php?t=1263
nhh vẫn chưa có mặt trong diễn đàn  
Old 10-10-2006, 10:24 AM   #2
mp3pic
Nhập môn đệ tử
 
Tham gia ngày: Oct 2006
Bài gửi: 1
:
Send a message via Yahoo to mp3pic
cho biêt có sự khác nào giữa pic16f877-20p với 16f877a không
mp3pic vẫn chưa có mặt trong diễn đàn  
Old 11-11-2006, 01:18 AM   #3
vdt
Đệ tử 1 túi
 
Tham gia ngày: Sep 2005
Bài gửi: 15
:
Trích:
Nguyên văn bởi mp3pic View Post
cho biêt có sự khác nào giữa pic16f877-20p với 16f877a không
Bạn có thể tham khảo tài liệu sau http://ww1.microchip.com/downloads/e...Doc/39591a.pdf
Chúc vui
vdt vẫn chưa có mặt trong diễn đàn  
Old 11-10-2006, 01:56 PM   #4
bantrang25
Nhập môn đệ tử
 
Tham gia ngày: Oct 2006
Bài gửi: 2
:
Bác nào có chương trình mẫu viết cho ADC 16bit ngoài, và ctr viết cho Rom ngoài bằng CCS ko up lên cho anh em học với.Thêm nữa là chưa thấy bác namqn hướng dẫn về làm ctr Calibrate trong quá trình ghi vào Rom: Ví dụ như đo nhiệt độ bằng can nhiệt thì nên dung bảng calip để đo thực tế rồi ghi vào Rom hay hơn là dùng công thức . Mình nghĩ đây cũng là một vấn đề mọi người nên quan tâm, có ai đã làm rồi thì có thể hướng dẫn cho moi người nhé!
bantrang25 vẫn chưa có mặt trong diễn đàn  
Old 04-12-2006, 01:26 PM   #5
alamanda
Đệ tử 1 túi
 
alamanda's Avatar
 
Tham gia ngày: Nov 2005
Bài gửi: 19
:
ha ha,tui gỡ version 4.013,và cài version 3.249,rồi dịch bài của bác nhh thì khg có lỗi nào cả.Pó tay.Có ai bít giải thích giùm.
alamanda vẫn chưa có mặt trong diễn đàn  
Old 23-12-2006, 09:06 AM   #6
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
LCD và led 7 đoạn tất nhiên là khác nhau rồi.

Để thực hiện tốt giải mã matrix phím, bác phải có giải pháp chống nhiễu (run phím) bằng phần cứng, hoặc phần mềm, thông thường là dùng phần mềm. Code bên trên chưa có chống nhiễu .Để khi nào tôi gởi code cho các bác !
__________________
Ngày mai bắt đầu từ ngày hôm nay

Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này:
http://www.picvietnam.com/forum//showthread.php?t=1263
nhh vẫn chưa có mặt trong diễn đàn  
Old 24-12-2006, 05:03 PM   #7
LEO-XBS
Đệ tử 1 túi
 
LEO-XBS's Avatar
 
Tham gia ngày: Oct 2005
Bài gửi: 21
:
mình đang viết chương trình cho Robot bằng C nhưng khi chay thì có một số đoạn bị bỏ qua. Thỉnh thoảng thì lại chạy đúng. Các cao thủ về CCS C có thể giải thích giúp mình được ko?
__________________
=============================
________ Leo XBS _________
E-mail:leo_xbs1408@yahoo.com
"Đi một ngày đàng học một sàng khôn"
LEO-XBS vẫn chưa có mặt trong diễn đàn  
Old 25-12-2006, 07:57 AM   #8
minhpic
Đệ tử 9 túi
 
Tham gia ngày: Nov 2005
Bài gửi: 99
:
bạn phải mói cụ thể hơn công việc của bạn cũng như chương trình thì mọi người mới có thể giúp đỡ chứ
minhpic vẫn chưa có mặt trong diễn đàn  
Old 01-01-2007, 02:07 PM   #9
LEO-XBS
Đệ tử 1 túi
 
LEO-XBS's Avatar
 
Tham gia ngày: Oct 2005
Bài gửi: 21
:
các bác xem thử một chương trình nhé. ở đây em chỉ viết các modul chương trình con thực hiện chức năng của robot còn chương trình chính thì sẽ gọi các chương trình con tùy theo mình muốn dùng chức năng nào của robot.
Code:
//**************************************************************
/////////*FILENAME: CHUONG TRINH DIEU KHIEN ROBOT*//////////////
/////////*HARDWARE: PIC16F877                    *//////////////
/////////*DATE:  19-Nov-06 09:40                 *//////////////
/////////*CCS PCM C Compiler, Version 3.227      *//////////////
/////////*NGUOI THUC HIEN: LEO-XBS               *//////////////
//**************************************************************
#include <16F877A.h>
#include <DEFS_16F877A.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#use fast_io(e)
//****************************************
//////DINH NGHIA CAC CHAN VA CAC CONG/////
//****************************************
#define dc_trai1 rc1
#define dc_trai2 rb1
#define dc_phai1 rc2
#define dc_phai2 rb3
#define dc_nang1 rb4
#define dc_nang2 rb5
#define dc_day1 rb6
#define dc_day2 rb7
#define dc_kep1 rd0
#define dc_kep2 rd1
#define sw1 rc0
//*******************************************
///////KHAI BAO CAC HAM VA BIEN//////////////
//*******************************************
void setup();
void tien();
void lui();
void dung();
void dk_tien();
void sang_phai();
void sang_trai();
void quay_phai();
void quay_trai();
void dieu_khien();
int led_thu();
void nang();
void ha();
void kep();
void nha();
void day();
void thu();
void program1();
void program2();
int dem,led;
const unsigned char lech_phai[7]={0b00001000,0b00010000,0b00011000,0b00100000,0b00101000,0b00110000,0b00111000};
const unsigned char lech_trai[7]={0b00000001,0b00000010,0b00000011,0b00000100,0b00000101,0b00000110,0b00000111};
const unsigned char nhieu[50]={0b00000000,0b00001001,0b00001010,0b00001011,0b00001100,0b00001101,0b00001110,0b00010001,\
                               0b00010010,0b00010011,0b00010100,0b00010101,0b00010110,0b00011001,0b00011010,\
                               0b00011100,0b00100001,0b00100010,0b00100011,0b00100100,0b00100101,0b00100110,\
                               0b00101001,0b00101010,0b00101100,0b00110001,0b00110010,0b00110100,0b00011110,\
                               0b00111111,0b00111011,0b00111101,0b00111110,0b00111001,0b00111010,0b00111100,\
                               0b00110111,0b00101111,0b00011111,0b00100111,0b00010111,0b00001111,0b00110011,\
                               0b00110101,0b00110110,0b00101011,0b00101101,0b00101110,0b00011011,0b00011101};
//*****************************************************************************************************************
/////////////////////////////////CHUONG TRINH CHINH////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
void main()
{
 setup();
}
//*****************************************************************************************************************
///////////////////////////////////CHUONG TRINH 1//////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
void program1()
{
  while(true)
  {
     dieu_khien();
  }
}
//****************************************************************************************************************
//////////////////////////CAC CHUONG TRINH CON////////////////////////////////////////////////////////////////////
//****************************************************************************************************************
void setup()
{
 set_tris_a(0b00111111);
 set_tris_b(0b00000101);
 set_tris_c(0b11111001);
 set_tris_d(0);
 set_tris_e(0b00000111);
 portb=0;
 portd=0;
 led=0;
 dem=0;
 dc_trai1=0;
 dc_phai1=0;
 while(true){
  if(sw1==0) program1();
  }
}
//***********************************************
void dieu_khien()
{
 led=led_thu();
 switch(led)
 {
  case 0: dk_tien(); break;
  case 01: sang_phai(); break;
  case 02: sang_trai(); break;
 }
 if (re0) ++dem;
}
//*************************************************
void tien()
{
 dc_trai1=1;
 dc_trai2=0;
 dc_phai1=1;
 dc_phai2=0;
 delay_ms(500);
}
//**************************************************
void dk_tien()
{
 while(led_thu()==0)
 {
  dc_trai1=1;
  dc_trai2=0;
  dc_phai1=1;
  dc_phai2=0;
 }
}
//**************************************************
void lui()
{
 dc_trai1=0;
 dc_trai2=1;
 dc_phai1=0;
 dc_phai2=1;
 delay_ms(1000);
}
//**************************************************
void sang_phai()
{
 setup_ccp1(CCP_PWM);
 setup_ccp2(CCP_PWM);
 setup_timer_2(T2_DIV_BY_16, 127, 1);
 while(led_thu()==1)
 {
 set_pwm2_duty(1023);
 set_pwm1_duty(400);
 }
 setup_ccp1(CCP_OFF);
 setup_ccp2(CCP_OFF);
}
//**************************************************
void sang_trai()
{
 setup_ccp1(CCP_PWM);
 setup_ccp2(CCP_PWM);
 setup_timer_2(T2_DIV_BY_16, 127, 1);
 while(led_thu()==2)
 {
 set_pwm2_duty(400);
 set_pwm1_duty(1023);
 }
 setup_ccp1(CCP_OFF);
 setup_ccp2(CCP_OFF);
}
//**************************************************
void quay_phai()
{
 while(ra1>0){
 dc_trai1=1;
 dc_trai2=0;
 dc_phai1=0;
 dc_phai2=1;
 }
}
//**************************************************
void quay_trai()
{
 while(ra4>0){
 dc_trai1=0;
 dc_trai2=1;
 dc_phai1=1;
 dc_phai2=0;
 }
}
//**************************************************
void dung()
{
 dc_trai1=1;
 dc_trai2=1;
 dc_phai1=1;
 dc_phai2=1;
 delay_ms(1000);
}
//**************************************************
void nang()
{
 dc_nang1=1;
 dc_nang2=0;
 delay_ms(1000);
}
//**************************************************
void ha()
{
 dc_nang1=0;
 dc_nang2=1;
 delay_ms(1000);
}
//**************************************************
void day()
{
 dc_day1=1;
 dc_day2=0;
 delay_ms(1000);
}
//*************************************************
void thu()
{
 dc_day1=0;
 dc_day2=1;
 delay_ms(1000);
}
//*************************************************
void kep()
{
 dc_kep1=1;
 dc_kep2=0;
 delay_ms(1000);
}
//*************************************************
void nha()
{
 dc_kep1=0;
 dc_kep2=1;
 delay_ms(1000);
}
//*************************************************
int led_thu()
{
 int i;
 for (i=0;i<7;i++)
 {
     if (porta==lech_trai[i]) return(1);
     else if (porta==lech_phai[i]) return(2);
 }
 for (i=0;i<50;i++)
 {
     if(porta==nhieu[i]) return(0);
 }
}
namqn: bạn nhớ dùng các tag [ code] và [ /code] để bọc các đoạn mã nguồn, như vậy sẽ dễ đọc hơn (nhớ là các tag không có khoảng trắng nhé).
__________________
=============================
________ Leo XBS _________
E-mail:leo_xbs1408@yahoo.com
"Đi một ngày đàng học một sàng khôn"

thay đổi nội dung bởi: namqn, 01-01-2007 lúc 09:40 PM.
LEO-XBS vẫn chưa có mặt trong diễn đàn  
Old 23-01-2007, 11:49 AM   #10
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Đây là khai báo địa chỉ của thanh ghi portB và thanh ghi intcon. Thường thì mỗi thanh ghi có một địa chỉ, giống như số nhà ấy, bạn khai báo nhầm địa chỉ của nó, nghĩa là bạn vào nhầm nhà rồi còn gì.

Với 16F877A
PORTB : địa chỉ 06h
INTCON : địa chỉ 0Bh

Vì trong file 16F877A.h của CCS C không có khai báo tường tận như trong các file .inc của Microchip, muốn sử dụng cho tiện thì khai báo thêm vào. Bạn mở file .h của con pic đang làm việc ra xem người ta đã khai báo những gì rồi.
__________________
Ngày mai bắt đầu từ ngày hôm nay

Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này:
http://www.picvietnam.com/forum//showthread.php?t=1263
nhh vẫn chưa có mặt trong diễn đàn  
Old 23-01-2007, 02:12 PM   #11
giaosucan
Đệ tử 1 túi
 
Tham gia ngày: Jan 2006
Bài gửi: 17
:
Nguyên văn bởi ngoalongdochanh
Cho toi hoi tai sao khi khai bao:
#device PIC16F877 *=16 ADC=10

thi CCSC bao loi: "Can not change device type this far into the code"
Cach khac phuc

minh cung hay gap loi nay ,ko bit ly do la seo ????
__________________
TRUNG TÂM ĐÀO TẠO ĐIỆN TỬ VÀ TỰ ĐỘNG HOÁ MTC
MTC khai giảng khóa mới
http://blog.360.yahoo.com/blog-kHh38....lgCr0J4220m40
giaosucan vẫn chưa có mặt trong diễn đàn  
Old 25-01-2007, 11:01 AM   #12
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Trích:
Nguyên văn bởi giaosucan View Post
Nguyên văn bởi ngoalongdochanh
Cho toi hoi tai sao khi khai bao:
#device PIC16F877 *=16 ADC=10

thi CCSC bao loi: "Can not change device type this far into the code"
Cach khac phuc

minh cung hay gap loi nay ,ko bit ly do la seo ????
Nguyên nhân đây:
Trích:
Nguyên văn bởi ngoalongdochanh
do lần trước mình khai báo chưa đúng cách giữa 16f877A và *=16 đúng ra phải viết liền như bạn minh lại viết cách ra như thế này "16f877A *=16".
__________________
Ngày mai bắt đầu từ ngày hôm nay

Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này:
http://www.picvietnam.com/forum//showthread.php?t=1263
nhh vẫn chưa có mặt trong diễn đàn  
Old 26-01-2007, 12:59 AM   #13
giaosucan
Đệ tử 1 túi
 
Tham gia ngày: Jan 2006
Bài gửi: 17
:
vậy giữa CCS và HT-pic thì phần mềm được đánh giá ưu việt hơn
__________________
TRUNG TÂM ĐÀO TẠO ĐIỆN TỬ VÀ TỰ ĐỘNG HOÁ MTC
MTC khai giảng khóa mới
http://blog.360.yahoo.com/blog-kHh38....lgCr0J4220m40
giaosucan vẫn chưa có mặt trong diễn đàn  
Old 27-01-2007, 09:21 AM   #14
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Trích:
Nguyên văn bởi giaosucan View Post
vậy giữa CCS và HT-pic thì phần mềm được đánh giá ưu việt hơn
Kha kha...Cái này mọi người tranh luận nhiều rồi ! Nói nhiều đâu có được gì đâu.Dùng trình biên dịch nào cũng được, ai viết C chuẩn tốt thì chọn HT PIC, tớ là thực dụng nên dùng CCS C cho đỡ khổ.

Bên điện tử Việt Nam có luồng so sánh hai cái này đó, bác hứng thú thì qua đó xem.
__________________
Ngày mai bắt đầu từ ngày hôm nay

Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này:
http://www.picvietnam.com/forum//showthread.php?t=1263
nhh vẫn chưa có mặt trong diễn đàn  
Old 27-01-2007, 09:29 AM   #15
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
To anhoa1608: porb = 1,2,4,8 để set từng hàng lên mức 1. Chương trình đó dùng ngắt RB, chưa có chống nhiễu, bạn xem thêm ở đây: http://www.picvietnam.com/forum//showthread.php?t=839

Còn cái LCD đó, hồi trước hứng chí gắp từng ảnh lại đó .Bạn nào có LCD, kiểm tra thử mấy chương trình đó, cái LCD tớ lấy của thằng bạn về chạy thử chẳng thấy có tín hiệu gì cả, load mấy chương trình mẫu vào cũng chẳng có gì nốt, không biết làm cách nào để kiểm tra LCD đã chết hay còn sống nữa...
__________________
Ngày mai bắt đầu từ ngày hôm nay

Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này:
http://www.picvietnam.com/forum//showthread.php?t=1263
nhh vẫn chưa có mặt trong diễn đàn  
Ðề tài đã khoá


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

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
TUT về USART trong PIC16F877A mafd_47a MPASM 16 19-02-2025 05:32 AM
TUT ve I2C ( pic16f877a ) mafd_47a MPASM 28 28-01-2025 10:45 PM
Lập nhóm PIC16F877A nhh Cơ bản về vi điều khiển và PIC 285 08-03-2017 11:08 PM
Bộ so sánh và PWM cho PIC16F877A anhquangngai Cơ bản về vi điều khiển và PIC 24 08-09-2012 09:00 AM
Pic16f877a TỪ DỄ TỚi KhÓ ntc Cơ bản về vi điều khiển và PIC 373 23-05-2009 10:24 PM


Múi giờ GMT. Hiện tại là 04:42 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