Em mới hoc vi điều khiển đưoc đúng 1 tháng.NHận đề tài bài tập lớn đẻ về nghiên cứu trước.Em đọc sách thấy để tạo trễ cần tinh thời gian trễ của từng lện nhưng sách không ghi thời gian trễ của mỗi câu lệnh là bao nhiêu?em cần trễ tới 1s của đèn led.Em mới hoc nên chỉ biết mỗi ASM nhưng cũng không hiểu cặn kẽ đưoc vì câu lệnh khó hiểu quá.mong mọi ngừoi giup cho.Neu có thể viết cho em bằng cả C và ÁM thì tốt quá .Em muốn xem nó khác nhau thế nào.Em cũng đã cài proteus nhưng chưa biết sử dụng .Ai có sách hướng dẫn post lên hộ em.Em cám ơn.Em thấy library cua em chư có đèn LED thì fải .Ai co librảy mới thi post cho em luôn cũng đưoc.Em cám ơn mọi người.
Thông báo
Collapse
No announcement yet.
Hỏi về trễ trong 8051
Collapse
X
-
Xài cái này nèm muốn delay bao nhiêu thì nhập như sau
Dòng đầu tiên nhập tần số thạch anh (MHz), thường là 11.0592
Dòng 2 nhập thời gian cần delay ở us
Enter, copy đoạn mã đó, sửa VAR1,2,3 thành R1, R2, R3, xong khi muốn delay thì chỉ cần Call Delay_500ms, xong chuyện!
Vd:
Delay_500ms:
push 01
push 02
push 03
TT0: MOV R3,#4
MOV R2,#132
MOV R1,#116
TT1: DJNZ R1,TT1
DJNZ R2,TT1
DJNZ R3,TT1
pop 03
pop 02
pop 01
RETAttached Files
-
ah hay quá,gặp đúng bài dùng lệnh push,pop rồi.Tớ cũng đang cày cái món này đây,bạn natra giúp tớ học 2 lệnh này vớiNguyên văn bởi natra2k2.......
Vd:
Delay_500ms:
push 01
push 02
push 03
TT0: MOV R3,#4
MOV R2,#132
MOV R1,#116
TT1: DJNZ R1,TT1
DJNZ R2,TT1
DJNZ R3,TT1
pop 03
pop 02
pop 01
RET
cái câu màu đỏ bạn có thể sửa lại như vầy sẽ dễ nhớ hơn:
DJNZ R1,$
cái đó có câu khẩu quyết hành động là: degree jump non zero R1,nhảy tại chỗ.Nghĩa là giảm thanh ghi R1,khi thanh ghi R1 chưa bằng 0 thì anh cứ việc giậm chân tại chỗ,tức là tiếp tục giảm....
Comment
-
dùng keil C có hàm _nop_() trong thu viện intrins.hNguyên văn bởi tre1978Em mới hoc vi điều khiển đưoc đúng 1 tháng.NHận đề tài bài tập lớn đẻ về nghiên cứu trước.Em đọc sách thấy để tạo trễ cần tinh thời gian trễ của từng lện nhưng sách không ghi thời gian trễ của mỗi câu lệnh là bao nhiêu?em cần trễ tới 1s của đèn led.Em mới hoc nên chỉ biết mỗi ASM nhưng cũng không hiểu cặn kẽ đưoc vì câu lệnh khó hiểu quá.mong mọi ngừoi giup cho.Neu có thể viết cho em bằng cả C và ÁM thì tốt quá .Em muốn xem nó khác nhau thế nào.Em cũng đã cài proteus nhưng chưa biết sử dụng .Ai có sách hướng dẫn post lên hộ em.Em cám ơn.Em thấy library cua em chư có đèn LED thì fải .Ai co librảy mới thi post cho em luôn cũng đưoc.Em cám ơn mọi người.
cho phép trể trong 1 chu kì máy
void delay(unsigned long time)
{
unsigned long i;
for(i=0;i<=time;i++)
{
_nop_();
}
}SHARE KHO PHIM LỚN
Comment
-
Hì hì, tiền bối đang đùa hay giỡn vậy!Nguyên văn bởi voduychauah hay quá,gặp đúng bài dùng lệnh push,pop rồi.Tớ cũng đang cày cái món này đây,bạn natra giúp tớ học 2 lệnh này với
cái câu màu đỏ bạn có thể sửa lại như vầy sẽ dễ nhớ hơn:
DJNZ R1,$
cái đó có câu khẩu quyết hành động là: degree jump non zero R1,nhảy tại chỗ.Nghĩa là giảm thanh ghi R1,khi thanh ghi R1 chưa bằng 0 thì anh cứ việc giậm chân tại chỗ,tức là tiếp tục giảm....
Thôi kệ, đã hủi thì tại hạ chả lời! hehe!
POP: lưu giá trị của đối số (R1) vào ngăn trên cùng của stack, PUSH là lấy giá trị của ngăn trên cùng của stack gán vào đối số (R1), PUSH R1, POP R1, stack làm việc theo nguyên tắc vào trước ra sau (FILO) nên khi sử dụng nhớ thứ tự POP và PUSH cho đúng, ở vd đềlay trên thì PUSH theo thứ tự 01, 02, 03, POP theo thứ tự 03, 02, 01, lưu ý dùng 01, 02, 03 không dùng R1, R2, R3 vì lệnh này chỉ làm việc với kiểu đia chỉ trực tiếp (ngoài các thanh ghi đặc biệt như ACC, B ...)!
Nói thêm một chút về stack, stack mặc định nằm ở vị trí 08 đến 1FH trong RAM nội, (24 byte, đối với 8051, còn 8052 thì ... xem datasheet cho chéc!) nếu muốn có stack lớn hơn bạn chuyển thanh ghi stack SP (Stack Pointer) đến 30H trở đi! Khi reset thì SP có giá trị mặc định là 08h!Last edited by natra2k2; 01-05-2006, 19:38.
Comment
-
hì hì tớ cũng đang học con này mà,muốn hỏi cho rõ hơn vì sách vở mù mờ lắm
cái dấu dôla đó là lệnh viết tắt của ASM,bạn sửa lại nó vẫn chạy đúng(trừ trường hợp cái nhãn đó bạn muốn dùng cho câu lệnh khác nữa thì vẫn để nguyên là đúng rồi
nghề của tớ,he he,bạn biết đó,hoàn toàn ko liên quan đến 8051,học cho biết thôi( vì đam mê)
Comment
-
Nếu bạn viết hàm trễ như trên thì trong lúc thực hiện trễ VĐK không thể làm việc gì khác.
Nếu bạn muốn làm việc khác lúc thực hiện trễ thì bạn nên dùng ngắt timer.
Xin tặng các bạn một chương trình đã chạy. Được viết bằng ASM.
Đây là một timer cho phép định thời từ 1 giây đến 10 phút.
Sử dụng nút nhấn để thiết lập thời gian hẹn.
Dùng 3 LED7 để thiển thị.
Có loa bip báo khi nhấn phím và tràn timer.
Trong chương trình có sử dụng một số macro.
Chương trình gồm cả quét LED và quét phím.
Nếu các bạn viết bằng C thì chỉ vài dòng.
Mong hữu ích cho các bạn mới học.
hpecom.Attached FilesMột bông hồng cho những ai đang còn mẹ,
Đang còn mẹ để lòng vui sướng hơn ..
Comment
-
chào các bác
cho em hỏi 1 chút về câu lệnh của vxl
em học trong trường về các lệnh xử lý bit thì chỉ có những bit ,những thanh ghi nào được định địa chỉ bit thì mới được dùng với các lệnh xử lý bit.
Nhưng em có xem mấy chương trình thì lại thấy có câu lệnh
SETB 68H
CLR 68H
SETB 00H
vvv...
các ô nhớ là 1 bye 8 bit ,nhưng sao lại được dùng như vậy các bác ?
mong các bác chỉ giúp- -
Comment
-
Nếu bạn ở tp HCM, tìm mua sách vi xử lý của thầy Hồ Trung Mỹ, trang 130 có nói đến, nếu không thì phải dùng tài liệu tiếng Anh thôi-tui quên mình để chỗ nào rồi!-(nếu bạn cần thì tui tìm lại upload sau) Cái nào địa chỉ hóa từng bit thì có ô, cái nào ko địa chỉ từng bit thì cả thanh ghi
<May quá mình đang học hihi!> Chắc đọc tài liệu bằng tiếng Việt cho dễ bạn nhỉ?
------------------
------------------
Comment
-
Trong 128 byte của RAM thì chỉ có 16byte là có thể đánh địa chỉ theo bit được,phần còn lại được định dạng theo byte.Các vùng RAM có thể đánh địa chỉ theo bit là 20H đến 2FH tương ứng với các địa chỉ từ 00H đến 7FH.Địa chỉ 68H nằm trong khoảng này nó tương ứng với bit D0 của vị trí ram 2DH.Như vậy hoàn toàn có thể dùng câu lệnh trên !Nguyên văn bởi vtvchào các bác
cho em hỏi 1 chút về câu lệnh của vxl
em học trong trường về các lệnh xử lý bit thì chỉ có những bit ,những thanh ghi nào được định địa chỉ bit thì mới được dùng với các lệnh xử lý bit.
Nhưng em có xem mấy chương trình thì lại thấy có câu lệnh
SETB 68H
CLR 68H
SETB 00H
vvv...
các ô nhớ là 1 bye 8 bit ,nhưng sao lại được dùng như vậy các bác ?
mong các bác chỉ giúp
Comment
-
SETB 68HNguyên văn bởi vtvchào các bác
cho em hỏi 1 chút về câu lệnh của vxl
em học trong trường về các lệnh xử lý bit thì chỉ có những bit ,những thanh ghi nào được định địa chỉ bit thì mới được dùng với các lệnh xử lý bit.
Nhưng em có xem mấy chương trình thì lại thấy có câu lệnh
SETB 68H
CLR 68H
SETB 00H
vvv...
các ô nhớ là 1 bye 8 bit ,nhưng sao lại được dùng như vậy các bác ?
mong các bác chỉ giúp
CLR 68H
SETB 00H
VDK có kiểu địa chỉ byte và địa chỉ bit, các lệnh này mặc định làm việc với bit, nên SETB 68H là set bit có địa chỉ la 68h không phải là byte!
Nếu bạn dùng mov 68h, #0ffh thì tại địa chỉ byte thứ 68H sẽ có giá trị là 0ffh!
Comment
-
DJNZ Decrease and jump if not zero!
Hay là
CJNE Compare and Jump if not Equal
Mình cũng có một mẹo nhỏ để nhớ nhanh tập lệnh của 8051 hay bất cứ kiểu hợp ngữ nào, bạn hãy học xem lệnh đấy viết tắt của chữ gì, như thế sẽ rất mau thuộc và sử dụng cũng dễ dàng nữa! Hướng tất cả mọi thứ từ ngôn ngữ cấp thấp sang cấp cao (càng gần với ngôn ngữ mình nói bao nhiêu càng dễ hiểu bấy nhiêu)!
Chúc vui!
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi vi van phamNhận thức con người luôn thay đổi theo thời gian.
Bây giờ kiến thức nhạc lý cháu kém, cần đến trì tuệ nhân tạo bổ xung khuyết điểm. Rồi thời gian sau đó...,cháu cố gắng trau dồi nhạc lý cháu thấy cái AI đó không diễn tả hết...-
Channel: Tâm tình dân kỹ thuật
10-02-2026, 22:21 -
-
bởi vi van phamNgày xưa, khi tôi còn là công nhân cơ khí sửa chửa máy cày, máy úi thì vợ tôi là cô giáo cấp 3.
Đến nhà em chơi thì có các thầy giáo cấp 3 cũng đến chơi, họ đàn cho bà xã tôi hát. Tôi cũng đàn cho em hát. Lúc đó các cô gái ...-
Channel: Tâm tình dân kỹ thuật
10-02-2026, 21:48 -
-
bởi mèomướpDạ chú rủ cô ấy đi ăn uống, cà phê, xem phim...nhớ nắm tay, rồi thì ôm hôn,...trong vòng 1 tuần mà ko nắm tay được, 1 tháng mà ko ôm đc thì dẹp ngay và luôn ạ. Nhắn tin, gọi điện ít thôi ạ, trả lời quá lâu hoặc ko trả lời cũng dẹp ngay ạ. Nên thể hiện chú là người có điều kiện nữa ạ...
-
Channel: Tâm tình dân kỹ thuật
08-02-2026, 18:50 -
-
bởi songchodep76Cảm ơn bác đã nhiệt thành chia sẻ kinh nghiệm bản thân mình cho mọi người.
Tuy nhiên, theo tiếp xúc hạn hẹp của em với mosfet thì vấn đề bác đo vôn ở cực D và thấy đỉnh nó 70V/55V Vds max, như thí nghiệm và trong hình của bác...-
Channel: Hướng dẫn sử dụng diễn đàn
07-02-2026, 09:46 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Cho tới thời điểm này, quả thật Đình Thường đây quá thất vọng, không hào hứng với Suno-AI lắm bởi ra lệnh Creat mấy chục lần với các thay đổi thì mới chọn được 2 bản hát đúng giai điệu tầm 80% để cắt ghép tạo thành bài hát...
-
Channel: Tâm tình dân kỹ thuật
06-02-2026, 17:01 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Kính chào cả nhà, nhân dịp Tết đang về, sắp 23 tháng chạp rồi, xin gởi lời chúc xuân qua bài hát sau ạ:
Bao nhiêu hân hoan
Chúc Mừng Năm Mới, xuân sang!
Nơi nơi hát vang
nâng chén vui chúc câu An Lành.
Vạn Sự đều Hanh Thông,
Rạng...-
Channel: Tâm tình dân kỹ thuật
06-02-2026, 16:46 -
-
bởi ittcChán quá các bác, em nhạt nhẽo quá nên tán em nào cũng tạch, tuyệt vọng vô cùng, nay lại được mấy anh đồng nghiệp cty đối tác mách cho em gái kia sinh năm 2K đầu, em chả biết nhóm đối tượng này phải tán ra sao bây giờ ?
Tính ra em...-
Channel: Tâm tình dân kỹ thuật
06-02-2026, 00:18 -
-
bởi bqvietCó thể, ví dụ phần phản hồi gồm vi mạch cách ly quang, zener thứ cấp, transistor và điện trở phản hồi dòng ... Bất kỳ linh kiện nào nhóm đó hỏng dẫn tới mất đường phản hồi. TNY chính hãng phát hiện được chuyện đó nhưng linh kiện...
-
Channel: Điện tử công suất
05-02-2026, 18:36 -
-
bởi Nexus 6Pcho e hỏi, khi mạch có linh kiện nào đó hư thì có làm hỏng led đắt tiền (osram) không?
-
Channel: Điện tử công suất
05-02-2026, 10:42 -
-
bởi chinhnguyen9· Thí nghiệm 1 (Mạch boost, Vcc=12V, kích bằng dao động PƯM, duty 10%):
* Không có snubber + không tải: Xuất hiện hiện tượng dao động tắt dần tại cực D Mosfet (ringing). Hình 1 cho thấy trong chu kỳ đầu, điện áp spike lên tới hàng trăm V, điện...-
Channel: Hướng dẫn sử dụng diễn đàn
04-02-2026, 09:16 -

Comment