PDA

View Full Version : led đơn,làm mãi mà chưa được???


công sinh
29-09-2013, 11:26 PM
em có bài này:
Viết chương trình và mô phỏng Proteus mạch điều khiển 8 Led đơn hoạt động 3 mode và thời gian đáp ứng nhanh.
code e viết thế này,mọi người xem giúp e thủ nó bị lỗi gì mà nó vần ko chạy được:
#include <16F877A.h>
#use delay(clock= 20M)
int8 mode,i;
byte temp;
#byte portB=0x06
#byte portD=0x08
/////////////////
#int_RB
void RB_isr(void)
{
mode++;
if(mode==4)
mode=1;

}
/////////////////
void program1();
void program2();
void program3();
/////////////////

void main()
{
set_tris_b(0x01);
set_tris_d(0x00);
enable_interrupts(INT_RB);
enable_interrupts(GLOBAL);

mode=0;
while(1)
{
switch(mode)
{
case 1 : program1(); break;
case 2 : program2(); break;
case 3 : program3(); break;

}
}
}
/////////////////
void program1() {
output_D(0xFF);
delay_ms(50);
output_D(0x00);
delay_ms(50);
}
void program2()
{
temp=0xFF;
for(i=0;i<=8;i++)
{
output_D(temp);
delay_ms(50);
temp>>=1;
}
}

void program3()
{
temp=0xFF;
for(i=0;i<=8;i++)
{
output_D(temp);
delay_ms(50);
temp<<=1;
}
}

qloi
12-10-2013, 01:24 PM
em có bài này:
Viết chương trình và mô phỏng Proteus mạch điều khiển 8 Led đơn hoạt động 3 mode và thời gian đáp ứng nhanh.
code e viết thế này,mọi người xem giúp e thủ nó bị lỗi gì mà nó vần ko chạy được:
#include <16F877A.h>
#use delay(clock= 20M)
int8 mode,i;
byte temp;
#byte portB=0x06
#byte portD=0x08
/////////////////
#int_RB
void RB_isr(void)
{
mode++;
if(mode==4)
mode=1;

}
/////////////////
void program1();
void program2();
void program3();
/////////////////

void main()
{
set_tris_b(0x01);
set_tris_d(0x00);
enable_interrupts(INT_RB);
enable_interrupts(GLOBAL);

mode=0;
while(1)
{
switch(mode)
{
case 1 : program1(); break;
case 2 : program2(); break;
case 3 : program3(); break;

}
}
}
/////////////////
void program1() {
output_D(0xFF);
delay_ms(50);
output_D(0x00);
delay_ms(50);
}
void program2()
{
temp=0xFF;
for(i=0;i<=8;i++)
{
output_D(temp);
delay_ms(50);
temp>>=1;
}
}

void program3()
{
temp=0xFF;
for(i=0;i<=8;i++)
{
output_D(temp);
delay_ms(50);
temp<<=1;
}
}

Bác phải mô tả koi lúc chạy nó có biểu hiện j mới được. về cơ bản chương trình như zị là dduoscj rồi chỉ thiếu vài cái quan trọng thôi ví dụ như bác thiếu "#fuses hs" trong hàm ngắt bác phải thêm chống nảy phím nữa cho mạch hoạt động ổn định.nhưng mà bác sài ngắt chi cho nó khó có thể dùng hàm input_bit(pinx) để nhận biết nhấn phím và cho hẳn nó vào vòng lặp chính vừa tiết kiệm tài nguyên lại vừa dể.