|
Tài trợ cho PIC Vietnam |
PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip |
|
Ðiều Chỉnh | Xếp Bài |
|
11-06-2009, 04:36 PM | #1 |
Đệ tử 4 túi
Tham gia ngày: Aug 2008
Bài gửi: 89
: |
PT2262/2272 Lập trình mã hóa/giải mã với PIC C
Cặp chip PT2262/2272 được sử dụng rất phổ biến trong việc điều khiển từ xa các thiết bị sử dụng RF. Việc sử dụng vi điều khiển để thay thế chức năng mã hóa/giải mã của PT2262/PT2272 sẽ giúp các thiết kế mạch đơn giản bằng việc sử dụng phần mềm để thay thế chức năng của nó.
Tài liệu này cung cấp 1 trong các cách phân tích phương thức mã hóa/giải mã của PT2262/2272 và hiện thực bằng ngôn ngữ CCS C với vi điều khiển PIC thông dụng. Regards Downloads:
__________________
Quang báo RG/RGB 6/8/12/16 bits màu Phone No: 0905.034.086 Email: lmquyen@gmail.com |
16-12-2009, 01:49 PM | #2 |
Đệ tử 4 túi
Tham gia ngày: Aug 2008
Bài gửi: 89
: |
Updated new link.
__________________
Quang báo RG/RGB 6/8/12/16 bits màu Phone No: 0905.034.086 Email: lmquyen@gmail.com |
14-01-2011, 11:17 PM | #3 |
Nhập môn đệ tử
Tham gia ngày: Oct 2010
Bài gửi: 6
: |
|
23-09-2010, 11:50 PM | #4 |
Nhập môn đệ tử
Tham gia ngày: Aug 2009
Bài gửi: 5
: |
Thank bác ''cskiller'' nhiều em đang làm về cái này.
|
15-01-2011, 12:47 AM | #5 |
Nhập môn đệ tử
Tham gia ngày: Jan 2011
Nơi Cư Ngụ: hồ chí minh
Bài gửi: 1
: |
cảm ơn bạn đã chia sẽ tài liệu, chúc bạn thành công.
__________________
truyenle -------------------------------------------- nenhuongyeu |
23-03-2011, 11:04 PM | #6 |
Nhập môn đệ tử
Tham gia ngày: Mar 2011
Bài gửi: 1
: |
Thanks bác vô cùng chúc bác thành công
|
25-03-2011, 09:55 PM | #7 |
Đệ tử 4 túi
Tham gia ngày: Oct 2007
Bài gửi: 79
: |
Thank bác nhiều lắm, dù bài viết đã lâu nhưng gãi đúng chỗ ngứa của em .
__________________
Dao nao cung la dao, dao cao dai cung la dao. |
22-04-2011, 07:37 PM | #8 |
Đệ tử 4 túi
Tham gia ngày: Oct 2007
Bài gửi: 79
: |
e đọc tài liệu này cả tháng nay mới hiểu được chút chút, có mấy thắc mắc không tài nào hiểu được, mong ae chỉ giúp.
1. Mấy dòng lệnh này có nghĩa gì: Code:
#ifndef PT_SPEED #error "not define PT_SPEED" #endif Code:
#define PT_MCU_CLOCK getenv("CLOCK") 2. Về phần tính toán giá trị timing của tốc độ truyền: Code:
#define PT_TIMER (((((PT_MCU_CLOCK/4)/8)/(PT_SPEED/4)))) signed long PT_TX_TIMER = -(PT_TIMER/1); PT_MCU_CLOCK/4 là do 4 xung pic thực hiện 1 lệnh PT_SPEED/4 cũng do 4 xung tạo thành 1 bit trong thuật toán mã hóa. PT_TX_TIMER = -(PT_TIMER/1) dấu - là do đếm từ PT_TX_TIMER đến 65535, /1 là hệ số prescale mặc định là 1. còn (PT_MCU_CLOCK/4)/8 e không hiểu tại sao có /8 ở chỗ này??? ae nào giải thích dùm e, e nghĩ hoài không ra. 3. Cái remote của e có Rosc = 4M3, vậy mình chọn PT_SPEED là bao nhiêu, e gà không biết cách đọc datasheet. Thk cả nhà, chúc vui.!
__________________
Dao nao cung la dao, dao cao dai cung la dao. |
27-04-2011, 08:33 PM | #9 |
Đệ tử 4 túi
Tham gia ngày: Oct 2007
Bài gửi: 79
: |
Không ai giúp e với. .
__________________
Dao nao cung la dao, dao cao dai cung la dao. |
08-05-2011, 12:39 AM | #10 |
Đệ tử 4 túi
Tham gia ngày: Oct 2007
Bài gửi: 79
: |
Chào cả nhà, dựa theo bài viết trên, e đã viết code cho con pic877a như sau:
Code:
#include <16F877A.H> #include <def_877a.h> #FUSES NOWDT, HS, PUT, NOPROTECT, NODEBUG, BROWNOUT, NOLVP, NOCPD, NOWRT #use delay(clock=4000000) #define PT_MCU_CLOCK getenv("CLOCK") #define PT_SPEED (9600) #define PT_MAX_FRAME_CHECK 2 #define PT_TX_PIN PIN_B0 #define PT_RX_PIN PIN_B1 #define PT_TIMER (((((PT_MCU_CLOCK/4)/8)/(PT_SPEED/4)))) #define PT_BIT_0 0b00010001 #define PT_BIT_1 0b01110111 #define PT_BIT_F 0b01110001 #define PT_SENDING 0 #define PT_IDLE 1 const char PT_BIT_TABLE[3]={PT_BIT_0,PT_BIT_1,PT_BIT_F}; signed long PT_TX_TIMER = -(PT_TIMER/1); unsigned long TIME_0a_75_BIT = (float)(PT_TIMER)*(float)0.75; unsigned long TIME_1a_25_BIT = (float)(PT_TIMER)*(float)1.25; unsigned long TIME_2a_75_BIT = (float)(PT_TIMER)*(float)2.75; unsigned long TIME_3a_25_BIT = (float)(PT_TIMER)*(float)3.25; unsigned long TIME_30a_75_BIT = (float)(PT_TIMER)*(float)30.75; unsigned long TIME_31a_25_BIT = (float)(PT_TIMER)*(float)31.25; unsigned long data, addr; unsigned int Pt2262BuffCurrent, Pt2262BuffCounter, Pt2262LoopCounter; char PtBuff[16]; int1 PtState; void Pt2262TxCheck() { unsigned short b; if (Pt2262BuffCurrent!=Pt2262BuffCounter) { b = PtBuff[Pt2262BuffCurrent>>3]>>(Pt2262BuffCurrent&0x07); output_bit(PT_TX_PIN,b); Pt2262BuffCurrent++; } if (Pt2262BuffCurrent==Pt2262BuffCounter) { if (--Pt2262LoopCounter>0) { Pt2262BuffCurrent=0; } else { Pt2262BuffCurrent=0; Pt2262LoopCounter = 4; output_low(PT_TX_PIN); clear_interrupt(INT_EXT); enable_interrupts(INT_EXT); PtState = PT_IDLE; } } } #int_timer1 void Timer1_ISR() { set_timer1(PT_TX_TIMER); if(PtState==PT_SENDING) { Pt2262TxCheck(); } else { PtState=PT_IDLE; } } void main() { int i; set_tris_b(0b00000010); portB=0x00; addr = 22222222; data = 1111; for (i=0;i<8;i++) { PtBuff[i] = PT_BIT_TABLE[(addr%10)%3]; addr = addr/10; } PtBuff[8] = ((data>>3)&0x01)?PT_BIT_1:PT_BIT_0; PtBuff[9] = ((data>>2)&0x01)?PT_BIT_1:PT_BIT_0; PtBuff[10] = ((data>>1)&0x01)?PT_BIT_1:PT_BIT_0; PtBuff[11] = ((data>>0)&0x01)?PT_BIT_1:PT_BIT_0; PtBuff[12] = 0b00000001; PtBuff[13] = PtBuff[14] = PtBuff[15] = 0b00000000; PtState = PT_IDLE; enable_interrupts(global); enable_interrupts(int_timer1); setup_timer_1(T1_INTERNAL | T1_DIV_BY_1); set_timer1(PT_TX_TIMER); Pt2262BuffCurrent=0; Pt2262BuffCounter = 16*8; Pt2262LoopCounter = 4; while(1) { PtState = PT_SENDING; } }
__________________
Dao nao cung la dao, dao cao dai cung la dao. |
17-05-2012, 07:01 PM | #11 |
Đệ tử 2 túi
Tham gia ngày: May 2012
Bài gửi: 30
: |
Chào anh motu! Hiện tại em cũng mới đang nghiên cứu về phần trên và đang còn gặp phải nhiều vướng mắt về các lệnh đó, chắc anh cũng đã từng làm qua rồi nên có thể giải thích cho em về các dòng lệnh đó cái được không ạ. Nếu có code mẫu phiền anh gửi lên cho em tham khảo chút được không ạ!
Em cám ơn nhiều |
|
|