hello các bác.
Mình đang học lập trình cho 8051, ở trường thì các thầy dạy dùng ASM . Được cái asem nó sát với VĐK nhất, làm việc cùng asem thì mình có thể hiểu các câu lệnh nó đang sử dụng những thanh ghi nào, truy suất dữ liệu từ các ô nhớ thế nào.
Nhưng mà dùng asem thì hơi bị lăng nhằng, dài dòng và cũng khó nữa. Bây giờ mình thấy phần lớn lập trình cho 8051 đều dùng phần mềm Keil-C . Nó thì dùng ngôn ngữ C ( mình mới làm quen, nhưng cũng thấy là nó đỡ phức tạp hơn assembly). Nhưng có điều mình thắc mắc có cách nào để mình có thể biết các câu lệnh trong C thì nó dùng những ô nhớ, thanh ghi nào không
ví dụ như là: Lệnh quay vòng FOR ở bên dưới ý
Phải nói là các thầy cũng bảo nên nắm vững lập trình bằng asem trước vì nó là cơ bản và là nền móng. Còn sau đó mới phát triển lên C cho 8051 thì sẽ tôt hơn vì khi đó mình đã hiểu được bản chất các câu lệnh , các thanh ghi. Nhưng khi viết bằng C thì mình không biết xác định những thanh ghi .
Mình mới tập tành vào vi điều khiển , có gì mọi ngừoi giúp với nhé
Mình đang học lập trình cho 8051, ở trường thì các thầy dạy dùng ASM . Được cái asem nó sát với VĐK nhất, làm việc cùng asem thì mình có thể hiểu các câu lệnh nó đang sử dụng những thanh ghi nào, truy suất dữ liệu từ các ô nhớ thế nào.
Nhưng mà dùng asem thì hơi bị lăng nhằng, dài dòng và cũng khó nữa. Bây giờ mình thấy phần lớn lập trình cho 8051 đều dùng phần mềm Keil-C . Nó thì dùng ngôn ngữ C ( mình mới làm quen, nhưng cũng thấy là nó đỡ phức tạp hơn assembly). Nhưng có điều mình thắc mắc có cách nào để mình có thể biết các câu lệnh trong C thì nó dùng những ô nhớ, thanh ghi nào không
ví dụ như là: Lệnh quay vòng FOR ở bên dưới ý
#include <REGX51.H>
#define tat 0
#define bat 1
/*==========================================*/
sbit led1 = P1^0;
void delay ( long time)
{ long n;
for( n=0; n++; n<time )
{ // ko lam gi ca
}
}
void main( void)
{
while(1)
{
led1 = bat;
delay( 2000);
led1 = tat;
delay( 2000);
}
}
#define tat 0
#define bat 1
/*==========================================*/
sbit led1 = P1^0;
void delay ( long time)
{ long n;
for( n=0; n++; n<time )
{ // ko lam gi ca
}
}
void main( void)
{
while(1)
{
led1 = bat;
delay( 2000);
led1 = tat;
delay( 2000);
}
}
Phải nói là các thầy cũng bảo nên nắm vững lập trình bằng asem trước vì nó là cơ bản và là nền móng. Còn sau đó mới phát triển lên C cho 8051 thì sẽ tôt hơn vì khi đó mình đã hiểu được bản chất các câu lệnh , các thanh ghi. Nhưng khi viết bằng C thì mình không biết xác định những thanh ghi .
Mình mới tập tành vào vi điều khiển , có gì mọi ngừoi giúp với nhé
Comment