|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
21-04-2011, 11:20 PM | #1 |
Đệ tử 1 túi
Tham gia ngày: Apr 2011
Nơi Cư Ngụ: Quảng Nam
Bài gửi: 13
: |
Nhờ các anh chị giải thích giúp em đoạn code
Em tìm được đoạn code này ( đọc encode và tính toán hiển thị số vòng động cơ lên LCD 16x2) nhưng còn vài chỗ chưa hiểu vì ngôn ngữ C em chưa bik nhiều lắm, mong anh chị giải thích giùm em. Em cũng mới tìm hiểu về Pic.
Code:
#include <16f877a.h> #include <def_877a.h> #include <lcd_lib_4bit.c> #use delay(clock=20000000) int8 nghin,tram,chuc,donvi; void tinhtoan_hienthi(int16 x); int16 count,so_vong,int_count1,x; #define INTS_PER_SECOND1 25 #int_rtcc // Ngat Timer 0 void Timer0_isr() // Dem so vong quay dong co { count++; } #INT_TIMER1 // Chuong trinh ngat Timer 1 void Timer1_isr() { // Ham duoc goi khi Timer1 tran (65535->0) // //Timer1 dinh thoi 1s // if(--int_count1==0) //Em chưa hiểu cái hàm timer { //này nó như thế nào int_count1 = INTS_PER_SECOND1; so_vong = (count*255 + get_timer0())/400; // count = 0; set_timer0(0); } } void tinhtoan_hienthi(int16 x) // giải thích lun giúp em hàm này {nghin = x / 1000 + 0x30; x = x % 1000; tram = x / 100 + 0x30; // tach so hang tram x = x % 100; // chia lay phan du chuc = x / 10 + 0x30; // tach lay phan chuc donvi = x % 10 + 0x30; // phan don vi lcd_putcmd(0xC0); printf(lcd_putchar,"toc do="); lcd_putchar(nghin); lcd_putchar(tram); lcd_putchar(chuc); lcd_putchar(donvi); } void init() { lcd_putcmd(0x80); int_count1 = INTS_PER_SECOND1;//19 lan 1 giay setup_timer_0 (RTCC_DIV_1|RTCC_EXT_H_TO_L); // Timer0 is Counter set_timer0(0); set_timer1(15535); setup_timer_1(T1_INTERNAL | T1_DIV_BY_4); // Timer1 is Timer enable_interrupts(INT_RTCC); enable_interrupts(INT_TIMER1); enable_interrupts(GLOBAL); count = 0; lcd_init(); delay_ms(200); printf(lcd_putchar,"toc do dong co"); } void main() { init(); //setup_adc_ports(NO_ANALOGS); //setup_adc(ADC_OFF); //setup_psp(PSP_DISABLED); //setup_spi(FALSE); so_vong = 0;// khoi tao gia tri while(1) // doan chuong trinh hien thi len LCD { tinhtoan_hienthi(so_vong); delay_ms(500); } } với lại các lệnh tách số đó em nên hiểu như thế nào ? Em hỏi hơi nhiều nhỉ? hihi. nhưng mà nghĩ ko ra nên đành lên đây hỏi vậy! em cảm ơn trước ạh! |
|
|