PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) (http://www.picvietnam.com/forum/forumdisplay.php?f=12)
-   -   CCS C for PIC16F877A (http://www.picvietnam.com/forum/showthread.php?t=357)

vtt 24-08-2006 09:19 PM

Cám ơn bác namqn!
Các bác ơi, tôi đang loay hoay với việc giao tiếp giữa PIC 16F877A với eeprom 24C64 mà chưa được, bác nào đã làm được hoạc có kinh nghiệm giao tiếp với bộ nhớ ngoài xin chỉ giùm.

namqn 24-08-2006 10:03 PM

Bạn đọc tài liệu sau của Microchip về giao tiếp PIC16 với I2C EEPROM:
http://ww1.microchip.com/downloads/en/DeviceDoc/i2c.pdf

Thân,

nhh 26-08-2006 10:00 PM

Trích:

Nguyên văn bởi Sangcao
Mình đang thử ctr điều khiển động cơ: Khi có tín hiệu từ chân RB0 thì động cỏ quay, nếu đang quay mà có tín hiệu từ RB1 thì động cơ quay ngược lại bằng thời gian no đã quay xuôi, bạn nào có thể viết cho mình một ví dụ như vậy bằng CCS được ko, cảm ơn nhiều.

Bạn có thể dùng ngắt ngoài để điều khiển cái động cơ của bạn:
http://www.picvietnam.com/forum//sho...p?t=357&page=2

son_um 04-10-2006 01:38 AM

Đoạn mã hiển thị led 7 thanh này, dấu ^ có ý nghĩa là vì hả các bác
void display(int8 digit) {
output_c(DIGITS[digit] ^ 0xff);
off_on_led_transistor();
}
Thân.

minhquancdt 04-10-2006 12:11 PM

Trích:

Nguyên văn bởi son_um (Post 5248)
Đoạn mã hiển thị led 7 thanh này, dấu ^ có ý nghĩa là vì hả các bác
void display(int8 digit) {
output_c(DIGITS[digit] ^ 0xff);
off_on_led_transistor();
}
Thân.

Ặc ặc...
Bác dùng mấy cái mảng + hàm con mà chẳng ai biết từ đâu ra thì ai mà hiểu được bác đang nghĩ gì !

Hãy post cả code hoàn thiện để mọi nguời cùng mổ xẻ !

son_um 04-10-2006 10:10 PM

Thì đoạn chương trình đấy từ bài viết về hiển thị led7 thanh,post lại vậy:

Chương trình hiển thị phím số trên ma trận phím 4x3 ra đèn 7 đoạn (không dùng interrupt)

#include <16F877A.h>
#fuses NOWDT, XT
#fuses NOLVP // important
#use delay(clock=4000000)

#include <kbd.c> // in PICC\Drivers

// 0 1 2 3 4 5 6 7 8 9
byte const DIGITS[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f };

///////////////////////////////////////////////////////////
/* private */void off_on_led_transistor() {
output_low(PIN_D1);
delay_ms(1);
output_high(PIN_D1);
}

///////////////////////////////////////////////////////////
void display(int8 digit) {
output_c(DIGITS[digit] ^ 0xff);
off_on_led_transistor();
}

///////////////////////////////////////////////////////////
int8 char_to_digit(char c) {
return c & 0b00001111; // first 4 bits only
}

///////////////////////////////////////////////////////////
int1 digit_key_pressed(char key) {
byte pattern;
pattern = 0b00110000;
return (key & pattern) == pattern;
}

///////////////////////////////////////////////////////////
void main() {
int8 i, digit;
char key;

kbd_init();
while (true) {
key = kbd_getc();
if (digit_key_pressed(key)) {
digit = char_to_digit(key);
for (i = 0; i < 200; i++) // repeat the display for human eyes
display(digit);
}
}
}

namqn 04-10-2006 10:31 PM

Trích:

Nguyên văn bởi son_um (Post 5248)
Đoạn mã hiển thị led 7 thanh này, dấu ^ có ý nghĩa là vì hả các bác
void display(int8 digit) {
output_c(DIGITS[digit] ^ 0xff);
off_on_led_transistor();
}
Thân.

Dấu "^" là ký hiệu phép toán XOR (exclusive OR) trong C.

Thân,

son_um 06-10-2006 03:27 AM

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.

nhh 06-10-2006 05:40 PM

Trích:

Nguyên văn bởi son_um (Post 5309)
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.

phamvanthang 09-10-2006 09:47 PM

Ban lam on cho biet cho tim may thu vien cua CCS C, vi du nhu lcd_lib_4bit.h hay def_877a.h. Cam on!

mp3pic 10-10-2006 10:24 AM

cho biêt có sự khác nào giữa pic16f877-20p với 16f877a không

bantrang25 11-10-2006 01:56 PM

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é!

vdt 11-11-2006 01:18 AM

Trích:

Nguyên văn bởi mp3pic (Post 5378)
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

alamanda 04-12-2006 11:20 AM

[QUOTE=nhh;2261]Còn đây là ứng dụng ngắt ngoài trên RB4 đến RB7 để thay đổi kiểu cũng như tốc độ chớp nháy mấy con led chỉ để....ngắm cho vui mắt !

Ấn sw1, led1 nhấp nháy với delay 250ms
Ấn sw2, led1,2 nhấp nháy với delay 200ms
Ấn sw3, led1,2,3 nhấp nháy với delay 150ms
Ấn sw4, led1,2,3,4 nhấp nháy với delay 100ms
[code]//************************************************** ***************************
// Author : nhh
// Date : 03/04/06
// Hardware: PIC16F877A
//************************************************** ***************************
Bác nhh ơi,tui đang đang dùng CCS C version 4.013 ( tui mới học PIC gần đây). Khi tui copy file của bác về chạy thử thì nó báo lỗi. Ở khai báo #byte portb=0x06, nó báo lỗi là Expecting an identifier và Expecting a declaration. Còn ở lệnh: portb=led;thì nó báo lỗi Expecting LVALUE such as a variable name or *expression. Cụ thể là bài của bác tui dịch ra là 8 lỗi. Tui pó tay:confused: .Rất mong sự chỉ giáo của bác,và các bậc tiền bối.

alamanda 04-12-2006 01:26 PM

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.


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

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam