PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) (http://www.picvietnam.com/forum/forumdisplay.php?f=12)
-   -   led đơn,làm mãi mà chưa được??? (http://www.picvietnam.com/forum/showthread.php?t=32893)

công sinh 29-09-2013 11:26 PM

led đơn,làm mãi mà chưa được???
 
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

Trích:

Nguyên văn bởi công sinh (Post 83130)
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ể.


Múi giờ GMT. Hiện tại là 11:34 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam