Cốt
P1=P1>>1;
dịch sang phải 1 bít.
P1=P1>>1;
dịch sang phải 1 bít.
cám ơn bác đã quan tâm tại e ko có học qua trường lớp tự nghiên cứu để viết code thôi ạ à mà bác có cách nào để viết led sáng tuần tự rồi tắt tuần tự kop1=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