Thông báo
Collapse
No announcement yet.
HƯỚNG DẪN LẬP TRÌNH KEIL C CHO 8051-[Chỉ dành post bài hướng dẫn]
Collapse
X
-
Hình như có topic bản KEIL full ở ngoài rồi màNguyên văn bởi BangHien Xem bài viếtChào anh em .Mình đang làm đồ án .Khi dịch ra file Hex không được vì mình dùng bản giới hạn limti giới hạn 2k nên không dịch được .Nếuai có chia sẻ cho anh em với mình cảm ơn nhiều .
Cung cấp Oscilocope , Inverter , Switching , DC power supply , AC millivolt meter ....
Comment
-
GUI hiodong
Thật hả ban co thể gưi cho minh bản đo được không mình rất cần .Mấy hôm nưa nộp đồ án mà gửi cho mình nhé theo Mail BangHienBKHN@yahoo.com.Mình cám ơn nhé
Comment
-
Bạn tự dowload nhé ! nhớ đọc kỹ hướng dẫn sử dụng !Nguyên văn bởi BangHien Xem bài viếtThật hả ban co thể gưi cho minh bản đo được không mình rất cần .Mấy hôm nưa nộp đồ án mà gửi cho mình nhé theo Mail BangHienBKHN@yahoo.com.Mình cám ơn nhé
http://rapidshare.com/files/48328688/Keil_809A.rarCung cấp Oscilocope , Inverter , Switching , DC power supply , AC millivolt meter ....
Comment
-
Gửi Ngô Hải Bắc
Chào ban có thể giúp mình được không không hiểu tại sao mình viết chương trình như thế này mà bao không dịch được sang File hex hình như là nó bảo mã code > 2k nên không dịch được có phải không nếu ai biết giúp mình nhé .Mình cám ơn nhiều .Nó báo lỗi như sau:
SCLKBuild target 'Target 1'
compiling testdungluong.c...
linking...
BL51 BANKED LINKER/LOCATER V6.05 - SN: Eval Version
COPYRIGHT KEIL ELEKTRONIK GmbH 1987 - 2007
"STARTUP.obj",
"testdungluong.obj"
TO "testdungluong"
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_SHOWPARAMETER?TESTDUNGLUONG
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?INTADE?TESTDUNGLUONG
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_READBITMETERIC?TESTDUNGLUONG
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?INTADE?TESTDUNGLUONG
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_DELAY?TESTDUNGLUONG
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?INTADE?TESTDUNGLUONG
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_CONVERT?TESTDUNGLUONG
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?INTADE?TESTDUNGLUONG
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?WAIT?TESTDUNGLUONG
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?INTADE?TESTDUNGLUONG
************************************************** ****************************
* RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 0801H BYTE (100%) *
************************************************** ****************************
Program Size: data=104.0 xdata=0 code=3414
LINK/LOCATE RUN COMPLETE. 5 WARNING(S), 0 ERROR(S)
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_SHOWPARAMETER?TESTDUNGLUONG
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?INTADE?TESTDUNGLUONG
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_READBITMETERIC?TESTDUNGLUONG
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?INTADE?TESTDUNGLUONG
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_DELAY?TESTDUNGLUONG
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?INTADE?TESTDUNGLUONG
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_CONVERT?TESTDUNGLUONG
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?INTADE?TESTDUNGLUONG
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?WAIT?TESTDUNGLUONG
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?INTADE?TESTDUNGLUONG
*** FATAL ERROR L250: CODE SIZE LIMIT IN RESTRICTED VERSION EXCEEDED
MODULE: C:\KEIL\C51\LIB\C51S.LIB (-----)
LIMIT: 0800H BYTES
Target not created
Comment
-
Tôi có chiêu này hy vọng bạn thi triển được. Chiêu này dựa trên nguyên tắc là cứ mỗi khi nhảy vào chương trình con thì PC = PC + 2, địa chỉ hiện hành được lưu vào stack. Sau khi thự hiện xong chương trình con thì VDK sẽ lấy địa chỉ này trả cho PC để thực hiện tiếp chương trình chính.Nguyên văn bởi hiodong Xem bài viếtBác nào biết cách reset bằng phần mềm ko? thay cho việc ấn nút reset
Dựa vào đó, tôi viết chương trình con, ở cuối chương trình con này, tôi push giá trị 00H vào stack 2 lần (tức là địa chỉ mà con trỏ PC sẽ nhảy về sau khi thực hiện xong chương trình con). Như vậy có nghĩa là sau khi thực hiện xong chương trình con thì chương trình của tôi sẽ thực hiện lại bắt đầu từ địa chỉ 00H, điều này rất giống với việc ta nhấn nút reset, chỉ ngoại trừ việc trạng thái các thanh ghi và nội dung trong RAM không được trả về giá trị ban đầu, nếu cần ta phải có một đoạn chương trình để khởi tạo lại các giá trị này.
Nói thì dài vậy nhưng viêt thì chỉ có nhiêu đây thôi:
Code:sub: ... Your code here ... clr A push ACC push ACC ret
Comment
-
bạn nhúng như sau:Nguyên văn bởi plain Xem bài viếtCó ai biết nhúng hợp ngữ vô chương trình C ko? làm ơn giúp mình với, mình cảm ơn nhiều
#pragma asm
;các lệnh ASM ở đây
JMP $ ; 1 ví dụ
#pragma endasm
email:mahaco@fpt.vn
Comment
-
Bạn làm ơn chỉ giúp tôi cách truy cập vào các biến C bằng các câu lệnh hợp ngữ đã được nhúng vào chương trình C, cả cách gọi các hàm của C từ trong câu lệnh hợp ngữ, gọi hàm hợp ngữ từ trong C. Cám ơn bạn nhiềuNguyên văn bởi hoctro89xxx Xem bài viếtbạn nhúng như sau:
#pragma asm
;các lệnh ASM ở đây
JMP $ ; 1 ví dụ
#pragma endasm
Comment
-
Nguyên văn bởi plain Xem bài viếtBạn làm ơn chỉ giúp tôi cách truy cập vào các biến C bằng các câu lệnh hợp ngữ đã được nhúng vào chương trình C, cả cách gọi các hàm của C từ trong câu lệnh hợp ngữ, gọi hàm hợp ngữ từ trong C. Cám ơn bạn nhiều
cách truy cập vào các biến C bằng các câu lệnh hợp ngữ đã được nhúng vào chương trình C
Bạn khai báo biến count bên C phía sau thêm _at_ địa chỉ trong ram
...
trong đoạn mã asm nhúng ở phần đầu khai báo biến tại địa chỉ trong ram trên
ví dụ: equ dem địa chỉ trong ram
nếu bên C bạn viết: count=2;
vào trong đoạn asm bạn viết
mov dem,#30 ; nếu địa chỉ khai báo > 7fh bạn phải thông qua r0và r1
sau lệnh asm trên thì count bên C sẽ = 30
gọi hàm hợp ngữ từ trong C:
để đơn giản thay vì tạo hàm hợp ngữ bạn tạo hàm C và đặt các mã asm trong đó - mỗi cấu trúc hàm là của C thôi
lúc này ở C cứ gọi hàm thoải mái nó sẽ thực hiện đoạn asm trong hàm bạn đã làm.
cách gọi các hàm của C từ trong câu lệnh hợp ngữ
còn cái này thì tôi lại phải làm: dùng các cờ để khi nhảy vào đoạn asm thì kiểm tra cờ để nhảy đến chỗ cần thiết, khi ra khỏi đoạn này lại đặt cờ cần thiết- ở dưới đoạn asm có lệnh của C kiểm tra các cờ này để gọi hàm C cho đúng, thực hiện xong lại quay về đầu phần asm để đặt lại cờ và vào trong đó.
muốn ra khỏi asm mà không thực hiện gọi hàm thì bạn quy định cờ thôi.
tóm lại phần này là do tư duy của mỗi người làm -tôi thì chưa nghĩ cách nào hay hơn, nhưng cách trên tôi đã làm và chạy ngon rồi.
email:mahaco@fpt.vn
Comment
-
Cám ơn bạn hoctro89xxx đã giải đáp thắc mắc của tôi. Nhưng ở đây tôi lại nảy sinh thêm một thắc mắc nữa mong bạn giải đáp: Các biến được khai báo trong C ta đều ko biết địa chỉ (trừ khi thêm _at_) và trong ASM ta có thể thao tác nhầm vào những ô nhớ của các biến C. Vậy là mỗi khi muốn nhúng ASM vào C ta phải thêm _at_ vào phần khai báo cho tất cả các biến C hay sao?
Nhân tiện, bạn có biết cách nào để nhập trực tiếp số nhị phân trong C không? tôi đã thử thêm Y vàp rồi nhưng không được. Còn dùng cái macro do bạn nào đó cung cấp thì lại sợ tốn tài nguyên.
Comment
-
Đoạn code của bạn gặp trục trặc ở chương trình con phát dự liệu. Sửa lại như sau:Nguyên văn bởi tienlocSERIAL:
MOV A,#'A'
JNB TI,$ ;co TI duoc set ngay sau khi phat xong 1 ky tu
MOV SBUF,A
LJMP SERIAL
END
Do chương trình của bạn không xóa cờ TI nên nó chỉ phát được một ký tự A duy nhất, sau đó là hắn bị kẹt lại ở câu lệnh JNB TI, $Code:SERIAL: MOV A,#'A' JNB TI, $ ;kiểm tra xem bộ đệm phát đã trống chưa CLR TI ;xóa cờ TI MOV SBUF, A ; truyền dữ liệu trong thanh ghi A ra END.
Comment
-
gặp lỗi này là chương trình chạy lung tung cả lên , các bác cho hỏi đây là lỗi gì ạ ?Nguyên văn bởi diode1447 Xem bài viếtCó khi viết chương trình trong Keil C, có đoạn Warning như sau:
multiple call to segment "hàm gì đó"
caller1 : ...
caller2: ...
thông báo này không thấy có ảnh hưởng gì nhưng mỗi lần thấy nó là thấy ghét, vậy vì sao có nó vậy, và khi nào xóa được nó ?Cung cấp Oscilocope , Inverter , Switching , DC power supply , AC millivolt meter ....
Comment
Bài viết mới nhất
Collapse
-
bởi lvhnHãng nào tùy thích thôi bác! bây giờ các hãng đều hỗ trợ xem qua máy tính hay điện thoại đều được. Gắn Trước tiên mua về cắm nguồn set ip hết xong hãy lắp lên, cam poe chỉ cần 4 lõi là hoạt động bình thường nên 1 dây kéo cho 2 cam vẫn ok
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 15:49 -
-
Trả lời cho Tìm bạn thân quen cũ.bởi lvhnNhớ không nhầm thì lúc còn đi học có gặp chú 1 lần cf bãi xe Nguyễn Kim, giờ quán cf đó nghỉ bán rồi
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 15:44 -
-
Trả lời cho Thắc mắc pin 21v ?bởi lvhnCon số đấy biểu thị gần đúng thôi, cái đồng hồ đó có đảm bảo chính xác hay không? pin có cục lên 4v4 vẫn bình thường. Cái gì cũng có sai số trong phạm vi không quá lớn thì không ảnh hưởng gì đâu, bàn ngay ngón ngắn ngón dài mà
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 15:32 -
-
Trả lời cho Amply bị rò DC 22 voltbởi lvhnThay mấy con transisto nhỏ đầu vào, thường vi sai lỗi hay bị. Khám tổng quát chân các linh kiện xem có bị rỉ sét nhiều không?
-
Channel: Điện thanh
Hôm qua, 15:24 -
-
bởi dinhthuong92Mạch này hiệu suất ra led đạt khoảng 90.7% tại 12V in, 40W out.
-
Channel: Nguồn!
27-07-2026, 10:15 -
-
bởi dinhthuong92Có lẽ nguồn viết bài này chỉ mang tính định tính để nói rằng cần thay đổi tổng trở tải để có Pmax chứ trình bày chưa chi tiết và thấu đáo một cách định lượng. Công thức tổng quát phải có mặt L mới được, và nói là "tổng...
-
Channel: Nguồn!
27-07-2026, 10:09 -
-
Trả lời cho [Chia sẻ] Tổng hợp các công ty AI Việt Nam đang làm gì thật sự — Từ voicebot, computer vision đến AI agentsbởi nguyendinhvanCàng ngày, CNTT càng trở nên lôi thôi , rách việc.
Cái AI và Ge... trên trình duyệt chỉ tổ làm vướng mắt, mất thì gian.
Tôi toàm phải mất cộng tắt nó đi.-
Channel: Xu hướng, nhu cầu và thị trường
25-07-2026, 14:59 -
-
bởi trung30000Em có con amply 12 sò D 718 và e688 , biến áp 15A, 30v 0 30 v, một kênh thì hoạt động bình thường, kênh còn lại nổ bụp bụp, sột sột, đèn tín hiệu nhảy lên vạch max, khoảng 4 đến 5 giây, sau đó đèn tín hiệu trả về mức không, Em thấy như...
-
Channel: Điện thanh
24-07-2026, 13:50 -
-
Trả lời cho Tìm hiểu máy hàn lăn (Rolling Welding)bởi hoang_3ibác cần thì liên hệ Em: mayhanhaivuong.com (0903238399)...
-
Channel: Điện tử công nghiệp
24-07-2026, 10:58 -
-
Trả lời cho Công thức tính định luật kirchhoffbởi abcnewmemberGiải bằng hệ phương trình bật nhất 3 ẩn.
...
-
Channel: Hỗ trợ học tập
23-07-2026, 14:52 -
Bản dùng thử chỉ được 2k chứ sao nữa

Comment