1. Trang chủ
  2. » Luận Văn - Báo Cáo

Vi điều khiển giao tiếp LED 7 đoạn

34 2,8K 6
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Vi điều khiển giao tiếp LED 7 đoạn
Tác giả Nguyễn Đình Phú
Trường học Đại học Sư Phạm Kỹ Thuật TP HCM
Chuyên ngành Điện – Điện Tử
Thể loại Bài giảng
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 34
Dung lượng 1,06 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Vi điều khiển giao tiếp LED 7 đoạn

Trang 1

VI ĐIỀU KHIỂN GIAO TIẾP LED 7 ĐOẠN

CHỨC NĂNG LED 7 ĐOẠN LÀ HIỂN THỊ SỐ THẬP PHÂN

CÓ 2 CÁCH: GIAO TIẾP TRỰC TIẾP VÀ GIAO TIẾP THEO PP QUÉT

CÁCH 1: GIAO TIẾP TRỰC TIẾP – DÙNG PORT ĐIỀU KHIỂN

MỖI PORT ĐIỀU KHIỂN 1 LED 7 ĐOẠN LOẠI ANODE CHUNG

MỖI PORT ĐIỀU KHIỂN TRỰC TIẾP 1 LED

HÌNH ẢNH LED – (LINK ĐĨA F TRONG MỤC GT CPLD – WEB HAY)

Trang 2

LED SỬ DỤNG LÀ LED ANODE CHUNG: 0 THÌ LED SÁNG, 1 THÌ LED TẮT

Trang 3

BÀI SỐ 2-2: CTDK LED 7 ĐOẠN ĐẾM THỜI GIAN TỪ 0 ĐẾN 9 – CÁCH 1 – DÙNG PORT0

LƯU ĐỒ ĐIỀU KHIỂN

CALL DELAY1S MOV P0,#0F9H ;SANG SO 1 CALL DELAY1S

MOV P0,#0A4H ;SANG SO 2 CALL DELAY1S

MOV P0,#0B0H ;SANG SO 3 CALL DELAY1S

MOV P0,#099H ;SANG SO 4 CALL DELAY1S

MOV P0,#092H ;SANG SO 5 CALL DELAY1S

MOV P0,#082H ;SANG SO 6 CALL DELAY1S

MOV P0,#0F8H ;SANG SO 7 CALL DELAY1S

MOV P0,#080H ;SANG SO 8 CALL DELAY1S

Trang 4

MOV P0,#090H ;SANG SO 9 CALL DELAY1S

JMP LB

$INCLUDE(TV_DELAY.ASM)

END

LƯU ĐỒ – CÁCH 2

CÁC MÃ 7 ĐOẠN CỦA 10 SỐ TỪ 0 ĐẾN 9 ĐƯỢC LƯU VÀO BỘ NHỚ CHƯƠNG TRÌNH CHƯƠNG TRÌNH CÓ NHIỆM VỤ LẤY LẦN LƯỢT CÁC MÃ ĐEM GỞI RA PORT ĐIỀU KHIỂN LED ĐỂ HIỂN THỊ

VIẾT CHƯƠNG TRÌNH – CÁCH 2

;CHTR DK 1 LED 7 DOAN DEM TU 0 DEN 9

(H6) MOVC A,@A+DPTR ;LẤY MÃ

(H7) MOV P0,A ;HIỂN THỊ

(H8) CALL DELAY1S

(H9) INC DEM

(H10) CJNE DEM,#10,LB1

Trang 5

(H13) LIỆT KÊ CÁC MÃ 7 ĐOẠN BẮT ĐẦU BẰNG KÍ HIỆU DB – DEFINE BYTE: ĐỊNH

NGHĨA 1 VÙNG DỮ LIỆU DẠNG BYTE

(H3)LB: MOV DPTR,#MA7DOAN

NẠP ĐỊA CHỈ MA7DOAN VÀO TG DPTR ĐỂ QUẢN LÝ VÙNG NHỚ CHỨA MÃ 7 ĐOẠN

(H13)MA7DOAN: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H

GIẢ SỬ ĐỊA CHỈ MA7DOAN CÓ GIÁ TRỊ LÀ 1000H

THÌ C0H SẼ LƯU VÀO ON CÓ ĐỊA CHỈ 1000H = 1000H + 0H – MÃ SỐ 0

