PDA

View Full Version : các pác cho e hỏi


cuongtiamo
09-12-2008, 12:32 AM
đây là chứơng trình điều khiển 16 led sáng dồn dùng 2 port b và c nhưng sao nó lại ko chạy mong các pác giúp đỡ,e đưa lên chương trình ccsc và file mô phỏng

#include<16F877A.h>
#include<DEF_16F877A.h>
#fuses NOWDT,PUT,HS,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use fast_io(b)
#use fast_io(c)
int16 sck,slx,bienxoay1,bienluu1,bienxoay2,bienluu2,giat ri1,giatri2;
main()
{
trisb=0;
trisc=0;
while(true)
{
sck=16;
bienluu1=0;
bienluu2=0;
portb=0;
portc=0;
delay_ms(10);
while(sck>0)
{
bienxoay1=1;
bienxoay2=1;
slx=sck;
while(slx>0)
{
while(slx>8)
giatri1=bienluu1|bienxoay1;
portb=giatri1;
delay_ms(10);
bienxoay1=bienxoay1<<1;
slx--;
}
giatri2=bienluu2|bienxoay2;
portc=giatri2;
delay_ms(10);
bienxoay2=bienxoay2<<1;
slx--;
bienluu1=giatri1;
bienluu2=giatri2;
sck--;
}
}
}

lequocbao
10-12-2008, 01:20 PM
bienluu1=0;
bienxoay1=1;
giatri1=bienluu1|bienxoay1;//chổ này kết quả là giatri1=1; đúng không bạn?
portb=giatri1;//xuất 8 bit 1 ra portb phải không?
bienxoay1=bienxoay1<<1;//dịch trái bienxoay1-->8 bit 1 mà bạn dịch trái 1 bit thì cũng đâu có gì thay đổi.
Bạn kiểm tra lại vòng lặp:
while(slx>8)
.
.
.
slx--;
cần phải đặt vào cặp dấu { } không?

tungtot_vl
10-12-2008, 05:11 PM
đâu cần phải làm phức tạm vậy các bác. chỉ cần tạo một mãng hằng số các phần tử theo giá trị các led cần sáng tắt rồi dùng vòng for để truy nhập đến mãng đó là được, vừa đơn giản, vừa gọn