PDA

View Full Version : [Hỏi] Vấn đề C18 Compiler


mrdongus
23-06-2012, 04:56 AM
Hi. Mình mới tìm hiểu C18 compiler và PIC18F2550.
Có một số câu hỏi cơ bản mong được các bạn các anh đi trước giúp hiểu thêm.
Mình đọc 1 tài liệu C18 compiler tiếng Việt thì thấy khai báo I/O chỉ đề cập đến
TRISB = 0x00; // là khai B là port out
TRISBbits cũng cùng địa chỉ với TRISB

Khi đọc 1 đoạn code mẫu chương trình khác có đoạn ghi

TRISCbits.TRISC3 = 0 // port C pin 3 là chân out

mình khai báo tương đương lệnh trên như thế này có đúng không:

TRISC = 0xf7; // pin 3 của port C là pin out


-------------------------------------

#define SPI_CE LATCbits.LATC1 // CE output pin, PORTC pin 1
#define SPI_IRQ PORTBbits.RB0 // IRQ input pin, PORTB pin 0

Có phải dùng LAT để định nghĩa cho chân là chân output và PORT là chân input?

Nhờ các bác chỉ giúp. em mới tự mò mẩm tự học. cảm ơn :)

rocket42
23-06-2012, 11:57 AM
Em định nghĩa TRISC=0xf7 là đúng rồi.
Còn 2 dòng lênh:
#define SPI_CE LATCbits.LATC1 // CE output pin, PORTC pin 1
#define SPI_IRQ PORTBbits.RB0 // IRQ input pin, PORTB pin 0
- 2 dòng lệnh này không có ý nghĩa rằng chân RC1 là out và RB0 là in; để định nghĩa chân là in/out sử dụng như lệnh vừa trên đó.
- lệnh đầu tiên có ý nghĩa là khi đã thiêt lập RC1 là OUT. Giả sử ta dùng SPI_CE=1 thì RC1 xuất ra 1
- lênh 2 có ý nghĩa là khi đã thiêt lập RB0 là IN. ta có thể đọc giá trị chân RB0 sử dụng SPI_IRQ convention.

mrdongus
26-06-2012, 02:33 AM
Chào a Hùng. Có đọc qua tài liệu C18 tiếng Việt của anh ^^

Anh cho em hỏi về timer 1 trong PIC18.
Em đang cần đếm counter đếm nhanh khoảng (1/3).10^-7s counter đếm lên 1 (cần Clock timer khoảng 30MHz). mà xung clock system tối đa là 48MHz, sau đó chia 4 còn 12MHz dùng cho timer thôi.
Đọc trong Datasheet thì thấy, ngoài việc dùng dao động bên trong còn có thể dùng xung clock từ bên ngoài ở chân RC0/T13CLK. Không biết em có thể cấp xung 30MHz vào chân này được không. Mong anh chỉ giúp :)