CÒN F9H SẼ LƯU VÀO ON CÓ ĐỊA CHỈ 1001H = 1000H + 1H - MÃ SỐ 1

CÒN A4H SẼ LƯU VÀO ON CÓ ĐỊA CHỈ 1002H = 1000H + 2H - MÃ SỐ 2

CÒN B0H SẼ LƯU VÀO ON CÓ ĐỊA CHỈ 1003H = 1000H + 3H - MÃ SỐ 3

CÒN 90H SẼ LƯU VÀO ON CÓ ĐỊA CHỈ 1009H = 1000H + 9H - MÃ SỐ 9

1000H THÌ LƯU TRONG DPTR, CÒN CÁC CON SỐ 0, 1, 2, … THÌ LƯU TRONG A

LỆNH MOVC A,@A+DPTR COPY NDON (CÓ ĐC BẰNG DPTR + A) SANG TGA

Trang 6

+2 +3 +4 +5 +6 +7 +8 +9

+1

90 80 F8 82 92 99 B0 A4 F9 (DPTR+A)=(1000) + 0 C0

DPTR + A = 1000H + 00H = 1000H – LẤY ND ON CÓ DC 1000H ĐƯA SANG A

SAU KHI THỰC HIỆN THÌ A = C0H – LÀ MÃ CỦA SỐ 0 – GỞI RA PORT 0 ĐỂ HIỂN THỊ

;CHTR DEM TU 0 DEN 9 - TREN 1 LED 7 DOAN NOI VOI P0 - CACH 2

DEM EQU R4 ORG 0H

MOV DPTR,#MA7DOAN ;CHO MA7DOAN=1000H

LB1: MOV A,DEM ;A=0,1,2

MOVC A,@A+DPTR ;,1000H,1001H,1002H (MA7DOAN, MA7DOAN+1) MOV P0,A ;P0=C0H,F9H,A4H

CALL DELAY1S INC DEM ;DEM=1,2 CJNE DEM,#10,LB1

;LUU CAC MA 7 DOAN VAO BO NHO CHTR

MA7DOAN: DB 0C0H,0F9H,0A4H,0B0H,99H

DB 092H,082H,0F8H,080H,090H

Trang 7

$INCLUDE(TV_DELAY.ASM)

END TÓM TẮT GIẢI MÃ:

MOV DPTR,#MA7DOAN ;KHOI TAO DIA CHI QL MA7DOAN

MOV A,DEM ;DUA BIEN CAN GIAI MA SANG A MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG

;LUU CAC MA 7 DOAN VAO BO NHO CHTR

MA7DOAN: DB 0C0H,0F9H,0A4H,0B0H,99H

DB 092H,082H,0F8H,080H,090H

GIỚI HẠN CỦA BIẾN ĐẾM LÀ TỪ 0 ĐẾN 9 – CHỈ 1 SỐ

NẾU CÓ NHIỀU SỐ THÌ TÁCH TỪNG CON SỐ RỒI TIẾN HÀNH GIẢI MÃ

GIẢI MÃ SỐ HEX ĐƯỢC KHÔNG?

BÀI SỐ 2-4: CTDK LED 7 ĐOẠN ĐẾM THỜI GIAN TỪ 9 ĐẾN 0 – DÙNG PORT0

DỮ LIỆU ĐIỀU KHIỂN

LƯU ĐỒ ĐIỀU KHIỂN

Trang 8

LB: MOV DPTR,#1000H

MOV DEM,#9 LB1: MOV A,DEM

MOVC A,@A+DPTR MOV P0,A

CALL DELAY1S DEC DEM CJNE DEM,#-1,LB1 JMP LB

ORG 1000H

DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H

$INCLUDE(TV_DELAY.ASM)

END

BÀI SỐ 2-5: CTDK LED 7 ĐOẠN ĐẾM THỜI GIAN TỪ 00 ĐẾN 99 – DÙNG P0 VÀ P2

LƯU ĐỒ ĐIỀU KHIỂN

BEGIN

DELAY DEM:=DEM+1

END

DEM=100

LƯU 10 MÃ VÀO BN DEM:=0000 0000B

HEX(DEM) => BCD BCD => MA7DOAN => LED

