Thảo luận Lập trình Asm cơ bản cho 8051

dannguyen

Học sinh phổ thông
#61
em có đề đồ án này mà không biết phải làm như thế nào
mong các anh chị giúp em ạ
0. Thiết kế hệ vi xử lý có thể tạo ra các xung có tần số và độ rộng là:

1/ 100Hz, 1/5 chu kỳ

2/ 200Hz, 2/5 chu kỳ

3/ 500Hz, 3/5 chu kỳ

4/ 500Hz, 4/5 chu kỳ

Việc lựa chọn 1 trong 4 dạng xung trên để đưa ra ngoài được thực hiện thông qua bàn phím.
 
Sửa lần cuối bởi điều hành viên:

mta_cdt

Super Moderator
Thành viên BQT
#62
em có đề đồ án này mà không biết phải làm như thế nào
mong các anh chị giúp em ạ
0. Thiết kế hệ vi xử lý có thể tạo ra các xung có tần số và độ rộng là:

1/ 100Hz, 1/5 chu kỳ

2/ 200Hz, 2/5 chu kỳ

3/ 500Hz, 3/5 chu kỳ

4/ 500Hz, 4/5 chu kỳ

Việc lựa chọn 1 trong 4 dạng xung trên để đưa ra ngoài được thực hiện thông qua bàn phím.
Cái này bạn dùng timer để tạo pwm, dùng bàn phím để chọn thôi.
nếu như phím 1 được nhấn thfi chạy 1
phím 2 được nhấn thì chạy 2
...
Nếu mà C thì mình hướng dẫn bạn được chứ asm thì chịu thôi
 

daovantri

Học sinh phổ thông
#63
các anh ơi em có 1 bt mà bí cả tuần nay rồi: "Nhập và tra tên danh bạ- hiển thị = LCD. Điều khiển = các chân PORT, ko xài bàn fím (thực hiện tương tự như phím đt)". Phần nhập thì ok, còn fần lưu lại em ko bít fải làm thế nào cả, yêu cầu tạo danh bạ 6 người, tên thì 2 kí tự (cho tối đa 10 chữ có sẵn), sdt thì 3 chữ số thôi.

>>>Tóm tắt hiện tượng: khỏi động kit, nhấn port để nhập name+sdt thứ 1, nhấn nút lưu lại, nhập tiếp name+sdt thứ 2, nhấn lưu lại....tới hết 6 cái, có port xóa để fòng nhập sai, tất quả wá trình đều hiển thị trên LCD. Nhấn port để xóa screen LCD, xong tới fần tra tên, vd: nhấn chữ B thì hiện ra LCD là "BA 123", nếu có danh bạ là "BE" thì khi nhấn chữ "B" fải hiện kèm theo luôn, vd: "BA 123 BE 456 . Nếu nhấn tiếp đúng BA thì chỉ hiện ra danh bạ của BA thôi, các a nghĩ júp e cách làm như thế nào với ạ :< 4 ngày nữa em nộp rồi :((
 

contuanloc

Học sinh phổ thông
#64
GET_AD: SETB CS ; set cs hi
MOV COUNTA,#15 ;
NXTBIT: CLR DCLK ; X,X,NULL,D11,D10,D9...D0
CLR CS ; CS low to start conversion or keep low till done
SETB DCLK ; raise the clock
MOV C,SDAT ; put data into C flag
RLC A ; shift C into Acc (A/D low bits)
XCH A,ADRESH ; get ADRESH byte (save low bits in ADRESH for now)
RLC A ; shift C into Acc (A.D high bits)
XCH A,ADRESH ; get low bits back into Acc for next loop
DJNZ COUNTA,NXTBIT
MOV ADRESL,A ; put A into ADRESL
ANL ADRESH,#0FH ; mask off unwanted bits (x,X,X,Null)
SETB CS ; set CS hi to end conversion

ai giải thích giúp em đoạn code này với
 

trungns

Học sinh phổ thông
#65
ai có thể xem giúp cái trễ này sai ở đâu không? thấy nó chạy cứ bát nháo cả lên :(
delay_1s:
mov TMOD,#01H ; che do 16bit, timer 0
mov TH0,#00H ;nap N0=0
mov TL0,#00H ;
mov r1,#0FH ;lap 15 lan
setb TR0 ;bat dau
lap:
jnb TF0,lap
djnz r1,lap
ret
 

trungns

Học sinh phổ thông
#67
bạn chưa xóa cờ TF0
ok, được rồi :D
Ai có thể giải thích cho em về cái lệnh DA A được không ạ?
thấy một số chương trình về BCD có dùng mà đọc không hiểu gì, google chả thấy
 
Sửa lần cuối bởi điều hành viên:

adobe102

Học sinh phổ thông
#69
CÁC ANH XEM EM CHƯƠNG TRÌNH NÀY BỊ LỖI GÌ MÀ KHÔNG CHẠY ĐƯỢC.THANKS CÁC A NHIỀU(CHƯƠNG TRÌNH ĐẾM SẢN PHẨM)
Mã:
ORG 0000H
    LJMP MAIN
ORG 000BH
    LJMP T0_ISR
ORG 0003H
    LJMP E0_ISR
ORG 001BH
    LJMP T1_ISR
ORG 0030H
MAIN:
    MOV TMOD, #12H
    MOV TH0,#(-13)
    SETB TR0
    SETB EA
    SETB ET0
    SETB EX0
    SETB IT0
    CLR P1.4
    MOV R7,#0
    MOV R5,#50
    MOV R1,#0
LOOP:
    MOV A,R7
    MOV DPTR,#MA7DOAN
    MOVC A,@A+DPTR
    MOV P0,A
    MOV A,R1
    MOV DPTR,#MA7DOAN
    MOVC DPTR,@A+DPTR
    MOV P2,A
    SJMP LOOP
    RET
T0_ISR: CPL P1.5
    RETI
E0_ISR: INC R7
    CJNE R7,#9,EXIT
    MOV R7,#0
    ACALL TIEPTUC
    INC R1
    CJNE R1,#9,EXIT
    MOV R1,#0
EXIT:
    RETI
TIEPTUC:
    SETB P1.4
    SETB ET1
    MOV TH0,#HIGH(-50000)
    MOV TL0,#LOW(-50000)
    SETB TR1
    RET
T1_ISR:
    DJNZ R5,THOAT
    CLR P1.4
    CLR ET1
    CLR TR1
    MOV R5,#50
THOAT:
    RETI
MA7DOAN: DB 03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,09H
END
 

ckipkoilsh

Học sinh phổ thông
#70
adm vho t hỏi có chương trình đo điện áp xoay chiều dùng 8051 va ngôn ngữ asembly ko
 

Quảng cáo Google