Chia sẻ Code lập trình Vi Điều Khiển 8051 cơ bản ASM

phong_mai

Học sinh phổ thông
Chip viết hộ e đoạn code cho 8 led đơn kiểu sáng chạy dồn ko?
Giống như ta nạp từng viên đạn vào băng ấy.
e viết kiểu MOV từng giá trị cho port nhưng dài quá. Không dùng tới ngắt ngủng gì nhé, chỉ là các lệnh như DJNZ, INC ,MOV, CJNE...kết hợp lại.
a có gợi ý gì hay cũng được, đang tập tọe asm với 8051 :v
bạn lập bảng mã led là viết đc thôi ak
 

phong_mai

Học sinh phổ thông
ORG 0000H
MAIN:LCALL VONG1
LCALL DELAY
LJMP MAIN

VONG1:
MOV R0,#00H
MOV DPTR,#MALED

LAP:MOV A,R0
MOVC A,@A+DPTR
MOV P2,A
LCALL DELAY
INC R0
CJNE A,0FFH,LAP
RET

MALED: DB 01H,02H,04H,08H,10H,20H,40H,80H,81H,82H,84H,88H,90H,0A0H,0C0H,0C1H,0C2H,0C4H,0C8H,0D0H,0E0H,0E1H,0E2H,0E4H,0E8H,0F0H,0F1H,0F2H,0F4H,0F8H,0F9H,0FAH,0FCH,0FDH,0FEH,0FFH
DELAY: MOV R4,#250
BACK:MOV R5,#250
BACK3:NOP
DJNZ R5,BACK3
DJNZ R4,BACK
RET
END

Đây là đoạn code đã thu gọn lại sau khi bạn pdel gợi ý :)
Nhưng có 1 vấn đề là trước khi bắt đầu lại chu trình mới (khi đã sáng đủ 8led và chạy lại từ đầu) thì có hiện tượng 1 vài led nhấp nháy rồi mới chạy lại từ đầu.
đấy có phải là nhiễu không? Hay code có vấn đề?
Em đã thử thay CJNE A,0FFH,LAP =CJNE R0,#36,LAP và không thấy hiện tượng nháy. Như vậy là sao?
Mọi người xem hộ e.
 

phong_mai

Học sinh phổ thông
mã led sang dồn 8led DB 00h,81h,0c3h,0e7h,0ffh,18h,3ch,7eh,0ffh,00
mã led sáng dồn 16 led thì dùng 2 bảng mã DB 0h,80h,0c0h,0e0h,0f0h,0f8h,0fch,0feh,0ffh
DB 0h,01h,03h,07h,0fh,1fh,3fh,7fh,0ffh
 

Dieuhien

Học sinh phổ thông
Mọi người cho e hỏi về sơ đồ mạch ghép nối,các chức năng và nguyên l ý hoạt động của chương trình asm này với ạ..


ORG 0H
MOV TMOD,#11H
MAIN: JNB P3.0,CT1
JMP MAIN
CT1:
MOV R1,#0H
LAP1: MOV R2,#0H
MOV A,R1
CALL TRABANG
MOV P0,A
LAP2: MOV A,R2
CALL TRABANG
MOV P2,A
CALL DELAYS
INC R2
CJNE R2,#0AH,LAP2
INC R1
CJNE R1,#02H,LAP1
MOV P0,#024H
MOV P2,#040H

MOV R3,#10
L2: MOV R2,#255
L1: CPL P3.3
CALL DELAY800Hz
DJNZ R1,L1
DJNZ R3,L2

MOV R4,#3
LAP3: CLR P3.6
SETB P3.7
CALL DELAYS
SETB P3.6
SETB P3.7
CALL DELAYS
CLR P3.7
SETB P3.6
CALL DELAYS
SETB P3.6
SETB P3.7
DJNZ R4,LAP3
MOV P0,#0FFH
MOV P2,#0FFH

MOV P1,#0FFH
MOV R0,#8
MOV A,#07FH
LOOP3: MOV P1,A
CALL DELAYS
CLR C
RRC A
DJNZ R0,LOOP3
JMP MAIN
TRABANG:INC A
MOVC A,@A+PC
RET
BANGMA: DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H
DELAYS: MOV R7,#20
LOOP: MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
WAIT: JNB TF0, WAIT
CLR TR0
CLR TF0
DJNZ R7,LOOP
RET
DELAY800Hz:
MOV TH1,#0FBH
MOV TL1,#01EH
SETB TR1
WAIT1: JNB TF1,WAIT1
CLR TR1
CLR TF1
RET
END
 

thuongtingts

Học sinh phổ thông
Thực hiện thiết bị đếm xe ô tô vào cổng trường, hiển thị kết quả lên led 7 đoạn, sau mỗi 100 xe thì nháy đèn nháy đèn báo hiệu 5 s. Ỏ cổng bên đồng thời đếm xe ra. Hiển thị tổng số xe đang ở trong trường.
MỌI NGƯỜI GIÚP EM ĐỒ ÁN NÀY VỚI Ạ
 

