Cốt
P1=P1>>1;
dịch sang phải 1 bít.
P1=P1>>1;
dịch sang phải 1 bít.
p1=1; => P1=00000001b; sau đó P1>>=1; => (0000001b>>=1) = 00000000; bit 1 khi nãy sẽ tràn xuống CY giờ P0 sẽ =0 nên các phép dịch bit sau thì P0 vẫn là 0-> chả có đèn nào sáng
p1=1; => P1=00000001b; sau đó P1>>=1; => (0000001b>>=1) = 00000000; bit 1 khi nãy sẽ tràn xuống CY giờ P0 sẽ =0 nên các phép dịch bit sau thì P0 vẫn là 0-> chả có đèn nào sáng
While(1) { P1=0xff; For(i=0;i<8;i++){ P1=P1>>1; delay(x_mini_giay);// x_mini_giay là thời gian bạn muốn làm chậm chưong trình, hàm delay bạn có thể kiếm ở trên diễn đàn có rất nhiều bài về delay } }
While(1) { P1=0x01; For(i=0;i<8;i++) { P1=P1<<1;// Viết ngắn là P1<<=1; delay(x_mini_giay); } }
unsigned char Mang[10] = {0,1,2,3,4,5,6,7,8,9};// có thể khai báo là unsigned char Mang[] = {0,1,2,3,4,5,6,7,8,9}; không cần khai báo số phần tử.
unsigned char Mang[10] = {0,1,2,3,4,5,6,7,8,9}; unsigned char x=0; while(1) { P1=Mang[x%10];// khi x%10 x "chia lấy dư cho" 10 thì các giá trị trả lại có thể có là 0,1,2,3,...9 // trường hợp này bạn đưa ra mảng hơi đặc biệt nên rất dễ gây nhầm lẫn thay đổi lại giá trị của mảng Mang[] bằng các giá trị khác // để dễ giải thích hơn giả sử ( unsigned char Mang[]={10,15,34,68,32,65,32,76,3, 35}; ) // Khi x=0 -> x%10=0; nên P1=Mang[0]; -> P1=10; vì 10 là phần tử thứ 0 của mảng Mang[] // Khi x=1 -> x%10=1; nên P1=Mang[1]; -> P1=15; vì 15 là phần tử thứ 1 của mảng Mang[] // .................................... // Khi x=9 -> x%10=9; nên P1=Mang[9]; -> P1=35; vì 35 là phần tử thứ 9 của mảng Mang[] // Đến x=10 thì lặp lại quá trình như trên x+=1;// Viết ngắn của x=x+1; }
#include <REGX52.H> void delay (unsigned int ms) { unsigned int x,i; for(i=0; i<ms; i++) { for(x=0;x<1000;x++); } } main() { unsigned int i; while(1) { P1=0x01; for(i=0;i<8;i++) { P1=P1<<1;// Vi?t ng?n là P1<<=1; delay(500); } } }
#include <REGX52.H> void delay (unsigned int ms) { unsigned int x,i; for(i=0; i<ms; i++) { for(x=0;x<1000;x++); } } main() { while(1) { P1=0x01; for(i=0;i<8;i++) { P1=P1<<1;// Vi?t ng?n là P1<<=1; delay(500); } } }
#include <REGX52.H> void delay (unsigned int ms) { unsigned int x,i; for(i=0; i<ms; i++) { for(x=0;x<1000;x++); } } main() { while(1) { P1=0; // 00000000b delay(500); P1=0x01; // 00000001b delay(500); P1=0x03; // 00000011b delay(500); P1=0x07; // 00000111b delay(500); P1=0x0f; // 00001111b delay(500); P1=0xf1; delay(500); P1=0xf3; delay(500); P1=0xf7; delay(500); P1=0xff; delay(500); } }
Comment