09-12-2008, 12:32 AM | #1 |
Nhập môn đệ tử
Tham gia ngày: Nov 2008
Bài gửi: 1
: |
các pác cho e hỏi
đâ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--; } } } |
10-12-2008, 01:20 PM | #2 |
Đệ tử 6 túi
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
: |
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? |
10-12-2008, 05:11 PM | #3 |
Đệ tử 6 túi
Tham gia ngày: Jul 2007
Bài gửi: 154
: |
đâ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
|
|
|