View Single Post
Old 27-12-2010, 09:21 PM   #4
tdm
Đệ tử 7 túi
 
Tham gia ngày: May 2005
Bài gửi: 258
:
Trích:
Nguyên văn bởi troiuuuu View Post
Ko chạy bạn ơi!hix,sao bài mình viết chỉ chạy từ 0-->9 thôi còn chuyển sang led hàng chục thì nó ko chạy nữa?
Bạn coi thử mình viết cách này nó sai chỗ nào?khi bấm cái button từ 1-->9 thì Trên Led hàng đơn vị chạy ok từ 0--->9,còn bấm cái thứ 10 thì nó ko chạy nữa.
================================================== ==================
//Chuong trinh LED
//Nhom thuc hien:Nhom 2
//Ngay thuc hien:25/12/2010
//************************************************** ****************
#include<16f877a.h>
#fuses NOWDT,PUT,HS,NOPROTECT
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP
#use delay(clock=4000000)
#use fast_io(B)
#use fast_io(D)
#byte portB=0x06
#byte portD=0x08
const unsigned char digital[]={0b00000001,0b00000010,0b00000011,0b00000100,0b00 000101,0b00000110,0b00000111,0b00001000,0b00001001 };
//Chuong trinh ngat
#int_ext
void ngat_RB0()
{
unsigned int press_count;
if(press_count<10)
{
portD=digital[press_count];
++ press_count;
}
if (press_count==10)
{
press_count==0x00010000;//thừa dấu bằng
output_d(press_count);
}
if(press_count==20)
{
portD=0x00100000;
}
if(press_count==30)
{
portD=0x00110000;
}
if(press_count==40)
{
portD=0x01000000;
}
if(press_count==50)
{
portD=0x01010000;
}
if(press_count==60)
{

portD=0x01100000;
}

if(press_count==70)
{
portD=0x01110000;
}
if(press_count==80)
{
portD=0x10000000;
}
if(press_count==90)
{
portD=0x10010000;
}

}
//Chuong trinh chinh
main()
{
set_tris_B(0x00000001);
set_tris_D(0);
enable_interrupts(GLOBAL);
enable_interrupts(INT_EXT);
ext_int_edge(H_To_L);
portD=0x00;
while(true);//thừa dấu ;
{
}
}
nó chạy từ 0....9 rồi không tăng nữalà phải rồi (xem giải thích trong code)
Code:
//Chuong trinh ngat
#int_ext
void ngat_RB0()
{    
    unsigned int press_count;
    if(press_count<10)  //tại đây hiển thị từ 0...9
    {
    portD=digital[press_count];
    ++ press_count;
    }                                    
     if (press_count==10)
    {
    press_count=0x00010000;//tại đây  lúc này giá trị (press_count là 16) khi vào ngắt lần nữa giá trị (press_count là 16)
không thỏa các điều kiện bạn đưa ra lên nó luôn thoát khỏi ngắt.
    output_d(press_count);
    }
      if(press_count==20)
    {
    portD=0x00100000;
    }
     if(press_count==30)
    {    
    portD=0x00110000;
    }
     if(press_count==40)
    {
    portD=0x01000000;
    }
     if(press_count==50)
    {
    portD=0x01010000;
    }
    if(press_count==60)
    {
        
    portD=0x01100000;
    }
                        
    if(press_count==70)
    {
    portD=0x01110000;
    }
    if(press_count==80)
    {
    portD=0x10000000;
    }
    if(press_count==90)
    {        
    portD=0x10010000;
    }
                                        
}
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề.

thay đổi nội dung bởi: tdm, 27-12-2010 lúc 09:38 PM.
tdm vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn