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 cho PIC/dsPIC phiên bản 4.xxx (http://www.picvietnam.com/forum/showthread.php?t=2296)

khanhbp 22-04-2009 06:44 PM

CCS 4.088 new
 
Link download:
Tested OK

hatbui 02-05-2009 09:51 AM

Giúp em code làm việc với 74HC595
 
1 Attachment(s)
Chào các bác.
Bác nào chỉ giúp em đoạn code làm việc với 595 theo 2 cách
- sử dụng SPI module có sẵn của 16F877A
- có thể sử dụng pin khác của Port khác
Giúp em code bằng CCS C được ko ah.


Em xin chân thành cảm ơn.

manhha2799 02-05-2009 09:11 PM

Đây là cách phần mềm :

#bit SCK=0x06.6
#bit DATA=0x06.4
#bit SCL=0x06.7

void Data_in(int1 k)
{
output_bit(pin_b4,k);
output_low(pin_b6);
output_high(pin_b6);
}
void LatchData()
{
output_low(pin_b7);
output_high(pin_b7);
}


Đây là spi phần cứng :

spi_write(0b11111111);
setup_spi(spi_master |spi_h_to_l|spi_clk_div_4);

mocdailam 02-05-2009 09:47 PM

bac F ơi! có thời gian trả lời giúp em với

manhha2799 03-05-2009 09:37 PM

Bạn này hỏi gì thế nhỉ? mà ko thấy câu hỏi gì hết?

bravesoldier 23-06-2009 05:40 PM

Em tra datasheet của PIC16F877A để tìm hiểu module SPI và xem cả example trong CCS nữa nhưng khi thử trên bo cắm với 5 con 595 thì 40 con LED sáng loạn cả lên. Liệu em có dùng sai hay không? Bác nào dùng SPI cứng của PIC ko chỉ cho em với?
Code:

#include <16F877A.h>
#device *=16 ADC=8
#fuses NOWDT, XT, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP
#use delay(clock=4000000)
#use fast_io(b)
#byte portb=0x6
#bit SCL = portb.0

void latch_data()
  {
    SCL=0;
    SCL=1;
  }

main()
  {
  byte i;
  set_tris_b(0);
  setup_spi(SPI_MASTER | SPI_H_TO_L | SPI_CLK_DIV_16); // tham kha?o Help
 
  SCL=1;
  while (true)
      {
      for (i=1; i<=5; ++i) {spi_write(0xAA);}
      latch_data();
      delay_ms(1000);

      for (i=1; i<=5; ++i) {spi_write(0x55);}
      latch_data();
      delay_ms(1000);
      }
  }

Em lắp xen kẽ 20 con LED xanh với 20 con LED đỏ, viết code để cho chúng nó nhấp nháy.
Theo như datasheet thì em dùng chân RC5 của PIC16F877A để xuất data ra chân 14 của con 595 đầu tiên, chân RC3 làm chân clock (SCK), chân RB0 chọn để chốt.
Em xin cám ơn!

picpen 24-06-2009 08:49 AM

Code:

for (i=1; i<=5; ++i) {spi_write(0xAA);}
latch_data();
delay_ms(1000);

??? tôi ko hiểu ý đồ dùng cấu trúc for của bạn là như thế nào , bạn chú ý khi quản lý khối lệnh bằng {} nhé !
với SPI tôi đã làm rồi , cái giao tiếp này của pic rất rễ nhiễu và bị sai khi bạn dùng cáp để để truyền dữ liệu . Chỉ cần sai 1 bít là tất cả khối dữ liệu sau đó bị sai hết
Bạn nên chú ý với 2 dây dữ liệu và dây clock . phải đảm bảo mấy dây đó phải an toàn ko xảy ra lỗi ...... đó là do cách hoạt động của SPI ko có kiểm tra chẵn lẻ cũng ko có tín hiệu ack
chúc vui !

bravesoldier 24-06-2009 03:35 PM

Trích:

??? tôi ko hiểu ý đồ dùng cấu trúc for của bạn là như thế nào , bạn chú ý khi quản lý khối lệnh bằng {} nhé !
với SPI tôi đã làm rồi , cái giao tiếp này của pic rất rễ nhiễu và bị sai khi bạn dùng cáp để để truyền dữ liệu . Chỉ cần sai 1 bít là tất cả khối dữ liệu sau đó bị sai hết
Bạn nên chú ý với 2 dây dữ liệu và dây clock . phải đảm bảo mấy dây đó phải an toàn ko xảy ra lỗi ...... đó là do cách hoạt động của SPI ko có kiểm tra chẵn lẻ cũng ko có tín hiệu ack
chúc vui !
Em dùng for để thực hiện 5 lần SPI_write, để out 5x8 = 40 bit ra dãy LED 40 con
0xAA = 10101010b để LED đỏ tắt, LED xanh sáng
0x55= 01010101b để LED đỏ sáng, LED xanh tắt
đúng là em cắm nhiều dây quá nên nhiễu thật
sờ vào nguồn là cụm 8LED do con 595 thứ 2 nối ra tối hẳn đi, còn các cụm khác vẫn bình thường. Thật là củ chuối!
Đêm qua em tháo hết bo rồi. Mục đích là test chức năng SPI mềm và cứng của PIC 16F877A mà bác.
Bác có gì chỉ bảo, có gì cần chú ý về phần cứng thì giúp em với.
mail của em là dotien.dzung@gmail.com
em xin cảm ơn bác.

bravesoldier 24-06-2009 03:41 PM

chắc là dây nối dùng SPI cứng của PIC càng ngắn càng tốt các bác nhỉ :)

tonghua19 01-07-2009 07:05 PM

Trích:

Nguyên văn bởi bravesoldier (Post 27072)
Em tra datasheet của PIC16F877A để tìm hiểu module SPI và xem cả example trong CCS nữa nhưng khi thử trên bo cắm với 5 con 595 thì 40 con LED sáng loạn cả lên. Liệu em có dùng sai hay không? Bác nào dùng SPI cứng của PIC ko chỉ cho em với?
Code:

#include <16F877A.h>
#device *=16 ADC=8
#fuses NOWDT, XT, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP
#use delay(clock=4000000)
#use fast_io(b)
#byte portb=0x6
#bit SCL = portb.0

void latch_data()
  {
    SCL=0;
    SCL=1;
  }

main()
  {
  byte i;
  set_tris_b(0);
  setup_spi(SPI_MASTER | SPI_H_TO_L | SPI_CLK_DIV_16); // tham kha?o Help
 
  SCL=1;
  while (true)
      {
      for (i=1; i<=5; ++i) {spi_write(0xAA);}
      latch_data();
      delay_ms(1000);

      for (i=1; i<=5; ++i) {spi_write(0x55);}
      latch_data();
      delay_ms(1000);
      }
  }

Em lắp xen kẽ 20 con LED xanh với 20 con LED đỏ, viết code để cho chúng nó nhấp nháy.
Theo như datasheet thì em dùng chân RC5 của PIC16F877A để xuất data ra chân 14 của con 595 đầu tiên, chân RC3 làm chân clock (SCK), chân RB0 chọn để chốt.
Em xin cám ơn!

Chào các bạn
các bạn cho mình hỏi là câu lệnh:
#device *=16 ADC=8
#byte portb=0x6
có nghĩa gì vậy
cho em mình hỏi thêm là làm sao mình mới có thể dùng lệnh các lệnh như trisb, portb, latb,... hay một số thanh ghi như ifs1, iec0,...
Cám ơn các bạn nhiều

thanhvanckbk 02-07-2009 05:18 PM

Mình là dân mới tập tành học PIC nê sau khi đọc xong TUTOR của bác falleaf mình thấy rất hay, không biết là phần 2 của TUTOR bác đã up lên chưa vậy? Mong cao thủ nào đã có được thì up lên cho anh em tham khảo nha!

thanhvanckbk 02-07-2009 05:23 PM

ah cho mình hỏi thêm chút với, mình đang muốn dùng PIC để điều khiển 12 RC servo bằng PWM, ai có kinh nghiệm trong việc này thì chỉ giúp mình với, nếu được thì có thể up đoạn code đó cho mình tham khảo chút nha. cám ơn những người cùng yêu thích PIC như mình. hihi

Hailua8x 16-07-2009 05:42 PM

Em mới bắt đầu nghiên cứu CCS, mong được các anh pro giúp đở
Em đang nghiên cứu con dspic6014, con này có thể chạy với tốc độ 30 MIPs

em sử dụng thạch anh 8 Mhz, các anh cho em hỏi làm sao để nhân tần số thực thi lệnh lên 30 MIPS
Cám ơn mấy anh

Hailua8x 17-07-2009 05:01 PM

Mấy anh ai có file defs_16F877A.h , cho em xin với !
Mong được mấy anh giúp đở

Hailua8x 17-07-2009 05:07 PM

Sorry, em viết nhầm, hổng phải con đó mà là con này : dspic30f6014


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