View Single Post
Old 12-01-2007, 07:46 PM   #4
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh


Nhấn INC tăng 1 đơn vị trên led.DEC giảm 1 đơn vị
Code:
#include <16F877A.h>
#include <DEFS_16F877A.h>
#fuses   NOWDT,PUT,HS,NOPROTECT,NOLVP
#use     delay(clock = 10000000)
#define  LED_PORT   PORTD
#define  led_1      0b00001110
#define  led_2      0b00001101
#define  led_3      0b00001011
/*---------------------------------------------------------------------------------------------
Khai bao cac bien toan cuc
---------------------------------------------------------------------------------------------*/
const unsigned int digit[] = {0b00000000,0b00010000,0b00100000,0b00110000,0b01000000,
                              0b01010000,0b01100000,0b01110000,0b10000000,0b10010000};
int number,led_donvi_number,led_chuc_number,led_tram_number;
/*---------------------------------------------------------------------------------------------
Khai bao nguyen mau cac ham su dung
---------------------------------------------------------------------------------------------*/
void number_to_led_number(void);
void display(int led_i,int led_number);
void led_sweep(void);
/*---------------------------------------------------------------------------------------------
 Chuong trinh chinh
---------------------------------------------------------------------------------------------*/
void main(void)
{
   set_tris_B(0x03);                  // RB0 & RB1 la input
   set_tris_D(0x00);
   PORTD = 0x00;
   while(true)
   {
        if(!bit_test(PORTB,0))
        {
           led_sweep();               // ~12ms
           while(!bit_test(PORTB,0))
           {
             led_sweep();
           }
           led_sweep();               // ~12ms
           number++;
           number_to_led_number();
        }
        if(!bit_test(PORTB,1))
        {
           led_sweep();               // ~12ms
           while(!bit_test(PORTB,1))
           {
             led_sweep();
           }
           led_sweep();               // ~12ms
           number--;
           number_to_led_number();
        }
        led_sweep();
   }
}
/*---------------------------------------------------------------------------------------------
Ham chuyen tu number sang cac so tuong ung tren led
---------------------------------------------------------------------------------------------*/
void number_to_led_number(void)
{
  led_donvi_number = number % 10;
  led_chuc_number  = (number / 10) % 10;
  led_tram_number  = number / 100;
}
/*---------------------------------------------------------------------------------------------
Ham hien thi so "number" len ledi
---------------------------------------------------------------------------------------------*/
void display(int led_i,int led_number)
{
   LED_PORT = led_i|digit[led_number];
}
/*---------------------------------------------------------------------------------------------
Ham quet led
---------------------------------------------------------------------------------------------*/
void led_sweep(void)
{
 int loop;
 for(loop = 0;loop <= 3;loop ++)
   {
       display(led_1,led_tram_number);
       delay_ms(1);
       display(led_2,led_chuc_number);
       delay_ms(1);
       display(led_3,led_donvi_number);
       delay_ms(1);
   }
 }
File Kèm Theo
File Type: rar Key_debounce.rar (24.9 KB, 473 lần tải)
__________________
Ngày mai bắt đầu từ ngày hôm nay

Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này:
http://www.picvietnam.com/forum//showthread.php?t=1263
nhh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn