View Single Post
Old 21-01-2011, 02:26 PM   #1
vinhuct
Nhập môn đệ tử
 
Tham gia ngày: Dec 2010
Bài gửi: 4
:
Xin các bác giúp Em tìm lỗi

Em viết chương trính CCS C cho PIC8F4431. Đoạn code va mạch trong file đính kèm.Em muốn hiện cả 2 khối như kiểu đèn tín hiệu giao thông, xanh rồi dến đỏ ở 2 pha đường khác nhau. Nhưng khi mô phỏng thì nó chỉ hiện lần lượt xanh rồi đến đỏ ở từng pha mà không hiện đồng thời cả 2 pha. Mong các Bác sửa giúp.
#include <18F4431.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)

int dvi1,truc1,dvi2,truc2,dvi3,truc3,dvi4,truc4;
int billy[]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7C,0x7,0x7F,0x6F };
int16 i,j,a,c,m,n,o,e ;

void doi()
{
truc1=a/10;
dvi1=a%10;
truc2=c/10;
dvi2=c%10;
truc3=m/10;
dvi3=m%10;
truc4=n/10;
dvi4=n%10;
}
void hien1()
{
for(i=0;i<450;i++)
{
if(input(pin_E2))
{
output_D(0b11111110);

output_B(billy[dvi1]);
delay_us(100);

output_D(0b11111101);

output_B(billy[truc1]);
delay_us(100);
}
else output_B(billy[0]);
delay_us(100);
}}
void hien2()
{
for(i=0;i<450;i++)
{
if(input(pin_E2))
{
output_D(0b111111011);

output_B(billy[dvi2]);
delay_us(100);

output_D(0b111110111);

output_B(billy[truc2]);
delay_us(100);
}
else output_B(billy[0]);
delay_us(100);
}}
void hien3()
{
for(i=0;i<450;i++)
{
if(input(pin_E2))
{
output_D(0b11101111);

output_B(billy[dvi3]);
delay_us(100);

output_D(0b11011111);

output_B(billy[truc3]);
delay_us(100);
}
else output_B(billy[0]);
delay_us(100);
}}
void hien4()
{
for(i=0;i<450;i++)
{
if(input(pin_E2))
{
output_D(0b10111111);

output_B(billy[dvi4]);
delay_us(100);

output_D(0b01111111);

output_B(billy[truc4]);
delay_us(100);
}
else output_B(billy[0]);
delay_us(100);
}}


void hien12()
{


for(j=0;j<11;j++)
{
a=10-j;
doi();
hien1();
if(a==0)
break;
}


for(j=0;j<4;j++)
{
c=3-j;
doi();
hien2();
if(c==0)
break;
}

}
void hien34()

{


for(j=0;j<9;j++)
{
m=8-j;
doi();
hien3();
if(m==0)
break;
}


for(j=0;j<6;j++)
{
n=5-j;
doi();
hien4();
if(n==0)
break;
}

}
void main()
{
set_tris_E(0x00001100);
set_tris_B(0x00);
set_tris_D(0x00);
set_tris_C(0x00);
while(1)
{

hien12();
hien34();
}

}
vinhuct vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn