PDA

View Full Version : CCS tiếng Việt update - I


txt
06-10-2005, 06:04 PM
_Bản CCS tiếng Việt mới , nhiều bổ sung , có cả PIC 18 .
_Do thời gian qua bận rộn nên tài liệu vẫn chưa đầy đủ , còn thiếu nhiều , nhưng do nhiều bạn đang tiếp cận PIC gởi mail kêu ca thiếu tài liệu CCS quá , tui post lên xem đỡ .
_Bản này chỉnh sửa nhiều phần đã đăng trong CCS tiếng Việt I . Bản cũ có nhiều sai sót , nay đã sửa lại , song bản mới này chắc chắn cũng có nhiều sai sót , bạn nào đã và đang làm PIC nếu thấy chỗ nào nói sai , thiếu sót , phiền bạn lên tiếng bổ sung . Thanks !

Never_Die
09-11-2005, 04:35 PM
Cảm ơn bác nhiều.
Cái này hay quá.

txt
30-11-2005, 09:09 AM
Hờ , tôi đang bổ sung phần mô phỏng CCS trong MPLAB nhưng khổ nỗi có nhiều cái chưa biết , đang cần giúp dỡ :
_Trong MPLAB làm sao mô phỏng xung vuông tần số f để cho vào 1 chân VDK và từ đó chương trình mô phỏng CCS bắt được để làm 1 điều gì đó . chả là tôi đang thử mô phỏng tính năng QEI trên 18F4431 cần 3 xung kích QEA , QEB ,INDX để kiểm tra chương trình .Lưu ý là mô phỏng chứ không dùng debug .

txt
06-02-2006, 04:25 PM
Sao kỳ vây ta? cái link mới biến mất tiêu rồi.
Vào :
www.picvietnam.com/download/Tutorial/CCS_tieng_Viet.pdf

meishun
18-12-2006, 11:03 AM
Xin hỏi anh txt là đã có CCS C tiếng Việt phần 2 chưa ạ? Phần một đọc rất dễ hiểu, mong sớm có phần hai cho nó trọn bộ.Cám ơn.

littlephoc
19-12-2006, 08:30 PM
Mình có 1 thắc mắc nhỏ: tại sao CCS phải mất công tạo ra hàm output_high(bit), output_low(bit), output_x(byte)? Trong khi có 1 số function register mình lại không thấy có hàm để can thiệp trực tiếp được mà mình phải tự #locate đến và gán giá trị bình thường như sử dụng những compiler khác (MPLAB C30, HT-PICC18) ?

txt
07-01-2007, 10:22 AM
#locate cho phép chương trình CCS có tính tùy biến cao , dể hiểu hơn và dễ đọc hơn cho bản thân người viết ( kể cả dân nghiệp dư ), nhưng vì vậy mà nó có vẻ không thích hợp lắm khi viết chương trình mà có nhiều người cùng tham gia viết ( làm theo nhóm cho chương trình lớn ) .Dường như CCS là chương trình mang tính bất quy tắc . . . Còn bọn MPLAB và HT thì quy củ hơn , theo chuẩn C hơn nhưng vì thế lại làm cho ngôn ngữ trở nên hàn lâm hơn , khó hiểu hơn .
output_low() / high : không có gì để nói
output_bit() : dùng khi lập trình đảo tín hiệu ra mà không cần biết trước đó là cao hay thấp .
output_x() : đặt ngõ ra cho nguyên 1 port
CCS phần 2 đang viết dở , chung quy cũng vì trước đó viết bằng VNI 8 bit , nay phải đổi sang unicode (cho vui ) :)

damhaicnn
24-11-2007, 04:13 PM
các anh cho em hoi một tẹo, em muốn dịch bít như sau mà sao nó lúc thì chạy mà lúc thì không. khó hiểu quá.
#include<16f877a.h>
#use delay(oscillator=8M)
int16 i,j,k;
void main()
{
set_tris_B(0);
while(1)
{k=0x00;
for(i=0xff;i>=0x01;i>>=1)
{k=k|i;output_B(k);delay_ms(300);}

nguyen.geo
24-11-2007, 09:10 PM
Chao bạn DAMHAICNN !
Theo mình thì đoạn code của bạn sau khi dịch xong nó sẽ chạy như sau : Bit RB7 luôn bằng 0; còn các bít còn lại của Port B không thay đổi luôn là 1. Thế bạn thấy nó chạy thế nào ?

toanck86
26-11-2007, 09:43 PM
sao lâu thấy Phần II thế TXT ơi :P

kid_1412ls
28-11-2007, 05:02 PM
#include <16f877a.h>
#use delay(oscillator=8M)
int8 const LED7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0}
int8 const time=15;
int8 i,j,L1,L2,L3,L4;
void main()
{ set_tris_B(0);set_tris_C(0);
while(1)
{ for(i=0;i<=59;i=i+1)
for(j=0;j<=59;j=j+1)
{ L1=(i/ 1)%10;
L2=(i/10)%10;
L3=(i/ 1)%10;
L4=(i/10)%10;
output_B(LED7[L1]); output_C(0); delay_ms(time); output_C(7);
output_B(LED7[L2]); output_C(1); delay_ms(time); output_C(7);
output_B(LED7[L3]); output_C(2); delay_ms(time); output_C(7);
output_B(LED7[L4]); output_C(3); delay_ms(time); output_C(7);



// bài này em dịch sai vài lỗi, các tiền bối giúp em với, em không hiểu sai ở đâu.

namqn
28-11-2007, 05:59 PM
Bạn nên cho biết bạn định làm gì, và post code đầy đủ, cũng như các thông báo lỗi mà bạn đã nhận được.

Thân,

kid_1412ls
28-11-2007, 07:14 PM
#include <16f877a.h>
#use delay(oscillator=8M)
int8 const LED7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0}
int8 const time=15;
int8 i,j,L1,L2,L3,L4;
void main()
{ set_tris_B(0);set_tris_C(0);
while(1)
{ for(i=0;i<=59;i=i+1)
for(j=0;j<=59;j=j+1)
{ L1=(i/ 1)%10;
L2=(i/10)%10;
L3=(i/ 1)%10;
L4=(i/10)%10;
output_B(LED7[L1]); output_C(0); delay_ms(time); output_C(7);
output_B(LED7[L2]); output_C(1); delay_ms(time); output_C(7);
output_B(LED7[L3]); output_C(2); delay_ms(time); output_C(7);
output_B(LED7[L4]); output_C(3); delay_ms(time); output_C(7);
}

}
}

// Em định thực hiện chương trình điều khiển 4 Led 7 đoạn hiển thị phút và giây
// Led 7 đoạn nối với port_B, nối port_C với 74ls138

namqn: tôi xóa phần tôi đã viết vì bạn đã sửa code lại

kid_1412ls
28-11-2007, 08:24 PM
em bị lỗi cú pháp ạ, em xem lại rồi ! Đúng là ẩu quá

Mr.Bi
30-11-2007, 12:53 PM
#include <16f877a.h>
#use delay(oscillator=8M)
int8 const LED7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0}
int8 const time=15;
int8 i,j,L1,L2,L3,L4;
void main()
{ set_tris_B(0);set_tris_C(0);
while(1)
{ for(i=0;i<=59;i=i+1)
for(j=0;j<=59;j=j+1)
{ L1=(i/ 1)%10;
L2=(i/10)%10;
L3=(i/ 1)%10;
L4=(i/10)%10;
output_B(LED7[L1]); output_C(0); delay_ms(time); output_C(7);
output_B(LED7[L2]); output_C(1); delay_ms(time); output_C(7);
output_B(LED7[L3]); output_C(2); delay_ms(time); output_C(7);
output_B(LED7[L4]); output_C(3); delay_ms(time); output_C(7);



// bài này em dịch sai vài lỗi, các tiền bối giúp em với, em không hiểu sai ở đâu.

Nếu bạn post code như thế này , tui nghĩ bạn đang đếm & quét led7D đúng ko ?
nếu đúng thì bạn làm như thế này : vd đếm lên 59
- khai báo 1 biến i thui
- sau đó cho i++ đến 59
- lấy phần nguyên = (i/10) , xuất phần nguyên ra cột hàng chục(nhớ chuyển BCD)
- lấy phần dư = (i%10) , xuất phần dư xuất ra cột đơn vị
như vậy là ta đếm & tăng thoải mái

kid_1412ls
12-12-2007, 04:54 PM
Nếu bạn post code như thế này , tui nghĩ bạn đang đếm & quét led7D đúng ko ?
nếu đúng thì bạn làm như thế này : vd đếm lên 59
- khai báo 1 biến i thui
- sau đó cho i++ đến 59
- lấy phần nguyên = (i/10) , xuất phần nguyên ra cột hàng chục(nhớ chuyển BCD)
- lấy phần dư = (i%10) , xuất phần dư xuất ra cột đơn vị
như vậy là ta đếm & tăng thoải mái

cảm ơn bác namqn và Mr.Bi đã chỉ dẫn nhiệt tình đã chỉ ra những thiếu sót của em !

thm
27-12-2007, 04:50 PM
em cam on anh rat nhieu .Nhung anh oi sao em ko thay co chuong 5(van de TIMER), anh co the post len cho em ko?

asdfgh
07-03-2008, 05:18 PM
phải công nhận tài liệu bạn viết hay, súc tích. rat mong ban co ban II sớm

ronalpires
09-03-2008, 09:22 AM
Mình cũng đang bắt đầu học PIC, thấy bài của bạn viết rất dễ hiểu và cung cấp thông tin cho mình rất nhiều. Cám ơn bạn nhiều nha, viết xong phần II thì up lên cho tụi mình học hỏi nha!!!

vleminh
01-04-2008, 12:31 PM
giúp mình tìm tài liệu lập trình cho pic 16f877a bằng ccs. mình đang kiếm mà chưa được.

ngocphap
07-12-2008, 08:18 PM
_Bản CCS tiếng Việt mới , nhiều bổ sung , có cả PIC 18 .
_Do thời gian qua bận rộn nên tài liệu vẫn chưa đầy đủ , còn thiếu nhiều , nhưng do nhiều bạn đang tiếp cận PIC gởi mail kêu ca thiếu tài liệu CCS quá , tui post lên xem đỡ .
_Bản này chỉnh sửa nhiều phần đã đăng trong CCS tiếng Việt I . Bản cũ có nhiều sai sót , nay đã sửa lại , song bản mới này chắc chắn cũng có nhiều sai sót , bạn nào đã và đang làm PIC nếu thấy chỗ nào nói sai , thiếu sót , phiền bạn lên tiếng bổ sung . Thanks !

Thanks bác txt, em cũng đang xem thử. Từ từ rồi bàn tài liệu này nhé!

Hieu98DT
05-08-2009, 12:01 AM
_Bản CCS tiếng Việt mới , nhiều bổ sung , có cả PIC 18 .
_Do thời gian qua bận rộn nên tài liệu vẫn chưa đầy đủ , còn thiếu nhiều , nhưng do nhiều bạn đang tiếp cận PIC gởi mail kêu ca thiếu tài liệu CCS quá , tui post lên xem đỡ .
_Bản này chỉnh sửa nhiều phần đã đăng trong CCS tiếng Việt I . Bản cũ có nhiều sai sót , nay đã sửa lại , song bản mới này chắc chắn cũng có nhiều sai sót , bạn nào đã và đang làm PIC nếu thấy chỗ nào nói sai , thiếu sót , phiền bạn lên tiếng bổ sung . Thanks !

Bạn ơi mình đang tìm hiểu đến phần Timer, nhưng sao trong tài liệu không có phần chương 5 nói về timer, mình thấy trong mục lục có chương 5 mà.

ngoyeungoc
13-10-2009, 01:24 PM
Các bạn có thể giúp mình cái này tí không.Mình mới tập tành học PIC,viết code để delay sáng tắt ở PortB nhưng không biết là tại sao nó báo lỗi chưa định nghĩa portb hoài.Mình xin cảm ơn trước hen.Đây là đoạn code đó nè.
#include<16F877A.h>
#fuses NOWDT,PUT,HS,NOPROTECT
#use delay(clock=4000000)
#use fast_io(b)

main()
{
set_tris_b(0);
while(true)
{
portb =255;
delay_ms(100);
portb =0;
delay_ms(100);
}
}

greenfield
13-10-2009, 02:15 PM
Bạn phải khai báo thêm cái này nữa
#byte PORTB = 0x06 là ok.
Vì VDK không hiểu PORTB là gì đâu bạn mà mình phải định nghĩa và gán địa chỉ cho nó thì nó mới hiểu. hoặc bạn có thể dùng file mà được định nghĩa hết rồi Include vào là ok

vaa_pic
03-03-2010, 10:55 PM
Mình cũng thắc mắc là sao ko có chương Timer. Với lại sao lâu quá chưa có phần II. Phần I viết rất tốt, có rất nhiều người mong chờ phần II, mong tác giả mau ra mắt sớm phần II

haruoi
13-04-2010, 01:37 AM
Trong quyển 1 nói rất sơ sài về PWM. Các bác có thể cho 1 đoạn code mẫu hướng dẫn sử dụng không? Em đang muốn dùng PWM để điều khiển tốc độ động cơ DC. Mong các bác chỉ giáo.

manhdktd
14-06-2010, 06:24 PM
các anh cho em hoi một tẹo, em muốn dịch bít như sau mà sao nó lúc thì chạy mà lúc thì không. khó hiểu quá.
#include<16f877a.h>
#use delay(oscillator=8M)
int16 i,j,k;
void main()
{
set_tris_B(0);
while(1)
{k=0x00;
for(i=0xff;i>=0x01;i>>=1)
{k=k|i;output_B(k);delay_ms(300);}
Nếu dịch như vậy thì chỉ có bit thứ 7 tắt còn lại đều sáng hết

manhdktd
14-06-2010, 06:36 PM
Các bạn có thể giúp mình cái này tí không.Mình mới tập tành học PIC,viết code để delay sáng tắt ở PortB nhưng không biết là tại sao nó báo lỗi chưa định nghĩa portb hoài.Mình xin cảm ơn trước hen.Đây là đoạn code đó nè.
#include<16F877A.h>
#fuses NOWDT,PUT,HS,NOPROTECT
#use delay(clock=4000000)
#use fast_io(b)

main()
{
set_tris_b(0);
while(true)
{
portb =255;
delay_ms(100);
portb =0;
delay_ms(100);
}
}

khai báo sử dụng địa chỉ PORTB bằng câu lệnh
#byte PORTB=0x06
sau đó sử dụng được PORTB=0 hay PORTB=0xff bình thường.
bạn có thể dùng lệnh output_b(value)

manhdktd
14-06-2010, 06:37 PM
Trong quyển 1 nói rất sơ sài về PWM. Các bác có thể cho 1 đoạn code mẫu hướng dẫn sử dụng không? Em đang muốn dùng PWM để điều khiển tốc độ động cơ DC. Mong các bác chỉ giáo.

cậu xem lại trong hepl của ccs,nó viết cách khởi tạo và thiết lập tham số rất kỹ.

easy91
16-07-2011, 08:34 PM
Anh Trường giúm em sữa lỗi bài này đi.Em khai báo dùng chân A0 (AN0) thì dc,nhưng dùng chân E0(AN5) thì nó lại báo lỗi :Undefined identifier AN5.

#include<16F877A.h>
#device *=16 ADC=10
#FUSES HS ,NOWDT, NOPUT, NOLVP
#USE DELAY(CLOCK=8M)
#include<lcd_ntt.h>
#include<luutinh.h>

unsigned int16 GIA_TRI=0;

void main()
{
set_tris_d(0);
set_tris_e(255);
set_tris_a(255);

SETUP_ADC_PORTS(AN5); //thiet lap chan E0
SETUP_ADC(ADC_CLOCK_DIV_2);//khoi dong bo ADC

lcd_init(); // khoi dong lcd
delay_ms(20);
lcd_gotoxy(1,1);
printf(lcd_putc,"VU HIEU TUANNGOC");
while(1)
{
SET_ADC_CHANNEL(5); //chan kenh AN5 de doc gia tri
DELAY_ms(10);
GIA_TRI=READ_ADC(); //gan gia tri = gia tri adc
LCD_GOTOXY(1,2);
DELAY_ms(10);
PRINTF(LCD_PUTC,"GIA TRI AD= %ld ",GIA_TRI); //xuat qia tri
DELAY_ms(1000);
}
}

anhthuc
18-07-2011, 10:29 AM
Bạn đổi (AN5) thành (AN0_AN1_AN4_AN5_VREF_VREF)

ak47
19-07-2011, 08:31 PM
Bạn đổi (AN5) thành (AN0_AN1_AN4_AN5_VREF_VREF)
cũng không nhất thiết phải thế.Xem trong file .h nó định nghĩa hằng số là gì thì ném vô đó thôi.Chắc thay AN5 bằng sAN5 là ok đấy

welldone789
13-10-2011, 04:44 PM
hóng tác giả phần hai mà lâu quá :(

HUYEN_nb
03-12-2011, 01:57 PM
em mới tìm hiểu về pic.thấy bài viết của bác TXT hay wa.thanks
hôm qua em làm thử bài nháy led code e lập theo wizad như sau:
#include "D:\PIC\tuhoc\New folder\led2.h"
#include<16f877a.h>
#include<def_877a.h>
#FUSES NOWDT,HS,NOPUT,NOPROTECT,NODEBUG,NOBROWNOUT,NOLVP, NOCPD,NOWRT
#use delay(clock=20000000)
void main()
{

setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
TRISB=0x00;
PORTB=0xFF;
// TODO: USER CODE!!
While(1)
{
PORTB=0x00;
delay_ms(250);
PORTB=0xFF;
delay_ms(250);
}
}
nhưng khi dịch lại bị lỗi:

HUYEN_nb
03-12-2011, 01:58 PM
em mới tìm hiểu về pic.thấy bài viết của bác TXT hay wa.thanks
hôm qua em làm thử bài nháy led code e lập theo wizad như sau:
#include "D:\PIC\tuhoc\New folder\led2.h"
#include<16f877a.h>
#include<def_877a.h>
#FUSES NOWDT,HS,NOPUT,NOPROTECT,NODEBUG,NOBROWNOUT,NOLVP, NOCPD,NOWRT
#use delay(clock=20000000)
void main()
{

setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
TRISB=0x00;
PORTB=0xFF;
// TODO: USER CODE!!
While(1)
{
PORTB=0x00;
delay_ms(250);
PORTB=0xFF;
delay_ms(250);
}
}
nhưng khi dịch lại bị lỗi:

mong các bác có kinh nghiệm xem và chỉ cho e với. thanks các bác nhiều

thanhkc
03-12-2011, 09:37 PM
jup t voi
dung xung ngoai đem san pham tu 1-9999 voi led 7 thanh lap trinh pic

quangdiemhp
31-01-2012, 12:52 AM
Hay...anh em cần chia sẻ như thế này rất hay.

badboy2809
23-02-2012, 12:11 AM
em mới tìm hiểu về pic.thấy bài viết của bác TXT hay wa.thanks
hôm qua em làm thử bài nháy led code e lập theo wizad như sau:
#include "D:\PIC\tuhoc\New folder\led2.h"
#include<16f877a.h>
#include<def_877a.h>
#FUSES NOWDT,HS,NOPUT,NOPROTECT,NODEBUG,NOBROWNOUT,NOLVP, NOCPD,NOWRT
#use delay(clock=20000000)
void main()
{

setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
TRISB=0x00;
PORTB=0xFF;
// TODO: USER CODE!!
While(1)
{
PORTB=0x00;
delay_ms(250);
PORTB=0xFF;
delay_ms(250);
}
}

có phải bạn chưa định nghia portB nên nó báo lỗi. Bạn thử chèn ở đầu chương trình #byte portb=0xf81 xem sao.

MARS
11-03-2012, 11:57 AM
_Bản CCS tiếng Việt mới , nhiều bổ sung , có cả PIC 18 .
_Do thời gian qua bận rộn nên tài liệu vẫn chưa đầy đủ , còn thiếu nhiều , nhưng do nhiều bạn đang tiếp cận PIC gởi mail kêu ca thiếu tài liệu CCS quá , tui post lên xem đỡ .
_Bản này chỉnh sửa nhiều phần đã đăng trong CCS tiếng Việt I . Bản cũ có nhiều sai sót , nay đã sửa lại , song bản mới này chắc chắn cũng có nhiều sai sót , bạn nào đã và đang làm PIC nếu thấy chỗ nào nói sai , thiếu sót , phiền bạn lên tiếng bổ sung . Thanks !

Thanks bác nhìu! chờ phần 2

chestnutbrat
29-01-2013, 10:06 PM
Các bác ơi sao trong tài liệu không thấy có chương 5 Timer vậy!

hongtruongtv
01-02-2013, 12:49 PM
Chào mọi người
Mình đang ở TP.HCM. mình đang tìm mua MCP23017 (Expander 16B - I2C) nhưng không biết mua ở đâu?
Bạn nào biết, chỉ mình với.
Cảm ơn nhiều!

cong_humg_tdh
12-08-2013, 10:45 AM
em mới tìm hiểu về pic.thấy bài viết của bác TXT hay wa.thanks
hôm qua em làm thử bài nháy led code e lập theo wizad như sau:
#include "D:\PIC\tuhoc\New folder\led2.h"
#include<16f877a.h>
#include<def_877a.h>
#FUSES NOWDT,HS,NOPUT,NOPROTECT,NODEBUG,NOBROWNOUT,NOLVP, NOCPD,NOWRT
#use delay(clock=20000000)
void main()
{

setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
TRISB=0x00;
PORTB=0xFF;
// TODO: USER CODE!!
While(1)
{
PORTB=0x00;
delay_ms(250);
PORTB=0xFF;
delay_ms(250);
}
}

có phải bạn chưa định nghia portB nên nó báo lỗi. Bạn thử chèn ở đầu chương trình #byte portb=0xf81 xem sao.

Bác nói chuẩn đấy !! Do bạn ý thiếu định nghĩa PortB nên khi chạy thì máy nó không hiểu cái PortB của bạn là gì nên nó báo lỗi !