;CHTR DK 2 LED 7 DOAN DEM TU 00 LEN 99

DEM EQU R2 ORG 0H

MOV DPTR,#MA7DOAN LB: MOV DEM,#00H

Trang 9

LB1: CALL HEXTOBCD_GIAIMA ;MOI THEM VAO

CALL DELAY100MS INC DEM

CJNE DEM,#100,LB1 JMP LB

HEXTOBCD_GIAIMA:

MOV A,DEM MOV B,#10 DIV AB ;(A) = BCD_CHUC, (B)=BCD_DONVI MOVC A,@A+DPTR ;LAY MA CHUC

MOV P2,A ;HIEN THI HANG CHUC

MOV A,B ;BCD DONVI => A MOVC A,@A+DPTR ;LAY MA DONVI MOV P0,A ;HIEN THI HANG DON VI RET

MA7DOAN: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H

$INCLUDE(TV_DELAY.ASM)

END

TẠI SAO CHUYỂN SỐ HEX SANG SỐ BCD?

NHỊ PHÂN HAY HEX

DEM (00H -FFH)

BCD CHUC – DONVI (00H – 99H)

Trang 10

 NẾU SỐ HEX NẰM GIỚI HẠN TỪ 10 ĐẾN 99 THÌ SỐ BCD GỒM CHỤC VÀ ĐƠN VỊ LẤY SỐ HEX CHIA CHO 10: ĐƯỢC KẾT QUẢ LÀ SỐ BCD HÀNG CHỤC, SỐ DƯ LÀ SỐ BCD HÀNG ĐƠN VỊ

 NẾU SỐ HEX NẰM GIỚI HẠN TỪ 100 ĐẾN 999 THÌ SỐ BCD GỒM TRĂM, CHỤC VÀ ĐƠN VỊ LẤY SỐ HEX CHIA CHO 10 LẦN THỨ NHẤT: ĐƯỢC KẾT QUẢ LẦN 1, SỐ

DƯ LÀ BCD HÀNG ĐƠN VỊ LẤY KẾT QUẢ LẦN 1 CHIA TIẾP CHO 10 LẦN THỨ 2: SỐ DƯ LẦN HAI LÀ BCD CHỤC, KẾT QUẢ LÀ BCD TRĂM

LỆNH CHIA DIV AB LÀ CHIA A(8 BIT) CHO B(8 BIT THƯỜNG LÀ SỐ 10)

SAU KHI CHIA: A LƯU KẾT QUẢ, B LƯU SỐ DƯ

VÍ DỤ1: CHUYỂN SỐ HEX 3FH = 0011 1111B SANG SỐ BCD:

32+16+8+4+2+1=63 BCD = 0110 0011B

Trang 11

MOV DPTR,#MA7DOAN LB: MOV DEM,#00H

LB1: CALL HEXTOBCD_GIAIMA ;MOI THEM VAO

CALL DELAY100MS INC DEM

;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

HEXTOBCD_GIAIMA:

MOV A,DEM MOV B,#10 DIV AB ;(A) = BCD CHUC, (B)=BCD DONVI MOVC A,@A+DPTR ;LAY MA CHUC

MOV P2,A ;HIEN THI HANG CHUC MOV A,B ;BCD DONVI => A

MOVC A,@A+DPTR ;LAY MA DONVI MOV P0,A ;HIEN THI HANG DON VI RET

MA7DOAN: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H

$INCLUDE(TV_DELAY.ASM)

END

Trang 12

BÀI SỐ 2-6: CTDK LED 7 ĐOẠN ĐẾM THỜI GIAN TỪ 000 ĐẾN 250 – DÙNG P0 – LED ĐƠN

VỊ, P1 – LED CHỤC VÀ P2 – LED TRĂM

LƯU ĐỒ ĐIỀU KHIỂN

BEGIN

DELAY DEM:=DEM+1

END

DEM=251

LƯU 10 MÃ VÀO BN DEM:=0000 0000B

HEX(DEM) => BCD BCD => MA7DOAN => LED

;CHTR DK 2 LED 7 DOAN DEM TU 000 LEN 250

DEM EQU R2 ORG 0H

MOV DPTR,#MA7DOAN LB: MOV DEM,#00H

LB1: CALL HEXTOBCD_GIAIMA ;MOI THEM VAO

