1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Thí nghiệm vi xử lí ppsx

26 549 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

Định dạng
Số trang 26
Dung lượng 101 KB

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

Nội dung

THÍ NGHIỆM 4: Viết chương trình làm cho led nối đến chân P1.0 chớp tắt với tần số có thể tăng hoặc giảm bằng cách nhấn nút nối đến chân P1.1 hoặc P1.2... BÀI 2: THÍ NGHIỆM HIỂN THỊ DÙN

Trang 1

BÀI 1: THÍ NGHIỆM VỚI NÚT NHẤN VÀ LED ĐƠN

THÍ NGHIỆM 1:Viét chương trình liên tục đọc trạng thái của nút nhấn được nối đến P1.0 và hiển thị ra Led được nối tại chân P1.1 ( bit thứ nhất của Led thanh BL202)

ORG 2000HMAIN: MOV C,P1.0

MOV P1.1,CSJMP MAINEND

THÍ NGHIỆM 2: Viết chương trình tạo xung vuông 1Hz được nối đến chân P1.0

ORG 2000HMAIN: CPL P1.0

MOV R5,#10LAP1: MOV R6,#100LAP: MOV R7,#250

DJNZ R7,$

DJNZ R6,LAPDJNZ R5,LAP1SJMP MAINEND

Thay đổi tần số xung vuông thành 0.5Hz với chu kỳ nhiệm vụ là 30%

ORG 2000HMAIN: SETB P1.0

MOV R5,#30LAP1: MOV R6,#100LAP: MOV R7,#100

DJNZ R7,$

DJNZ R6,LAPDJNZ R5,LAP1CLR P1.0MOV R5,#70LOOP1: MOV R6,#100LOOP: MOV R7,#100

DJNZ R7,$

DJNZ R6,LOOPDJNZ R5,LOOP1SJMP MAINEND

Trang 2

THÍ NGHIỆM 3: Viết chương trình tạo xung vuông 1Hz dùng Timer0 ( không dung ngắt)

ORG 2000HMOV TMOD,#01HLOOP: MOV R7,#20LAP: CLR TR0

MOV TH0,#HIGH(-50000)MOV TL0,#LOW(-50000)SETB TR0

JNB TF0,$

CLR TF0DJNZ R7,LAPCPL P1.0SJMP LOOPEND

Dùng ngắt Timer 0 để tạo xung vuông 1Hz

ORG 2000HLJMP MAINORG 200BHLJMP ISR_T0MAIN: MOV TMOD,#01H

MOV R7,#20CLR TR0MOV TH0,#HIGH(-50000)MOV TL0,#LOW(-50000)SETB TR0

MOV IE,#82HSJMP $ISR_T0:

CLR TR0MOV TH0,#HIGH(-50000)MOV TL0,#LOW(-50000)SETB TR0

DJNZ R7,EXITCPL P1.0MOV R7,#20EXIT: RETI

END

Trang 3

THÍ NGHIỆM 4: Viết chương trình làm cho led nối đến chân P1.0 chớp tắt với tần số có thể tăng ( hoặc

giảm) bằng cách nhấn nút nối đến chân P1.1 ( hoặc P1.2 ) Chu kỳ chớp tắt trung bình được chọn là 1s

ORG 2000H MOV 31H,#100;TAO XUNG 0.1Hz MOV 32H,#20 ;TAO XUNG 0.5Hz MOV 33H,#10 ;TAO XUNG 1Hz MOV 34H,#5 ;TAO XUNG 2Hz MOV 35H,#4 ;TAO XUNG 2.5Hz MOV 36H,#2 ;TAO XUNG 5Hz MOV TMOD,#01H

MOV R0,#33H LOOP:

JNB P1.1,LOOP1 ;TANG TAN SO JNB P1.2,LOOP2 ;GIAM TAN SO CALL DELAY

CPL P1.0 SJMP LOOP

LOOP1:

JNB P1.1,$

INC R0 CJNE R0,#37H,TANG MOV R0,#33H

LOOP2:

JNB P1.2,$

DEC R0 CJNE R0,#30H,GIAM MOV R0,#33H GIAM: SJMP LOOP

DELAY:

MOV A,@R0 LAP: MOV TH0,#HIGH(-50000)

MOV TL0,#LOW(-50000) SETB TR0

JNB TF0,$

CLR TF0 CLR TR0 DJNZ ACC,LAP RET

END

BÀI TẬP THÊM BÀI 1

Trang 4

BÀI 2: THÍ NGHIỆM HIỂN THỊ DÙNG LED 7 ĐOẠN

THÍ NGHIỆM 1: Viết chương trình thực hiện bộ đếm từ 0 đến 9 và hiển thị lên led 7 đoạn, mỗi lần cách

nhau 2s

ORG 2000HLOOP: MOV A,#0LAP: MOV R7,A

MOV DPTR,#TABLEMOVC A,@A+DPTRMOV DPTR,#0000H

MOVX @DPTR,A

MOV A,R7INC AACALL DELAY_2SCJNE A,#10,LAPSJMP LOOP

TABLE: DB 0E0H,0E1H,0E2H,0E3H,0E4H,0E5H,0E6H,0E7H,0E8H,0E9H

DELAY_2S: MOV TMOD,#01H

MOV R7,#40LAP1: MOV TH0,#HIGH(-50000)

MOV TL0,#LOW(-50000)SETB TR0

JNB TF0,$

CLR TR0CLR TF0DJNZ R7,LAP1RET

END

THÍ NGHIỆM 2: Viết chương trình hiển thị giá trị 1234 lên 4 led 7 đoạn

ORG 2000HLOOP: MOV A,#0LAP: MOV R7,A

MOV DPTR,#TABLEMOVC A,@A+DPTRMOV DPTR,#0000HMOVX @DPTR,AMOV A,R7INC AACALL DELAY_3MSCJNE A,#4,LAPSJMP LOOPTABLE: DB 071H,0B2H,0D3H,0E4H

Trang 5

DELAY_3MS: MOV TMOD,#01H

MOV TH0,#HIGH(-3000)MOV TL0,#LOW(-3000)SETB TR0

JNB TF0,$

CLR TR0CLR TF0RETEND

THÍ NGHIỆM 3: Viết chương trình hiển thị giá trị nhị phân trong thanh ghi R7 lên led 7 đoạn

ORG 2000HMOV R7,#255LOOP: MOV B,#10

MOV A,R7DIV ABMOV R4,BMOV B,#10DIV ABORL A,#0B0HMOV DPTR,#0HMOVX @DPTR,AACALL DELAY_3MSMOV A,B

ORL A,#0D0HMOVX @DPTR,AACALL DELAY_3MSMOV A,R4

ORL A,#0E0HMOVX @DPTR,AACALL DELAY_3MSSJMP LOOP

DELAY_3MS: MOV TMOD,#01H

MOV TH0,#HIGH(-3000)MOV TL0,#LOW(-3000)SETB TR0

JNB TF0,$

CLR TR0CLR TF0RETEND

Trang 6

Đếm số lần nhấn phìm P1.0

ORG 2000HSETB P1.0MOV R3,#30MOV R4,#100MOV R5,#100 ; khởi động giá trị của R3,R4,R5tạo delay để chống rung phím

MOV A,#0MOV DPTR,#0000HSJMP LOOP

LAP: INC A

MOV R7,A

LOOP: MOV B,#10

DIV ABMOV R6,BMOV B,#10DIV ABORL A,#0B0HMOVX @DPTR,AACALL DELAY_3MSMOV A,B

ORL A,#0D0HMOVX @DPTR,AACALL DELAY_3MSMOV A,R6

ORL A,#0E0HMOVX @DPTR,AACALL DELAY_3MSMOV A,R7

JB P1.0, LOOP ; kiểm tra có ấn nút hay chưaDJNZ R3,LOOP

MOV R3,#30DJNZ R4,LOOPMOV R3,#30MOV R4,#100DJNZ R5,LOOPMOV R3,#30MOV R4,#100MOV R5,#100JNB P1.0, LOOP ; kiểm tra đã thả nút ấn hay chưa

JB P1.0,LAP

DELAY_3MS: MOV TMOD,#01H

MOV TH0,#HIGH(-3000)MOV TL0,#LOW(-3000)SETB TR0

JNB TF0,$

CLR TR0

Trang 7

CLR TF0RETEND

BÀI 3: THÍ NGHIỆM HIỂN THỊ DÙNG LCD

THÍ NGHIỆM 1: Viết chương trình hiển thị chuỗi “ Hello” lên LCD

ORG 2000H

EN BIT P3.4

RS BIT P3.5MAIN: MOV DPTR, #8000H

ACALL LCD_INITMOV A,#'H'ACALL WRITE_CHARMOV A,#'e'

ACALL WRITE_CHARMOV A,#'l'

ACALL WRITE_CHARMOV A,#'l'

ACALL WRITE_CHARMOV A,#'o'

ACALL WRITE_CHARSJMP $

LCD_INIT: MOV A,#38H

CALL WRITE_CMDMOV A,#0EHCALL WRITE_CMDMOV A,#06HCALL WRITE_CMDRET

WAIT_LCD: MOV R7, #100

DL: MOV R6, #250

DJNZ R6, $DJNZ R7, DLRET

WRITE_CHAR: ACALL WAIT_LCD

SETB RSMOVX @DPTR, ASETB EN

CLR ENRET

WRITE_CMD: ACALL WAIT_LCD

CLR RS

Trang 8

MOVX @DPTR, ASETB EN

CLR ENRETEND

BÀI TẬP THÊM: Cho chạy chữ “ Hello” trên màn hình LCD

ORG 2000H

EN BIT P3.4

RS BIT P3.5MAIN: MOV R5,#2

MOV DPTR, #8000HACALL LCD_INITMOV A,#'H'ACALL WRITE_CHARMOV A,#'E'

ACALL WRITE_CHARMOV A,#'L'

ACALL WRITE_CHARMOV A,#'L'

ACALL WRITE_CHARMOV A,#'O'

ACALL WRITE_CHARTT: MOV R1,#11

MOV A,#18H : khới động dịch tráiLAP: ACALL WRITE_CMD

DL: ACALL WAIT_LCD

DJNZ R5,DL ; tạo thới gian delay sau mỗi lần dịchMOV R5,#2

DJNZ R1, LAPMOV R1,#11MOV A,#1CH ; khới động dịch phảiLAP2: ACALL WRITE_CMD

DL2: ACALL WAIT_LCD

DJNZ R5,DL2 ; tạo thời gian delay sau mỗi lần dịchMOV R5,#2

DJNZ R1,LAP2SJMP TT

LCD_INIT: MOV A, #38H

ACALL WRITE_CMDMOV A, #0CH

ACALL WRITE_CMDMOV A, #06H

ACALL WRITE_CMDMOV A, #01H

ACALL WRITE_CMDMOV A, #8BH

ACALL WRITE_CMDRET

Trang 9

WAIT_LCD: MOV R7,#100

LOOP: MOV R6, #250

DJNZ R6,$

DJNZ R7, LOOPRET

WRITE_CHAR: ACALL WAIT_LCD

SETB RSMOVX @DPTR,ASETB EN

CLR ENRET

WRITE_CMD: ACALL WAIT_LCD

CLR RSMOVX @DPTR,ASETB EN

CLR ENRETEND

BÀI 4: THÍ NGHIỆM GIAO TIẾP QUA CỔNG NỐI TIẾP

THÍ NGHIỆM 1: Viết chương trình phát chuỗi ký tự “Hello, world” lên máy tính thong qua

HyperTerminal với tốc độ 9600pbs

ORG 2000HMOV TMOD,#20HMOV TL1,#-3MOV TH1,#-3MOV SCON,#42HSETB TR1

MOV DPTR,#MSGLAP: CLR A

MOVC A,@A+DPTR

JZ KTACALL SENDINC DPTRSJMP LAPKT: SJMP KTMSG: DB 'HellO, world',0SEND: JNB TI,SEND

MOV SBUF,ACLR TIRETEND

Trang 10

THÍ NGHIỆM 2: Viết chương trình nhân các ký tự từ máy tính gửi đến EME-MC8 thông qua

HyperTerminal ( bằng cách gõ các ký tự trên bàn phím khi đang ở trong chương trình HyperTerminal ) vàhiển thị lên LCD

ORG 2000H

EN BIT P3.4

RS BIT P3.5MOV TMOD,#20HMOV TL1,#-3MOV TH1,#-3MOV SCON,#52HSETB TR1

MOV DPTR,#8000HACALL LCD_INITLAP:

ACALL RECEIVEACALL WRITE_CHARSJMP LAP

LCD_INIT:

MOV A, #38HACALL WRITE_CMDMOV A, #0EH

ACALL WRITE_CMDMOV A, #06H

ACALL WRITE_CMDMOV A,#01H

ACALL WRITE_CMDRET

WAIT_LCD: MOV R7,#100

LOOP: MOV R6, #250

DJNZ R6,$

DJNZ R7, LOOPRET

WRITE_CHAR: ACALL WAIT_LCD

SETB RSMOVX @DPTR,ASETB EN

CLR ENRET

WRITE_CMD: ACALL WAIT_LCD

CLR RSMOVX @DPTR,ASETB EN

CLR ENRET

Trang 11

RECEIVE: JNB RI,RECEIVE

MOV A, SBUFCLR RI

RETEND

THÍ NGHIỆM 3: Viết chương trình nhận một ký tự từ cổng nối tiếp hiển thị lên LCD đồng thời phát ra

cổng nối tiếp Tốc độ tùy chọn

ORG 2000H

EN BIT P3.4

RS BIT P3.5MOV TMOD,#20HMOV TL1,#-3MOV TH1,#-3MOV SCON,#52HSETB TR1

MOV DPTR,#8000HACALL LCD_INITLAP:

ACALL RECEIVEACALL WRITE_CHARACALL SEND

SJMP LAP

LCD_INIT:

MOV A, #38HACALL WRITE_CMDMOV A, #0EH

ACALL WRITE_CMDMOV A, #06H

ACALL WRITE_CMDMOV A,#01H

ACALL WRITE_CMDRET

WAIT_LCD: MOV R7,#100

LOOP: MOV R6, #250

DJNZ R6,$

DJNZ R7, LOOPRET

WRITE_CHAR: ACALL WAIT_LCD

SETB RSMOVX @DPTR,ASETB EN

CLR ENRET

WRITE_CMD: ACALL WAIT_LCD

Trang 12

CLR RSMOVX @DPTR,ASETB EN

CLR ENRET

RECEIVE: JNB RI,RECEIVE

MOV A, SBUFCLR RI

RETSEND: JNB TI, SEND

MOV SBUF, ACLR TI

RETEND

BÀI TẬP THÊM : Viết chương trình nhận ký tự từ cổng nối tiếp, đông thới phát ra cổng nối tiếp, với điềukiện:

- Nếu ký tự nhân được là số thì xuất ra Led

- Nếu ký tự nhân được là chữ A-Z, a-z thì xuất ra LCD

- Nếu ký tự nhận được là Enter thì xuống hàng , là ESC thì xóa trong màn hình LCD Mã ASCII của Enter là 13, ESC là 27

ORG 2000H

EN BIT P3.4

RS BIT P3.5MOV TMOD,#20HMOV TL1,#-3MOV TH1,#-3MOV SCON,#52HSETB TR1

MOV R1,#0MOV DPTR,#8000HACALL LCD_INITLAP:

ACALL RECEIVECJNE A,#13,TT ; kiểm tra phím nhấn EnterMOV A,#0C0H

ACALL WRITE_CMDSJMP THOAT

TT: CJNE A,#27,TT1 ; kiểm tra phím nhấn ESC

MOV A,#01HACALL WRITE_CMDSJMP THOAT

Trang 13

CJNE A,#5BH,HOA ; kết thúc kiểm tra phím nhấn là chữ hoaHOA: JC NHO

CJNE A,#61H,KHAC1 ; bắt đầu kiểm tra phím nhấn là chữ thườngKHAC1: JC THOAT

CJNE A,#7BH,THUONG ; kết thúc kiểm tra phím nhần là chữ thườngTHUONG: JC NHO

SJMP THOATNHO: MOV DPTR,#8000H

INC R1CJNE R1,#17,XUONG ; kiểm tra nếu hiển thị hết hàng đầu tiên thì xuông hàng trong màn hình LCD

XUONG: JC XUATLCD

PUSH ACCMOV A,#0C0HACALL WRITE_CMDPOP ACC

MOV R1,#0

XUATLCD: ACALL WRITE_cHAR

SJMP THOATLED: MOV DPTR,#0000H

ANL A,#0FHORL A,#0E0HMOVX @DPTR,ATHOAT: MOV DPTR,#8000H

ACALL SENDSJMP LAP

LCD_INIT:

MOV A, #38HACALL WRITE_CMDMOV A, #0EH

ACALL WRITE_CMDMOV A, #06H

ACALL WRITE_CMDMOV A, #01H

ACALL WRITE_CMDRET

WAIT_LCD: MOV R7,#100

LOOP: MOV R6, #250DJNZ R6,$

DJNZ R7, LOOPRET

WRITE_CHAR:

ACALL WAIT_LCDSETB RS

MOVX @DPTR,ASETB EN

Trang 14

CLR ENRET

WRITE_CMD:

ACALL WAIT_LCDCLR RS

MOVX @DPTR,ASETB EN

CLR ENRETRECEIVE: JNB RI,RECEIVE

MOV A, SBUFCLR RI

RETSEND: JNB TI,SEND

MOV SBUF,ACLR TIRETEND

BÀI 5: THÍ NGHIỆM ĐIỀU KHIỂN ADC

THÍ NGHIỆM 1: Viết chương trình đọc điện áp của biến trở trên kênh 0 và hiển thị ra led 7 đoạn

ORG 2000HLAP: MOV R1,#255

MOV DPTR,#4000HMOV A,#0

MOVX @DPTR,AACALL DELAY_100USMOVX A,@DPTRLAP1: PUSH ACC

MOV DPTR,#0000HMOV B,#10

DIV ABMOV R7,BMOV B,#10DIV ABORL A,#0B0HMOVX @DPTR,AACALL DELAY_1MSMOV A,B

ORL A,#0D0HMOVX @DPTR,AACALL DELAY_1MSMOV A,R7

ORL A,#0E0HMOVX @DPTR,AACALL DELAY_1MS

Trang 15

POP ACCDJNZ R1,LAP1 ; tạo thời gian delaySJMP LAP

DELAY_100US: MOV R6,#200

DJNZ R6,$

RET

DELAY_1MS: MOV R6,#5LOOP: MOV R5,#100

DJNZ R5,$

DJNZ R6,LOOPRET

MOV A,#0MOVX @DPTR,AACALL DELAY_100USMOVX A,@DPTRMOV DPTR,#8000HPUSH ACC

MOV A, #80HACALL WRITE_CMDPOP ACC

MOV B,#10DIV ABMOV R0,BMOV B,#10DIV ABORL A,#30HACALL WRITE_CHARMOV A,B

ORL A,#30HACALL WRITE_CHARMOV A,R0

ORL A,#30HACALL WRITE_CHARSJMP LAP

LCD_INIT: MOV A, #38H

ACALL WRITE_CMDMOV A, #0CH

ACALL WRITE_CMD

Trang 16

MOV A, #04HACALL WRITE_CMDMOV A, #01H

ACALL WRITE_CMDRET

WAIT_LCD: MOV R7,#100

LOOP: MOV R6, #250

DJNZ R6,$

DJNZ R7, LOOPRET

WRITE_CHAR: SETB RS

MOVX @DPTR,ASETB EN

CLR ENACALL WAIT_LCDRET

WRITE_CMD: CLR RS

MOVX @DPTR,ASETB EN

CLR ENACALL WAIT_LCDRET

DELAY_100US: MOV R6,#200

DJNZ R6,$

RETEND

BÀI TẬP THÊM : Viết chương trình đọc điện áp thực của kênh 0 và hiển thị lên LCD

ORG 2000H

RS BIT P3.5

EN BIT P3.4MOV DPTR,#8000HACALL LCD_INITLAP: MOV DPTR,#4000H

MOV A,#0MOVX @DPTR,AACALL DELAY_100USMOVX A,@DPTRMOV DPTR,#8000HACALL CHIAMOV A, #80HACALL WRITE_CMDSJMP LAP

Trang 17

LCD_INIT: MOV A, #38H

ACALL WRITE_CMD MOV A, #0CH

ACALL WRITE_CMDMOV A, #04H

ACALL WRITE_CMDMOV A, #01H

ACALL WRITE_CMDRET

WAIT_LCD: MOV R7,#100

LOOP: MOV R6, #250

DJNZ R6,$

DJNZ R7, LOOPRET

WRITE_CHAR: SETB RS

MOVX @DPTR,ASETB EN

CLR ENACALL WAIT_LCDRET

WRITE_CMD: CLR RS

MOVX @DPTR,ASETB EN

CLR ENACALL WAIT_LCDRET

ACALL WRITE_CHARMOV A,B

MOV B,#5DIV ABORL A,#30HACALL WRITE_CHARPOP B

POP ACC

Trang 18

BÀI 6: THÍ NGHIỆM HIỂN THỊ DÙNG LED MA TRẬN

THÍ NGHIỆM 1: Viết chương trình hiển thị ký tự chữ A lên led ma trận

ORG 2000H LOOP: MOV R1,#8

MOV A,#00000001B MOV DPTR,#CHARA LAP: ACALL HT_COT

PUSH ACC CLR A MOVC A,@A+DPTR ACALL HT_HANG INC DPTR

POP ACC

RL A DJNZ R1, LAP SJMP LOOP CHARA: DB 03H, 0EDH, 0EEH, 0EEH, 0EDH, 03H, 0FFH, 0FFH HT_COT: PUSH DPH

PUSH DPL MOV DPTR,# 0C000H MOVX @DPTR,A POP DPL

POP DPH RET

HT_HANG: PUSH DPH

PUSH DPL MOV DPTR,# 0A000H MOVX @DPTR,A ACALL DELAY_1ms POP DPL

POP DPH RET

Trang 19

MOV R7,#5 DL: MOV R6,#100

DJNZ R6,$

DJNZ R7,DL RET

END

THÍ NGHIỆM 2: Viết chương trình con hiển thị nội dung 8 ô nhớ từ 30H đến 37H Dùng

chương trình con để hiển thị chữ A, B

HT_ONHO:

MOV R1,#8 MOV A,#00000001B MOV R0,#30H LAP: ACALL HT_COT

PUSH ACC CLR A MOV A,@R0 ACALL HT_HANG INC R0

POP ACC

RL A DJNZ R1, LAP RET

HT_COT:

PUSH DPH PUSH DPL MOV DPTR,# 0C000H MOVX @DPTR,A POP DPL

POP DPH RET HT_HANG:

PUSH DPH PUSH DPL MOV DPTR,# 0A000H MOVX @DPTR,A ACALL DELAY_1ms POP DPL

POP DPH RET DELAY_1ms:

MOV R7,#5 DL: MOV R6,#100

Trang 20

DJNZ R6,$

DJNZ R7,DL RET

Dùng chương trình con trên hiển thị chữ A

ORG 2000H MOV 30H,#03H MOV 31H,#0EDH MOV 32H,#0EEH MOV 33H,#0EEH MOV 34H,#0EDH MOV 35H,#03H MOV 36H,#0FFH MOV 37H,#0FFH LOOP: ACALL HT_ONHO

SJMP LOOP

HT_ONHO:

MOV R1,#8 MOV A,#00000001B MOV R0,#30H LAP: ACALL HT_COT

PUSH ACC CLR A MOV A,@R0 ACALL HT_HANG INC R0

POP ACC

RL A DJNZ R1, LAP RET

HT_COT:

PUSH DPH PUSH DPL MOV DPTR,# 0C000H MOVX @DPTR,A POP DPL

POP DPH RET HT_HANG:

PUSH DPH PUSH DPL MOV DPTR,# 0A000H MOVX @DPTR,A ACALL DELAY_1ms POP DPL

Trang 21

POP DPH RET DELAY_1ms:

MOV R7,#5 DL: MOV R6,#100

DJNZ R6,$

DJNZ R7,DL RET

END Dùng chương trình con trên hiển thị chữ B

ORG 2000H MOV 30H,#00H MOV 31H,#76H MOV 32H,#76H MOV 33H,#76H MOV 34H,#89H MOV 35H,#0FFH MOV 36H,#0FFH MOV 37H,#0FFH LOOP: ACALL HT_ONHO

SJMP LOOP

HT_ONHO:

MOV R1,#8 MOV A,#00000001B MOV R0,#30H LAP: ACALL HT_COT

PUSH ACC CLR A MOV A,@R0 ACALL HT_HANG INC R0

POP ACC

RL A DJNZ R1, LAP RET

HT_COT:

PUSH DPH PUSH DPL MOV DPTR,# 0C000H MOVX @DPTR,A POP DPL

POP DPH RET HT_HANG:

Trang 22

PUSH DPH PUSH DPL MOV DPTR,# 0A000H MOVX @DPTR,A ACALL DELAY_1ms POP DPL

POP DPH RET DELAY_1ms:

MOV R7,#5 DL: MOV R6,#100

DJNZ R6,$

DJNZ R7,DL RET

END

BÀI TẬP THÊM : Cho hiển thị và chạy chữ A B C trên led ma trận

ORG 2000H TT: MOV R4,#10

MOV R0,#0 MOV DPTR,#CHAR MOV R5,#32

LOOP1: MOV R2,DPH

MOV R3,DPL LOOP: MOV DPH,R2

MOV DPL,R3 MOV R1,#8 MOV A,#00000001B LAP: ACALL HT_COT

PUSH ACC CLR A MOVC A,@A+DPTR ACALL HT_HANG INC DPTR

POP ACC

RL A DJNZ R1, LAP DJNZ R4,LOOP MOV R4,#10 INC R0 MOV A,R0 MOV DPTR,#CHAR ADD A,DPL

MOV DPL,A DJNZ R5,LOOP1

Trang 23

SJMP TT CHAR: DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,03H, 0EDH, 0EEH, 0EEH, 0EDH, 03H, 0FFH, 0FFH,00H, 76H, 76H, 76H, 89H, 0FFH, 0FFH,0FFH,81H,7EH,7EH,7EH,0BDH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH,0FFH,0FFH,0FFH

HT_COT:

PUSH DPH PUSH DPL MOV DPTR,#0C000H MOVX @DPTR,A POP DPL

POP DPH RET HT_HANG:

PUSH DPH PUSH DPL MOV DPTR,#0A000H MOVX @DPTR,A ACALL DELAY_1ms POP DPL

POP DPH RET DELAY_1ms:

MOV R7,#5 DL: MOV R6,#100

DJNZ R6,$

DJNZ R7,DL RET

END

BÀI 7: THÍ NGHIỆM VỚI ĐỘNG CƠ DC

THÍ NGHIỆM 1: Viết chương trình cho phép động cơ chạy theo chiều thuận trong vòng 2s , nghỉ

2s,chạy theo chiều ngược 2s, nghỉ 2s và lặp lại

ORG 2000H CLR A MOV TMOD,#10H MOV DPTR,#0E000H LAP: ACALL CHIEUTHUAN

ACALL DELAY_2S ACALL NGHI ACALL DELAY_2S

Trang 24

ACALL CHIEUNGHICH ACALL DELAY_2S ACALL NGHI ACALL DELAY_2S

CHIEUTHUAN:

SETB ACC.0 CLR ACC.1 MOVX @DPTR,A RET

NGHI:

CLR ACC.0 CLR ACC.1 MOVX @DPTR,A RET

CHIEUNGHICH:

CLR ACC.0 SETB ACC.1 MOVX @DPTR,A RET

DELAY_2S:

MOV R7,#40 LOOP: MOV TL1,#LOW(-50000)

MOV TH1,#HIGH(-50000) SETB TR1

JNB TF1,$

CLR TF1 CLR TR1 DJNZ R7, LOOP RET

END

THÍ NGHIỆM 2: Viết chương trình điều khiển động cơ với phương pháp PWM, trong đó thời

gian bật của xung là 50% chu kỳ

ORG 2000H LJMP MAIN ORG 200BH LJMP ISR_T0 ORG 201BH LJMP ISR_T1 MAIN:

MOV TMOD,#11H CLR A

SETB TF0 MOV IE,#82H

Trang 25

MOV DPTR,#0E000H LAP: MOVX @DPTR,A

SJMP LAP ISR_T0:

SETB ACC.0 CLR TR0 MOV TL0,#LOW(-1000) MOV TH0,#HIGH(-1000) SETB TR0

CLR TR1 MOV TL1,#LOW(-500) MOV TH1,#HIGH(-500) SETB TR1

SETB ET1 RETI ISR_T1:

CLR TR1 CLR ACC.0 CLR ET1 RETI END

THÍ NGHIỆM 3: Viết chương trình điều khiển động cơ với phương pháp PWM, trong đó thời

gian “bật” của xung lần lượt là 20%, 50%, và 80% chu kỳ Mỗi độ rộng xung cách nhau 5s Quy trình được lặp lại liên tục

ORG 2000HLJMP MAINORG 200BHLJMP ISR_T0ORG 201BHLJMP ISR_T1 MAIN:

MOV TMOD,#11HMOV R7,#50MOV R6,#100MOV R5,#0CLR ASETB TF0MOV IE,#82HMOV DPTR,#0E000HLAP: MOVX @DPTR,A

SJMP LAPISR_T0:

SETB ACC.0CLR TR0

Ngày đăng: 06/07/2014, 04:20

TỪ KHÓA LIÊN QUAN

w