Dành cho người mới tìm hiểu 8051
Collapse
X
-
em mới bập bẹ học lập trình viết ra cái này cho con robot mini ở trên nhưng báo lỗi :
//chuong trinh di thang theo vach
#include <REGX51.H>
#include<intrins.h>
#define EN12 P1^0;
#define EN34 P1^1;
#define IN1 P1^2;
#define IN2 P1^3;
#define IN3 P1^4;
#define IN4 P1^5;
#define S_phai P3^3;
#define S_trai P3^0;
#define S_truoc P3^2;
#define S_sau P3^1;
#define nen 0;
#define vach 1;
void kiem_tra_vach(void)
{
if ((S_phai&S_trai=nen)&(S_truoc&S_sau=vach)) {di_thang();} // báo lỗi ở dòng này
else if ((S_phai=vach)&(S_trai=nen)) {re_phai();}
else if ((S_phai=nen)&(S_trai=vach)) {re_trai();}
else if ((S_phai=S_trai=S_truoc=S_sau=nen)) {stop();};
}
void di_thang(void)
{EN12=1;EN34=1;IN1=1;IN2=0;IN3=1;IN4=0; }
void re_phai(void)
{EN12=1;IN1=1;IN2=0;EN34=0;}
void re_trai(void)
{EN12==0;EN34==1;IN3==1;IN4==0;}
void stop(void)
{EN12=0;EN34=0;}
void main(void)
{
while (1)
{
kiem_tra_vach;
}
}
nó báo:
DIEU_KHIEN_DONG_CO_CON_MINI.C(17): error C141: syntax error near ';'
DIEU_KHIEN_DONG_CO_CON_MINI.C(17): error C141: syntax error near ';'
DIEU_KHIEN_DONG_CO_CON_MINI.C(17): error C189: '&' on bit/sfr illegal
DIEU_KHIEN_DONG_CO_CON_MINI.C(17): error C141: syntax error near '='
DIEU_KHIEN_DONG_CO_CON_MINI.C(17): error C141: syntax error near ')'
dieu_khien_dong_co_con_mini.c - 5 Error(s), 0 Warning(s).
vậy phải sửa thế nào các bác ?Cung cấp Oscilocope , Inverter , Switching , DC power supply , AC millivolt meter ....
Comment
-
lien lac voi ban qua email nao ??? cho minh nick yahoo cua cau nhe !Nguyên văn bởi quynhĐây là quyển sách khá hay về lạp trinh C cho 8051.
Tui up mãi lên đây ko được.Bạn nào cần thì liên hệ với mình nhé.Quyển này viết bằng tiếng anh, khá cơ bản.Dung lượng gần 5MB
Comment
-
các anh chị có thể giới thiệu cho em vài cuốn sách (tiếng việt càng tốt) để học lập trình vi điều khiển bằng ngôn ngữ C không?
cho em hỏi luôn: có phần mềm nào cho phép mình test chuơng trình mình viết trên 8051 không?không lẽ mỗi lần viết 1 chuơng trình lại phải nạp vào VDK để thử ạ?
cho em cảm ơn chị Quỳnh (vì không biết tuổi nên cho phép em gọi như vậy), những bài viết của chị rất bổ ích
Comment
-
Những câu hỏi của bạn đã thảo luận nhiều trên diễn đàn rồiNguyên văn bởi haquangcác anh chị có thể giới thiệu cho em vài cuốn sách (tiếng việt càng tốt) để học lập trình vi điều khiển bằng ngôn ngữ C không?
cho em hỏi luôn: có phần mềm nào cho phép mình test chuơng trình mình viết trên 8051 không?không lẽ mỗi lần viết 1 chuơng trình lại phải nạp vào VDK để thử ạ?
cho em cảm ơn chị Quỳnh (vì không biết tuổi nên cho phép em gọi như vậy), những bài viết của chị rất bổ ích
Sách: Search với từ khóa "Sách mới TVO hay Tống Văn On"
Phần mềm: Search "Giả lập 8051"
Comment
-
Chao` moi nghuoi`!
Theo mình thì viết gì mà chả được ,viết bằng C hay hơn chứ (mình nghĩ là vậy)học hợp ngữ có vẻ phức tạp trong C có nhiều hàm hay đỡ cho mình !Nguyên văn bởi hicdtheo em thi nhung nguoi moi hoc len viet bang hop ngu thi hay hon
vi qua do minh lam luon ca phan cung cua vdkKhó nhất trên đời làm trang nam tử
Ý chí vững vàng mà tình cảm lại mênh mang
Comment
-
Học cả 2 là tốt nhất!!
Viết Asm nhiều khi còn đơn giản hơn C!
Nhưng C thi` bát buộc phải học vì còn phải dùng nhiều việc khác, ít nhất ở trường nó dạy kekeke!!In Metal ... all trust !!
THRASH TILL DIE !!!
Comment
-
vẫn báo lỗi bác ạ! hic hic
//chuong trinh di thang theo vach
#include <REGX51.H>
#include<intrins.h>
#define EN12 P1_0;
#define EN34 P1_1;
#define IN1 P1_2;
#define IN2 P1_3;
#define IN3 P1_4;
#define IN4 P1_5;
#define S_phai P3_3;
#define S_trai P3_0;
#define S_truoc P3_2;
#define S_sau P3_1;
#define nen 0;
#define vach 1;
void kiem_tra_vach(void)
{
if ((S_phai==S_trai==nen)) {dithang();} // vẫn cái dòng quái quỷ này!
else if (S_phai==vach&&S_trai==nen) {re_phai();}
else if (S_phai==nen&&S_trai==vach) {re_trai();}
else if (S_truoc==S_sau==nen) {stop();};
}
void dithang(void)
{EN12=1;EN34=1;IN1=1;IN2=0;IN3=1;IN4=0; }
void re_phai(void)
{EN12=1;IN1=1;IN2=0;EN34=0;}
void re_trai(void)
{EN12=0;EN34=1;IN3=1;IN4=0;}
void stop(void)
{EN12=0;EN34=0;}
void main(void)
{
while (1)
{
kiem_tra_vach;
}
}
báo lỗi :
DIEU_KHIEN_DONG_CO_CON_MINI.C(21): error C141: syntax error near ';'
DIEU_KHIEN_DONG_CO_CON_MINI.C(21): error C141: syntax error near ')'
dieu_khien_dong_co_con_mini.c - 2 Error(s), 0 Warning(s).Cung cấp Oscilocope , Inverter , Switching , DC power supply , AC millivolt meter ....
Comment
-
Bỏ dấu ; ở dòng quỷ đó đi xem thử!Nguyên văn bởi hiodongvẫn báo lỗi bác ạ! hic hic
//chuong trinh di thang theo vach
#include <REGX51.H>
#include<intrins.h>
#define EN12 P1_0;
#define EN34 P1_1;
#define IN1 P1_2;
#define IN2 P1_3;
#define IN3 P1_4;
#define IN4 P1_5;
#define S_phai P3_3;
#define S_trai P3_0;
#define S_truoc P3_2;
#define S_sau P3_1;
#define nen 0;
#define vach 1;
void kiem_tra_vach(void)
{
if ((S_phai==S_trai==nen)) {dithang();} // vẫn cái dòng quái quỷ này!
else if (S_phai==vach&&S_trai==nen) {re_phai();}
else if (S_phai==nen&&S_trai==vach) {re_trai();}
else if (S_truoc==S_sau==nen) {stop();};
}
void dithang(void)
{EN12=1;EN34=1;IN1=1;IN2=0;IN3=1;IN4=0; }
void re_phai(void)
{EN12=1;IN1=1;IN2=0;EN34=0;}
void re_trai(void)
{EN12=0;EN34=1;IN3=1;IN4=0;}
void stop(void)
{EN12=0;EN34=0;}
void main(void)
{
while (1)
{
kiem_tra_vach;
}
}
báo lỗi :
DIEU_KHIEN_DONG_CO_CON_MINI.C(21): error C141: syntax error near ';'
DIEU_KHIEN_DONG_CO_CON_MINI.C(21): error C141: syntax error near ')'
dieu_khien_dong_co_con_mini.c - 2 Error(s), 0 Warning(s).
Comment
-
Hi hiodong,
Tôi nghĩ bạn chịu khó tí là chương trình chạy ngon lành thôi.
Một số góp ý cho bạn thế này:
1.Một hàm, cho dễ coi, bạn nên viết theo block rõ ràng:
[ret type] func_name(param1,...)
{
//content here
}
thay vì
[ret type] func_name(param1,...)
{...}
hoặc
[ret type] func_name(param1,...){...}
2.Các phép gán và so sánh nên cách ra một space, theo từng ngoặc() rõ ràng:
a = 5;
tốt hơn là:
a=5;
hoặc :
if((a == 5) && (b == 7))
tốt hơn so với
if(a == 5&&b==7)
3.Hàm gọi thường nằm phía dưới hàm được gọi, hoặc phải khai báo prototype cho hàm được gọi trước.
Như vậy bạn hãy sửa lại chương trình:
1.Đặt các hàm dithang()... lên trên hay khai báo prototype
2.Sửa lại
if((S_phai == S_trai) && (S_trai == nen))
{
dithang(); // chẳng có gì quái quỷ cả!
}
else
{
if(...)
{
}
else
{
}
}
3.
while (1)
{
kiem_tra_vach();
}
thay vì (gọi hàm mà không có() ):
while (1)
{
kiem_tra_vach;
}
Thân !
Comment
dự án của bạn Tra theo mã, xem datasheet và đặt hàng trực tuyến. MicrochipROHMEpsonTaejin
Đặt hàng & tư vấn
Hà Nội024.3640 8561
TP.HCM028.3811 9870
Quét mã hoặc bấm để chat Zalo với R&PChat Zalo
Quét mã hoặc bấm để chat Zalo với R&PChat Zalo
Bài viết mới nhất
Collapse
-
Trả lời cho Tìm bạn thân quen cũ.bởi thuaimiVẫn nhớ và kính trọng Bác cũng các cao nhân trên dientuvietnam.net. Tính từ ngày tham gia trên này cũng đã hơn 20 năm rồi. Quá nhiều thay đổi cả trong công việc và cuộc sống. Nhưng được thấy lại các nick cũ vẫn sáng đèn là thấy vui rồi....-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 16:33 -
-
Trả lời cho Tìm bạn thân quen cũ.bởi nhathung1101Còn sống không lão??? Mất một thời gian chữa bệnh nên quên hỏi thăm.......
-
Channel: Tâm tình dân kỹ thuật
25-10-2026, 03:09 -
-
Trả lời cho Công suất truyền qua lõi máy biến ápbởi nhathung1101Thời buổi năng lượng xanh, nhất là xanh cả mặt... Thì Điện mặt giời, điện gió, sẽ lên ngôi.
Nếu không nắm bắt được cái cơ bản đó thì đi làm coder à? Mà coder giờ thất nghiệp cả lũ vì AI rồi!!!









...
-
Channel: Điện tử công suất
25-10-2026, 03:03 -
-
Trả lời cho Công suất truyền qua lõi máy biến ápbởi quangdonguehChà, lâu lắm rồi nhưng diễn đàn vẫn còn những chủ đề cốt lõi của điện tử công suất...-
Channel: Điện tử công suất
24-10-2026, 07:53 -
-
bởi bqvietNếu muốn tăng công suất cần tăng con chip và tăng biến áp lên lớn hơn. Thiết kế ban đầu dùng TNY25x và biến áp EE16 hoặc EE13. Tăng con chip lên TNY268 vẫn mạch nguyên lý đó và biến áp lên EE19 sẽ nâng công suất ra thêm nhiều. Tăng tối đa...-
Channel: Điện tử công suất
24-10-2026, 02:14 -
-
bởi Nexus 6PMạch này chỉ chạy cho LED 10W trở xuống, còn muốn chạy Led công suất cao thì sao bác thớt ơi?-
Channel: Điện tử công suất
22-10-2026, 14:33 -
-
bởi Nexus 6PMạch này chỉ chạy cho LED 10W trở xuống, còn muốn chạy Led công suất cao thì sao bác thớt ơi?-
Channel: Điện tử công suất
22-10-2026, 10:49 -
-
Trả lời cho Tìm VR 5 chânbởi dinhthuong80Cảm ơn bác bqviet . Nhưng hình như các VR 5 chân của linhkienchatluong là loại có 2 chân là công tắc đóng mở. Thấy trên Shopee có chỗ bán linh kiện đàn Organ, mà không biết đúng loại không, với lại sao ... mắc dữ dội luôn ấy!!!
...-
Channel: Hướng dẫn tìm thông tin linh kiện
19-10-2026, 11:30 -
-
Trả lời cho Tìm VR 5 chânbởi bqvietTrang sản phẩm này có loại 5 chân và 8 chân
https://linhkienchatluong.vn/chiet-a...doi_s1595.aspx
Ngoài ra một trang cùng cấp với nó có loại 6 chân nữa, chắc đủ cho người muốn tìm....-
Channel: Hướng dẫn tìm thông tin linh kiện
17-10-2026, 17:19 -
-
bởi dinhthuong80Chào cả nhà, chúc cuối tuần vui vẻ!
Hôm nay mình lên đây nhờ ai biết chỉ dùm biến trở 5 chân này tên gọi là gì, có thể mua ở đâu vậy? Xin cám ơn nhiều! ...-
Channel: Hướng dẫn tìm thông tin linh kiện
-
Comment