CALL DELAY100MS INC DEM

CJNE DEM,#251,LB1 JMP LB

HEXTOBCD_GIAIMA:

MOV A,DEM MOV B,#10 DIV AB ;(A) = KQ1, (B)=BCD_DONVI MOV 20H,B ;LUU BCD_DVI VAO ON CO ĐC 20H MOV B,#10

DIV AB ; (A) = BCD_TRAM, (B)=BCD_CHUC

Trang 13

MOV A,20H ;BCD_DVI => A MOVC A,@A+DPTR ;LAY MA DVI MOV P0,A ;HIEN THI HANG DVI RET

MA7DOAN: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H

$INCLUDE(TV_DELAY.ASM)

END

CÁC CHƯƠNG TRÌNH CON TỔNG QUÁT

CHUYỂN SỐ HEX 8 BIT SANG 3 SỐ BCD LƯU VÀO 3 ON 20H, 21H, 22H:

MOV B,#10 DIV AB MOV 20H,B ;LUU BCD_DVI MOV B, #10

DIV AB

RET

MOV A,20H MOVC A,@A+DPTR

MOV A,21H

Trang 14

MOV 31H,A ;LUU MA_CHUC

MOV A,22H MOVC A,@A+DPTR

RET

HIENTHI_TT: MOV P0,30H

MOV P1,31H MOV P2,32H RET

CÁCH 2: DÙNG IC GIẢI MÃ 74247 – MỖI 1 LED CHỈ CẦN 4 ĐƯỜNG TÍN HIỆU – 1 PORT

DK ĐƯỢC 2 LED, KHÔNG CẦN GIẢI MÃ 7 ĐOẠN VÌ IC GIẢI MÃ ĐÃ THỰC HIỆN, TA CHỈ CẦN GỞI MÃ BCD 4 BIT CHO 1 LED, 8 BIT CHO 2 LED

Trang 15

BÀI SỐ 2-6: CTDK 2 LED 7 ĐOẠN ĐẾM THỜI GIAN TỪ 00 ĐẾN 99 – DÙNG P0 KẾT NỐI

VỚI 2 IC GIẢI MÃ 74247

LƯU ĐỒ ĐIỀU KHIỂN

CHƯƠNG TRÌNH

DEM EQU R2 ORG 0H

LB: MOV DEM,#00H

LB1: CALL HEXTOBCD_HTHI ;MOI THEM VAO

CALL DELAY100MS INC DEM

CJNE DEM,#100,LB1 JMP LB

HEXTOBCD_HTHI:

MOV A,DEM MOV B,#10 DIV AB ;(A) = BCD_CHUC, (B)=BCD_DONVI SWAP A ;CHUYEN HANG CHUC LEN 4 BIT CAO ORL A,B

MOV P0,A ;GOI RA 2 IC GIAI MA DE HIEN THI RET

$INCLUDE(TV_DELAY.ASM)

END

Trang 16

ĐIỀU KHIỂN LED 7 ĐOẠN DÙNG VDK

CÁCH 2: DÙNG PHƯƠNG PHÁP QUÉT

CÁC ĐOẠN: A, B, C, D, E, F, G, DP NỐI SONG - SONG, QUA ĐIỆN TRỞ HẠN DÒNG NỐI VỚI PORT0

Trang 17

CÁC CHÂN ANODE CHUNG THÌ ĐIỀU KHIỂN BẰNG TRANSISTOR PNP,

8 LED NÊN DÙNG 8 TRANSISTOR DÙNG PORT2 ĐIỀU KHIỂN 8 TRANS

CỰC B BẰNG 0 THÌ TRANS DẪN – CỰC B BẰNG 1 THÌ TRANS TẮT

MỖI 1 THỜI ĐIỂM CHỈ CHO 1 TRANS DẪN

DÙNG 2 PORT 0 VÀ 2 ĐIỀU KHIỂN ĐƯỢC 8 LED 7 ĐOẠN

ƯU ĐIỂM: TIẾT KIỆM TÍN HIỆU ĐIỀU KHIỂN

KHUYẾT ĐIỂM: TỐN TRANSISTOR, CHƯƠNG TRÌNH ĐIỀU KHIỂN PHỨC TẠP – CHƯƠNG TRÌNH QUÉT 8 LED PHẢI THỰC HIỆN LIÊN TỤC THÌ LED MỚI SÁNG

BÀI SỐ 3-1: CTDK 1 LED 7 ĐOẠN SÁNG SỐ 0 – DÙNG P0, P2

VIẾT CHƯƠNG TRÌNH

;CHTR DK 1 LED 7 DOAN (L7D0) SANG SO 0

ORG 0H MOV P0,#0C0H ;GOI MA SO 0 MOV P2,#11111110B ;CHO 1 TRANSISTOR DAN JMP $

END THỬ

;CHTR DK 1 LED 7 DOAN (L7D1) SANG SO 0

ORG 0H MOV P0,#0C0H ;GOI MA SO 0 MOV P2,#11111101B ;CHO 1 TRANSISTOR DAN JMP $

END THỬ

;CHTR DK 1 LED 7 DOAN (L7D1) SANG SO 1

ORG 0H MOV P0,#0F9H ;GOI MA SO 1 MOV P2,#11111101B ;CHO 1 TRANSISTOR DAN JMP $

END

BÀI SỐ 3-2: CTDK 8 LED 7 ĐOẠN QUÉT SÁNG SỐ 0 ĐẾN SỐ 7 DÙNG P0, P2

VIẾT CHƯƠNG TRÌNH

Trang 18

;CHTR DK 8 LED 7 DOAN QUET SANG SO 0 DEN SO 7 ORG 0H

LB: MOV P0,#0C0H ;0

MOV P2,#11111110B CALL DELAYX

MOV P2,#11111101B CALL DELAYX

MOV P2,#11111011B CALL DELAYX

MOV P2,#11110111B CALL DELAYX

MOV P2,#11101111B CALL DELAYX

MOV P2,#11011111B CALL DELAYX

MOV P2,#10111111B CALL DELAYX

MOV P2,#01111111B CALL DELAYX

JMP LB DELAYX: CALL DELAY1MS

Trang 19

RET

$INCLUDE(TV_DELAY.ASM)

END

CÁCH VIẾT TRÊN SỬ DỤNG HẾT 8LED – TA CÓ CÁCH THỨ 2

;CHTR DK 8 LED 7 DOAN QUET SANG SO 0 DEN SO 7 ORG 0H

LB: MOV P0,#0C0H ;0

CLR P2.0 ;TRANSISTOR T0 DAN CALL DELAYX

SETB P2.0 ;TRANSISTOR T0 TAT

CLR P2.1 ;TRANSISTOR T1 DAN CALL DELAYX

SETB P2.1 ;TRANSISTOR T1 TAT

JMP LB DELAYX: CALL DELAY1MS

RET

$INCLUDE(TV_DELAY.ASM)

END

BÀI SỐ 3-3: CT ĐẾM GIÂY TỪ 00 ĐẾN 59 – HIỂN THỊ TRÊN 2 LED 7 ĐOẠN QUÉT

LƯU ĐỒ ĐIỀU KHIỂN

Trang 20

HEX(GIÂY) => BCD GIẢI MÃ 7 ĐOẠN DELAY – HIỂN THỊ GIÂY:= GIÂY +1

MOV DPTR,#MA7DOAN LB: MOV GIAY,#00

LB1: CALL HEXTOBCD ;CHUYEN HEX SANG SO BCD

CALL GIAIMA ;CHUYEN SO BCD SANG MA 7 DOAN CALL DELAY_HTHI ;VUA DELAY VA VUA HIEN THI

CJNE GIAY,#60,LB1 JMP LB

;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

HEXTOBCD: MOV A,GIAY

MOV B,#10 ;KHI BIEN DICH THANH 0000 1010B DIV AB ;(A)=BCD CHUC, (B)=BCD DONVI

;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

GIAIMA: MOVC A,@A+DPTR ;GIAI MA HANG CHUC

MOV 31H,A ;CAT TAM MA 7 DOAN CUA CHUC VAO 31H

MOVC A,@A+DPTR ;GIAI MA HANG DON VI MOV 30H,A

Trang 21

;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

DELAY_HTHI: MOV 78H,#200

DJNZ 78H,DELHT RET

HIENTHI: MOV P0,30H

CLR P2.0 CALL DELAY1MS SETB P2.0

MOV P0,31H CLR P2.1 CALL DELAY1MS SETB P2.1

RET

$INCLUDE(TV_DELAY.ASM)

MA7DOAN: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H

END

BÀI SỐ 3-3: CT ĐẾM TỪ 00 ĐẾN 99 – HIỂN THỊ TRÊN 2 LED 7 ĐOẠN QUÉT

LƯU ĐỒ ĐIỀU KHIỂN

END

DEM=100

LƯU 10 MÃ VÀO BN DEM:=0000 0000B

HEX(DEM) => BCD BCD => MA7DOAN => LED

VIẾT CHƯƠNG TRÌNH

Trang 22

;CHTR DK DEM GIAY

DEM EQU R1 ORG 0H

MOV DPTR,#MA7DOAN LB: MOV DEM,#00

LB1: CALL HEXTOBCD ;CHUYEN HEX SANG SO BCD

CALL GIAIMA ;CHUYEN SO BCD SANG MA 7 DOAN CALL DELAY_HTHI ;VUA DELAY VA VUA HIEN THI

CJNE DEM,#100,LB1 JMP LB

;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

HEXTOBCD: MOV A,DEM

MOV B,#10 ;KHI BIEN DICH THANH 0000 1010B DIV AB ;(A)=BCD CHUC, (B)=BCD DONVI

GIAIMA: MOVC A,@A+DPTR ;GIAI MA HANG CHUC

MOV 31H,A ;CAT TAM MA 7 DOAN CUA CHUC VAO 36H

MOVC A,@A+DPTR ;GIAI MA HANG DON VI MOV 30H,A

RET

DELAY_HTHI: MOV 78H,#200

DJNZ 78H,DELHT RET

HIENTHI: MOV P0,30H

CLR P2.0 CALL DELAY1MS SETB P2.0

MOV P0,31H CLR P2.1 CALL DELAY1MS SETB P2.1

RET

Trang 23

MA7DOAN: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H

END

GIẢI THÍCH CHƯƠNG TRÌNH CON DELAY:

- MỖI LỆNH CẦN 1 HOẶC 2 CHU KỲ MÁY ĐỂ THỰC HIỆN – CHO 1 CHU KỲ MÁY LÀ 1µS NẾU SỬ DỤNG THẠCH ANH 12MHZ

- MUỐN DELAY 1MS = 1000µS – CHO VI ĐIỀU KHIỂN THỰC HIỆN 1000 LỆNH NÀO ĐÓ – MỖI LỆNH 1 CHU KỲ

- VÍ DỤ LỆNH NOP

NOP ;THỨ 1 NOP ;THỨ 2

… NOP ;THỨ 1000

CÁCH VIẾT DÙNG VÒNG LẶP:

1 Lệnh chuyển dữ liệu vào ô nhớ trực tiếp :

 Cú pháp : MOV direct, #data

 Mã lệnh :

0 1 1 1 0 1 0 1 a7 a6 a5 a4 a3 a2 a1 a0 d7 d6 d5 d4 d3 d2 d1 d0

 Lệnh này chiếm 3 byte và thời gian thực hiện lệnh là 2 chu kỳ máy

Trang 24

 Chức năng: Nạp dữ liệu data 8 bit (d0 đến d7) vào ô nhớ có địa chỉ direct

2 Lệnh giảm ô nhớ trực tiếp và nhảy :

 Cú pháp : DJNZ direct, rel

 Mã lệnh :

1 1 0 1 0 1 0 1 a7 a6 a5 a4 a3 a2 a1 a0 r7 r6 r5 r4 r3 r2 r1 r0

 Lệnh này chiếm 3 byte và thời gian thực hiện lệnh là 2 chu kỳ máy

 Chức năng: Nếu nội dung của ô nhớ có địa chỉ direct giảm đi 1 và nếu kết quả sau khi giảm khác 0 thì vi điều khiển sẽ thực hiện chương trình tại địa chỉ rel, ngược lại nếu kết quả bằng 0 thì vi điều khiển sẽ tiếp tục thực hiện lệnh kế

3 Lệnh trở về từ chương trình con :

 Cú pháp : RET

 Mã lệnh :

0 0 1 0 0 0 1 0

 Lệnh này chiếm 1 byte và thời gian thực hiện lệnh là 2 chu kỳ máy

 Chức năng: Lệnh này sẽ kết thúc chương trình con, vi điều khiển sẽ trở lại chương trình chính để tiếp tục thực hiện chương trình

Trang 25

DJNZ 71H,DEL ;2T×198 MOV 72H,#101 ;2T DJNZ 72H,$ ;2T×101= 202T

TÍNH Y: Y= (399 – 4)/2 = 197,5 CHỌN 197 THIẾU THÊM 1T

TỔNG THỜI GIAN THIẾU LÀ 247 µS

DELAY100MS: MOV 71H,#250 ;2T

DEL: MOV 70H,#197 ;2T × X

DJNZ 70H,$ ;2T×Y × X DJNZ 71H,DEL ;2T × X MOV 72H,#122 ;2T

Trang 26

TẠI SAO CHƯƠNG TRÌNH CON HIENTHI LẠI CHÈN TRONG CHƯƠNG TRÌNH DELAY?

DO CHƯƠNG TRÌNH HIỂN THỊ DÙNG PHƯƠNG PHÁP QUÉT, NÊN PHẢI QUÉT LED LIÊN TỤC, NẾU NGỪNG QUÉT THÌ LED SẼ TẮT, HOẶC NẾU 1 CHƯƠNG TRÌNH NÀO ĐÓ THỰC HIỆN CHIẾM NHIỀU THỜI GIAN THÌ CŨNG LÀM LED TẮT

TRONG CHƯƠNG TRÌNH TRÊN THÌ CHƯƠNG TRÌNH CON DELAY SẼ CHIẾM NHIỀU THỜI GIAN THỰC HIỆN, NÊN PHẢI CHÈN HIỂN THỊ VÀO CHƯƠNG TRÌNH CON DELAY

BÀI SỐ 3-4: CT ĐẾM TỪ 000 ĐẾN 150

;CHTR DEM TU 000 DEN 150

GIAY EQU R2 ORG 0H

MOV DPTR,#MA7DOAN LB: MOV GIAY,#00H

LB1: CALL HEXTOBCD_GIAIMA

CALL DELAY_HIENTHI INC GIAY

CJNE GIAY,#151,LB1 JMP LB

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

HEXTOBCD_GIAIMA:

MOV A,GIAY MOV B,#10 DIV AB ; MOV 20H,B ;(27H)=DVI MOV B,#10

DIV AB ;(B)=CHUC, (A)=TRAM

MOVC A,@A+DPTR ;LAY TRAM MOV 32H,A ;CAT VAO ON 32H

MOV A,B ; MOVC A,@A+DPTR ;LAY CHUC MOV 31H,A ;CAT VAO ON 31H

Trang 27

MOV A,20H ; MOVC A,@A+DPTR ;LAY DVI MOV 30H,A ;CAT VAO ON 30H RET

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

DELAY_HIENTHI: MOV 7AH,#0100

DJNZ 7AH,DEL_HT RET

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

HIENTHI: MOV P0,30H ;MA DVI GIAY

CLR P2.0 CALL DELAY1MS SETB P2.0

MOV P0,31H ;MA CHUC GIAY CLR P2.1

CALL DELAY1MS SETB P2.1

MOV P0,32H ;MA CHUC GIAY CLR P2.2

CALL DELAY1MS SETB P2.2

RET MA7DOAN: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H

$INCLUDE(TV_DELAY.ASM)

END

BÀI SỐ 3-4: CT ĐẾM PHÚT GIÂY – DÙNG PORT 0, 1

LƯU ĐỒ ĐIỀU KHIỂN

Trang 28

HEX(PHÚT GIÂY) => BCD GIẢI MÃ 7 ĐOẠN DELAY – HIỂN THỊ GIÂY:= GIÂY +1

GIAY=60

LƯU 10 MÃ VÀO BN

GIÂY:=00 (HEX) PHÚT := 00 (HEX)

MOV DPTR,#MA7DOAN LB: MOV PHUT,#00

LB2: MOV GIAY,#00

LB1: CALL HEXTOBCD ;CHUYEN HEX SANG SO BCD

CALL GIAIMA CALL DELAY_HTHI

INC GIAY CJNE GIAY,#60,LB1 INC PHUT

CJNE PHUT,#60,LB2

Ngày đăng: 26/04/2013, 08:52

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w