PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

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
Prev Previous Post   Next Post Next
Old 21-04-2011, 11:20 PM   #1
saobang
Đệ 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);
}
}
chỗ cái hàm timer đó cách tính số vòng như thế nào vậy?
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!
saobang vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 06:37 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam