Thăc mắc về code !

Phạm Minh

Thành Viên PIF
Mình viết code không có lỗi nhưng nó chỉ chạy được đúng một lần là đèn sáng luôn không chạy nữa, giúp mình vs :-s
Code:
#include <msp430.h>
unsigned int i;
void l1()
{ for(i=0;i<=7;i++)
{
P1OUT = P1OUT<<1;
_delay_cycles(100000);
}
}
void delay()
{P1OUT = 0XFF;
_delay_cycles(1000000);
}
void l2()
{ for(i=7;i>=1;i++)
{
P1OUT = P1OUT>>1;
_delay_cycles(100000);
}
}
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
P1DIR |= 0XFF;
for(;;)
{
l1();
delay();
l2();
delay();
 
 
}
 
}
 

messier

Ban Chủ Nhiệm
Mình viết code không có lỗi nhưng nó chỉ chạy được đúng một lần là đèn sáng luôn không chạy nữa, giúp mình vs :-s
Code:
void l2()
{ for(i=7;i>=1;i++)
{
P1OUT = P1OUT>>1;
_delay_cycles(100000);
}
}
}
Em nên sửa cái i++ -> i--
Code nên để trong box code để dễ nhìn. Cần coi lại cách trình bày code (tab, xuống hàng,...) :5cool_beat_plaster:
 

dnducphuong

Trứng gà
Qua mấy topic thì hình như thấy thím chưa hiểu cái for :2cool_burn_joss_stick:
for (biểu thức 1 ; biểu thức 2; biểu thức 3) thì trong đó
- Biểu thức 1 là đặt giá trị ban đầu cho biến đếm (thường dùng là các chữ i, j, t, blah blah trong các code của ngta).
- Biểu thức 2 là điều kiện để hoạt động vòng lặp, điều kiện sai thì thoát khỏi vòng lặp.
- Biểu thức 3 là cách biến đổi của biến đếm. Thường là i++, i--. i++ là sau mỗi vòng lặp thì tăng i 1 đơn vị, i-- là ngược lại, giảm 1 đơn vị.

Ví dụ: for (i=1; i<=n; i++) có nghĩa là, i có giá trị là 1, sau mỗi vòng lặp thì tăng 1 đơn vị đến khi nào i>n thì thoát ra khỏi vòng lặp.
Thím nên đọc thêm trong các tài liệu C có rất nhiều trên mạng để hiểu rõ :1cool_byebye:
 
Top