hieuanh1405

Học sinh phổ thông
Chip chia sẻ những code lập trình asembly đơn giản này các bạn xem sẽ dễ hiểu..có điều gì thắc mắc các bạn cứ hỏi nhé. Simple is the best

I.PHẦN LED ĐƠN LỆNH MOV

1.Chương trình led sáng nhấp nháy port 1.
Mã:
ORG 00H
MAIN:
MOV P1,#00H;led tắt hết
CALL DELAY
MOV P1,#0FFH;led sáng hết
CALL DELAY
JMP MAIN
DELAY:;CT tạo trễ
MOV R0,#50
LAP:
NOP
NOP
DJNZ R0,LAP
RET
END
2.Chương trình Led sáng dần port 1

Mã:
ORG 00H
MAIN:
MOV P1,#00000000B;Trạng thái led tắt hết
CALL DELAY
MOV P1,#00000001B;Led p1.0 sáng
CALL DELAY
MOV P1,#00000011B;led p1.0,p1.1 sáng
CALL DELAY
MOV P1,#00000111B;led p1.0,p1.1,p1.2 sáng
CALL DELAY
MOV P1,#00001111B
CALL DELAY
MOV P1,#00011111B
CALL DELAY
MOV P1,#00111111B
CALL DELAY
MOV P1,#01111111B
CALL DELAY
MOV P1,#11111111B
CALL DELAY
JMP MAIN
DELAY:
MOV R0,#200
LAP:
MOV R1,#200
LAP2:
NOP
NOP
NOP
DJNZ R1,LAP2
DJNZ R0,LAP
RET
END
3.Chương trình led tắt dần port 1

Mã:
ORG 00H
MAIN:
MOV P1,#11111111B;Trạng thái led sáng hết
CALL DELAY
MOV P1,#11111110B;Led p1.0 tắt
CALL DELAY
MOV P1,#11111100B;led p1.0 tắt,p1.1 tắt
CALL DELAY
MOV P1,#11111000B
CALL DELAY
MOV P1,#11110000B
CALL DELAY
MOV P1,#11100000B
CALL DELAY
MOV P1,#11000000B
CALL DELAY
MOV P1,#10000000B
CALL DELAY
MOV P1,#00000000B
CALL DELAY
JMP MAIN
DELAY:
MOV R0,#200
LAP:
MOV R1,#200
LAP2:
NOP
NOP
NOP
DJNZ R1,LAP2
DJNZ R0,LAP
RET
END
4.Sáng dần tắt dần theo chiều ngược lại:

Mã:
ORG 00H
 
MAIN:
CALL CON1
CALL CON2
JMP MAIN
CON1:;SANG DAN
MOV P1,#00000000B
CALL DELAY
MOV P1,#10000000B
CALL DELAY
MOV P1,#11000000B
CALL DELAY
MOV P1,#11100000B
CALL DELAY
MOV P1,#11110000B
CALL DELAY
MOV P1,#11111000B
CALL DELAY
MOV P1,#11111100B
CALL DELAY
MOV P1,#11111110B
CALL DELAY
MOV P1,#11111111B
CALL DELAY
RET
 
CON2:;TAT DAN
MOV P1,#11111111B
CALL DELAY
MOV P1,#01111111B
CALL DELAY
MOV P1,#00111111B
CALL DELAY
MOV P1,#00011111B
CALL DELAY
MOV P1,#00001111B
CALL DELAY
MOV P1,#00000111B
CALL DELAY
MOV P1,#00000011B
CALL DELAY
MOV P1,#00000001B
CALL DELAY
MOV P1,#00000000B
CALL DELAY
RET
 
DELAY:
MOV R0,#200
LAP:
MOV R1,#200
LAP2:
NOP
NOP
NOP
DJNZ R1,LAP2
DJNZ R0,LAP
RET
END
II. PHẦN LED ĐƠN LỆNH QUAY.
Mã:
ORG 0000H
MAIN:; Bat dau chuong trinh chinh
CALL CTA;Goi chuong trinh con sang dan tu tren xuong duoi
CALL CTB;Goi chuong trinh con sang dan tu duoi len tren
JMP MAIN
;-----------chuong trinh con sang dan tu tren xuong duoi--------------------------
CTA:
MOV A,#00H;Thanh ghi A la 00000000
LAP:;Nhan cua vong lap
SETB C;Thit lap co nho C len 1
RLC A;Quay trai co C co nho
MOV P2,A;Dua gia tri vao P2
CALL DELAY;Tao thoi gian tre de thay hieu ung
CJNE A,#0FFH,LAP;Kiem tra neu chua bang 11111111 thi nhay den nhan LAP
RET
 
;-------------chuong trinh con sang dan tu duoi len tren-------------------------
CTB:
MOV A,#00H; dua gia tri 00000000 vao thanh ghi tich luy A
LAP1:            ; nhan vong lap
SETB C          ; Thiet lap co nho C len 1
RRC A            ; quay phai thanh ghi A co co nho
MOV P2,A    ; chuyen gia tri thanh ghi A vua quay xuat ra Port 2
CALL DELAY;goi chuong trinh tre de thay hieu ung led
CJNE A,#0FFH,LAP1;Kiem tra thanh ghi A da bang 11111111 chua, neu chua bang thin hay den LAP1
RET
;----Chuong trinh tao thoi gian tre-----
DELAY:
MOV R0,#200
LOOP:
MOV R1,#210
LOOP1:
NOP
DJNZ R1,LOOP1
DJNZ R0,LOOP
RET
END
III. LED ĐƠN LẪY BẢNG MÃ

Mã:
ORG 00H
MAIN:
CALL CTA; sang dan qua trai
CALL CTB; sang dan qua phai  
JMP MAIN
;*****************************************
CTA:
    MOV R0,#00H        ;Bien dem so trang thai hien thi
    MOV DPTR,#MALED    ;Nap di chi vung du lieu
LABEL:              
    MOV A,R0            ; Chuyen gia tri thanh ghi R0 vao thanh ghi A
    MOVC A,@A+DPTR        ; Lay du lieu tu vung nho
    MOV P2,A            ;Hien thi
    CALL DELAY
    INC R0            ; Lay du lieu ke tiep
    CJNE R0,#9,LABEL        ; Kiem tra so du trang thai hien thi
RET
;*****************************************
CTB:
    MOV R0,#00H
    MOV DPTR,#MALED1
LABEL1:
    MOV A,R0
    MOVC A,@A+DPTR
    MOV P2,A
    CALL DELAY
    INC R0
    CJNE R0,#9,LABEL1
RET
;******************************************
MALED: DB 00H,01H,03H,07H,0FH,1FH,3FH,7FH,0FFH; co 9 ma led CTA
;00000000b,00000001b,00000011b,………
MALED1: DB 00H,80H,0C0H,0E0H,0F0H,0F8H,0FCH,0FEH,0FFH; 9 ma led CTB
;----Chuong trinh tao thoi gian tre-----
DELAY:
MOV R3,#200
LOOP:
MOV R2,#250
LOOP1:
NOP
DJNZ R2,LOOP1
DJNZ R3,LOOP
RET
END
IV. DÙNG IC 74HC595
Mã:
ORG 00H
MAIN:
CALL CTA;goi chuong trinh con
CALL CTB
CALL CTC
JMP MAIN
 
CTA:
;sang dan led
MOV R1,#8;quet 8 led
LAP:
SETB P2.0;thiet lap bit chan data len 1 cho led sang
CALL DELAY
SETB P2.1;tao xung mo cho bit vao chan SH
CALL DELAY
CLR  P2.1;tao xung dong khong cho bit vao chan SH
CALL DELAY
SETB P2.2;tao xung mo ST cho bit xuat ra cac chan led
CALL DELAY
CLR  P2.2;tao xung dong ST khong cho bit xuat ra cac chan led
CALL DELAY
DJNZ R1,LAP
 
;tat dan led
MOV R1,#8
LAP1:
CLR P2.0;thiet lap bit chan data len 1 cho led sang
CALL DELAY
SETB P2.1
CALL DELAY
CLR  P2.1
CALL DELAY
SETB P2.2
CALL DELAY
CLR  P2.2
CALL DELAY
DJNZ R1,LAP1
RET
 
CTB:;sang 1 led chay
MOV R4,#3
NHAY:
SETB P2.0
CALL DELAY
SETB P2.1
CALL DELAY
CLR P2.1
SETB P2.2
CALL DELAY
CLR P2.2
CALL DELAY
MOV R1,#7
LAP2:
CLR P2.0
SETB P2.1
CLR P2.1
SETB P2.2
CLR P2.2
CALL DELAY
CALL DELAY
DJNZ R1,LAP2
DJNZ R4,NHAY
RET
 
CTC:;sang nhap nhay led
MOV R4,#3
NHAY1:
MOV R1,#8
LAP3:
SETB P2.0
SETB P2.1
CLR P2.1
DJNZ R1,LAP3
SETB P2.2
CLR P2.2
CALL DELAY
 
MOV R1,#8
LAP4:
CLR P2.0
SETB P2.1
CLR P2.1
DJNZ R1,LAP4
SETB P2.2
CLR P2.2
CALL DELAY
DJNZ R4,NHAY1
RET
 
 
 
DELAY:;chuong trinh tao tre
MOV R0,#200
LOOP:
MOV R2,#200
LOOP1:
DJNZ R2,LOOP1
DJNZ R0,LOOP
RET
END
Chúc các bạn thành công?
a cho e hỏi nếu dùng 2 con 595 để điều khiển 16led sáng từ giữa sáng ra thì code ntn ạ
 

Quảng cáo Google