Chào các bạn.
Nay ngồi code cho con PIC16F887 để điều khiển đèn halogen, thực ra chính là điều khiển một chân rồi qua TIP122 và relay để điều khiển đèn thôi (vì dòng tải lên tới 10A).
Mình thấy cách viết hay nên chia sẻ với các bạn. Dùng để lưu trữ luôn.
Để điều khiển thời gian dùng lệnh:
Txyzt# : trong đó: xyzt là thời gian viết theo hệ hexa. Đơn vị là ms
S: stop led
P: play led
Đầu tiền là file UART.c và UART.h có chứa các định nghĩa và thực thi dành cho cổng UART. Tất nhiên có thể áp dụng cho mọi loại PIC16.
|
// UART.h //======================================================================================== |
Tiếp theo là hàm thực thi UART.c
|
// UART.h //======================================================================================== // Configure BaudRate // Baudrate = Fosc/[16(n+1)] => n = ((Fosc/Baudrate)>>4) - 1; n = SPBRGH: SPBRG; //Configure for Transmitter mode. //Configure for Receiver mode RCIF = 0; //===================================================================================== //===================================================================================== //===================================================================================== //==================================================================================== |
Tiếp theo là sysdef.h dùng để định nghĩa các biến dành cho hệ thống:
|
// Define some useful values #define Fosc 20000000 // Frequency of Crystal // Define some temp signals #define led1_cntL TMR2 // Led1 counter as 16 bit, #define UART_Data CCPR2H // UART Data temporary // Define 8 bit acc #define progress SSPADD |
Tiếp theo là system.h định nghĩa các hàm hệ thống:
|
bit ishexa(unsigned char a){ // Convert from ASCII to number |
Cuối cùng là hàm Main.c là hàm chính:
|
/*;======================================================== // configuration // Receiver Interrupt Function while(1); //===================================================================================== void RxIntFcn(void){ // On, off command // Timer0 interrupt function // PortB as output T0CS = 0; // Internal instruction cycle clock (CLKO) // Init for counters |
Chúc các bạn thành công.
Các bài viết liên quan:
- Phan tich thuat toan: thuc hien lenh dieu khien tu PC qua RS232 Chào các bạn. Không biết ai đã đọc bài viết của mình PIC16F887 – Điều khiển thời gian đóng cắt một led từ PC qua UART chưa. Trong này, mình có thực hiện đặt thời gian đóng cắt từ PC bằng lệnh với cú pháp. Txyzt#: trong đó xyzt là thời gian tính theo hệ [...]...
- Thư viện giao tiếp RS232 cho PIC18 bằng HTPIC18 Đây là thư viện viết cho vi điều khiển PIC dòng PIC18 bằng HTPIC. Thư viện được tạo dựa vào Datasheet của PIC18. Đã test với PIC18F4680, PIC18F4431 File Header: UART.h // UART.h //============================ #ifndef _UART_H #define _UART_H //============================= #include "pic18.h" #include "sysdef.h" //============================= // Declare sosme functions void UART_Init(unsigned int BaudRate); // Initialize for [...]...
- Lập trình C cho vi điều khiển: vấn đề khai báo biến Chào các bạn. Như các bạn đã biết trong các lệnh ASM của vi xử lý thì thao tác với các toán tử là các thanh ghi sẽ tốn ít thời gian nhất và do đó tối ưu được chương trình chạy rất nhanh, thời gian thực hiện từng thuật toán sẽ giảm đi nhiều. [...]...
- Phương pháp quét Keypad ma trận dùng ngắt Timer Chào các bạn. Mình không biết phương pháp này các bạn biết chưa, hoặc đã ai post chưa. Nhưng đó là mình suy nghĩ và code ra chứ không hề copy ý tưởng hay code của ai khác . Phương pháp dựa trên dùng ngắt Timer0 dùng cho PIC16F887 do đó sẽ rất là tối [...]...
- So sánh các bộ điều khiển tốc độ động cơ DC Trong bài này, tác giả muốn so sánh bộ điều khiển PID truyền thống và bộ điều khiển Robust Feedforward (thực tế không phải là Feedforward, mà là cải tiến của tác giả) trong quá trình tác giả và bạn của tác giả (Bá Hải) cùng nghiên cứu tại BioRobotics Lab Các bộ điều khiển [...]...
- Matlab - tính toán thời gian chạy ứng dụng, một hàm Hôm trước có record video về Video hướng dẫn lập trình GUI: tạo 1 máy tính đơn giản không thấy các bạn cho ý kiến gì, không hiểu có tốt không nữa, nếu k tốt thì sẽ dừng lại làm việc khác Hôm nay xin giới thiệu một công cụ đơn giản trong Matlab để [...]...



{ 2 comments… read them below or add one }
thank you nhieu lam minh dang rat can cac tai lieu cac lap trinh lien quan den he thong
THANKS BAC HAI NHIEU LAM LAM.NHUNG MA EM CO Y KIEN THE NAY SAO MOT SO TAI LIEU CUA BAC EM LOAD HOAI LA KHONG DUOC DUOC DAN CO VE KHONG TOT.BAC UP TRUC TIEP ANH EM NHAN VAO LINE LA LOAD DUOC NGAY DO PHAI DI LONG VONG MET LAM
MONG BAC CANG NGAY CANG KHOE DE UP NHIEU TAI LIEU CHO ANH EM
THANKS
SEE YOU AGAIN
{ 1 trackback }