Báo cáo thí nghiệm Vi xử lý - Nguyễn Phước Lộc

PHẦN A: THÍ NGHIỆM VI ĐIỀU KHIỂN 89S52 5

Bài 1: Thí nghiệm với nút nhấn và Led đơn. 5

Thí nghiệm 1: Viết chương trình thực hiện việc đọc liên tục trạng trạng thái của

nút nhấn P1.0 và hiển thị ra LED được nối tại chân P1.1 . 5

Thí nghiệm 2.1: Viết chương trình tạo xung vuông 1Hz ra chân P1.0,biết tần số dao

động được dùng trong KIT là 11.059MHz. . 5

Thí nghiệm 2.2: . 5

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

Thí nghiệm 3.1: . 6

Viết chương trình tạo xung vuông 1 Hz dùng Timer0 . 6

Thí nghiệm 3.2: . 6

Sử dụng ngắt Timer để tạo xung . 6

Thí nghiệm 4: . 7

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ể thay

đổi được bằng cách nhấn P1.1 (tăng) hoặc P1.2 (giảm) . 7

Bài 2: Thí nghiệm hiển thị dùng LED 7 đoạn. 8

Thí nghiệm 1: . 8

Viết chương trình thực hiện bộ đếm từ 0 đến 9 và hiển thị ra LED 7 đoạn,mỗi lần

cách nhau 2s. 8

Thí nghiệm 2: . 8

Viết chương trình hiển thị giá trị 1234 ra LED 7 đoạn. . 8

Thí nghiệm 3: Viết chương trình thể hiện giá trị nhị phân trong thanh ghi R7 ra

LED 7 đoạn. . 9

Bài 3: Thí nghiệm hiển thị dùng LCD. 10

Thí nghiệm : Hiển thị dịch trái chuỗi “DHBK Tp.HCM” . 10

Bài 4: Thí nghiệm giao tiếp qua cổng nối tiếp. 12

Thí nghiệm 1: Viết chương trình phát chuỗi ký tự “Hello, world” lên máy tính thông

qua Hyper Terminal với tốc độ 19200pbs. . 12

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 Hyper Terminal (bằng cách gõ các ký tự trên bàn phím khi đang ở trong

chương trình Hyper Terminal) và hiển thị lên LCD. . 13

Bài 5: Thí nghiệm điều khiển ADC. 15

Thí nghiệm 1: Viết chương trình thực hiện đọc điện áp của biến trở trên kênh 0 và

hiển thị ra led 7 đoạn. 15

Thí nghiệm 2: Viết chương trình thực hiện đọc điện áp của biến trở trên kênh 0 và

hiển thị ra LCD. . 16

Bài 6: Thí nghiệm với LED ma trận. 18

Thí nghiệm 1: Viết chương trình hiển thị chữ A ra LED ma trận . 18Thí nghiệm Vi Xử Lý | 3

3 Báo cáo Thí nghiệm Vi Xử Lý Nhóm 2

Thí nghiệm 2: Viết lại chương trình hiển thị chữ A ra LED ma trận có sử dụng

chương trình con. 19

Bài 7: Thí nghiệm với động cơ DC. 20

Thí nghiệm1: 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. . 20

Thí nghiệm2: 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ỳ. 21

pdf40 trang | Chuyên mục: Vi Xử Lý – Vi Điều Khiển | Chia sẻ: tuando | Lượt xem: 666 | Lượt tải: 0download
Tóm tắt nội dung Báo cáo thí nghiệm Vi xử lý - Nguyễn Phước Lộc, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
 MOV DPTR, #8000H 
 LCALL WAIT_LCD 
 CLR RS 
 MOVX @DPTR, A 
 SETB EN 
 CLR EN 
RET 
; =============================================================== 
; =============================================================== 
; CT CON 16BIT / 16BIT 
; [R3 R2 R1 R0] = [ R1 R0 ] / [ R3 R2] 
; =============================================================== 
; =============================================================== 
CHIA_16: 
 MOV A, R2 
 ADD A, R3 
 CJNE A,#0,NNNN 
 LJMP ERROR 
NNNN: 
 Thí nghiệm Vi Xử Lý | 32 
32 Báo cáo Thí nghiệm Vi Xử Lý Nhóm 2 
 MOV R7, #0 ; CLEAR PARTIAL REMAINDER 
 MOV R6, #0 
 MOV B, #16 ; SET LOOP COUNT 
DIV_LOOP: CLR C ; CLEAR CARRY FLAG 
 MOV A, R0 ; SHIFT THE HIGHEST BIT OF 
 RLC A ; THE DIVIDEND INTO... 
 MOV R0, A 
 MOV A, R1 
 RLC A 
 MOV R1, A 
 MOV A, R6 ; ... THE LOWEST BIT OF THE 
 RLC A ; PARTIAL REMAINDER 
 MOV R6, A 
 MOV A, R7 
 RLC A 
 MOV R7, A 
 MOV A, R6 ; TRIAL SUBTRACT DIVISOR 
 CLR C ; FROM PARTIAL REMAINDER 
 SUBB A, R2 
 MOV DPL, A 
 MOV A, R7 
 SUBB A, R3 
 MOV DPH, A 
 CPL C ; COMPLEMENT EXTERNAL BORROW 
 JNC DIV_1 ; UPDATE PARTIAL REMAINDER IF 
 ; BORROW 
 MOV R7, DPH ; UPDATE PARTIAL REMAINDER 
 MOV R6, DPL 
DIV_1: MOV A, R4 ; SHIFT RESULT BIT INTO PARTIAL 
 RLC A ; QUOTIENT 
 MOV R4, A 
 MOV A, R5 
 RLC A 
 MOV R5, A 
 DJNZ B, DIV_LOOP 
 MOV A, R5 ; PUT QUOTIENT IN R0, AND R1 
 MOV R1, A 
 MOV A, R4 
 MOV R0, A 
 MOV A, R7 ; GET REMAINDER, SAVED BEFORE THE 
 MOV R3, A ; LAST SUBTRACTION 
 MOV A, R6 
 MOV R2, A 
;'''''''''''''''''''''''''' 
 MOV A, R0 
 MOV R2, A 
 MOV A, R1 
 MOV R3, A 
 LCALL BINTOASC 
 LCALL HIENTHIKQ 
;'''''''''''''''''''''''''''' 
RET 
; ============================================================== 
; ============================================================== 
; CT CON 16BIT * 16BIT 
; [R3 R2 R1 R0] = [ R1 R0 ] * [ R3 R2] 
; ============================================================== 
; ============================================================== 
 Thí nghiệm Vi Xử Lý | 33 
33 Báo cáo Thí nghiệm Vi Xử Lý Nhóm 2 
NHAN_16: 
 MOV A, R0 
 MOV B, R2 
 MUL AB ; MULTIPLY XL X YL 
 PUSH ACC ; STACK RESULT LOW BYTE 
 PUSH B ; STACK RESULT HIGH BYTE 
 MOV A, R0 
 MOV B, R3 
 MUL AB ; MULTIPLY XL X YH 
 POP 00H ; RECALL XL*YL HIGH BYTE 
 ADD A, R0 
 MOV R0, A 
 CLR A 
 ADDC A, B 
 MOV DPL, A 
 MOV A, R2 
 MOV B, R1 
 MUL AB ; MULTIPLY XH X YL 
 ADD A, R0 
 MOV R0, A 
 MOV A, DPL 
 ADDC A, B 
 MOV DPL, A 
 CLR A 
 ADDC A, #0 
 PUSH ACC ; SAVE INTERMEDIATE CARRY 
 MOV A, R3 
 MOV B, R1 
 MUL AB ; MULTIPLY XH X YH 
 ADD A, DPL 
 MOV R2, A 
 POP ACC ; RETRIEVE CARRY 
 ADDC A, B 
 MOV R3, A 
 MOV R1, 00H 
 POP 00H ; RETRIEVE RESULT LOW BYTE 
;'''''''''''''''''''''''''' 
 MOV A, R0 
 MOV R2, A 
 MOV A, R1 
 MOV R3, A 
 LCALL BINTOASC 
 LCALL HIENTHIKQ 
;'''''''''''''''''''''''''''' 
RET 
; ============================================================== 
; ============================================================== 
; CHI SU DUNG BCD 3 DIGIT 
; CT CON 16BIT + 16BIT 
; [R3 R2 R1 R0] = [ R1 R0 ] + [ R3 R2] 
; ============================================================== 
; ============================================================== 
CONG_16: 
 MOV A, R0 ; LOAD X LOW BYTE INTO ACC 
 ADD A, R2 ; ADD Y LOW BYTE 
 MOV R0, A ; PUT RESULT IN Z LOW BYTE 
 MOV A, R1 ; LOAD X HIGH BYTE INTO ACC 
 ADDC A, R3 ; ADD Y HIGH BYTE WITH CARRY 
 MOV R1, A ; SAVE RESULT IN Z HIGH BYTE 
 Thí nghiệm Vi Xử Lý | 34 
34 Báo cáo Thí nghiệm Vi Xử Lý Nhóm 2 
 MOV C, OV 
 MOV R3, #0 
 MOV R2, #0 
;'''''''''''''''''''''''''' 
 MOV A, R0 
 MOV R2, A 
 MOV A, R1 
 MOV R3, A 
 LCALL BINTOASC 
 LCALL HIENTHIKQ 
;'''''''''''''''''''''''''''' 
RET 
; ============================================================== 
; ============================================================== 
; CHI SU DUNG BCD 3 DIGIT KQ = R1 R0 
; CT CON 16BIT - 16BIT 
; [R3 R2 R1 R0] = [ R1 R0 ] - [ R3 R2] 
; ============================================================== 
; ============================================================== 
TRU_16: 
 MOV A, R0 ; LOAD X LOW BYTE INTO ACC 
 CLR C ; CLEAR CARRY FLAG 
 SUBB A, R2 ; SUBRACT Y LOW BYTE 
 MOV R0, A ; PUT RESULT IN Z LOW BYTE 
 MOV A, R1 ; LOAD X HIGH INTO ACCUMULATOR 
 SUBB A, R3 ; SUBTRACT Y HIGH WITH BORROW 
 MOV R1, A ; SAVE RESULT IN Z HIGH BYTE 
 MOV C, OV 
 MOV R2,#0 
 MOV R3,#0 
;'''''''''''''''''''''''''' 
 MOV A, R0 
 MOV R2, A 
 MOV A, R1 
 MOV R3, A 
 LCALL BINTOASC 
 LCALL HIENTHIKQ 
;'''''''''''''''''''''''''''' 
RET 
; ============================================================== 
; ============================================================== 
; CHUYEN BCD 3 KI SO SANG BINARY 
; ============================================================== 
; ============================================================== 
BCD_2_BI: 
 CLR C 
 MOV A,22H 
 SUBB A,#30H 
 MOV 22H, A 
 CLR C 
 MOV A,21H 
 SUBB A,#30H 
 MOV 21H, A 
 CLR C 
 Thí nghiệm Vi Xử Lý | 35 
35 Báo cáo Thí nghiệm Vi Xử Lý Nhóm 2 
 MOV A,20H 
 SUBB A,#30H 
 MOV 20H, A 
 CLR C 
 MOV A, 50H 
 CJNE A, #02H, GG2 
 MOV 20H, 22H 
 MOV 22H, #0 
 MOV 21H, #0 
GG2: 
 CLR C 
 CJNE A, #03H, GG4 
 MOV 20H, 21H 
 MOV 21H, 22H 
 MOV 22H, #0 
GG4: 
 CLR C 
 MOV A, 22H 
 MOV B, #100 
 MUL AB 
 MOV R7,A 
 MOV R6, B 
 MOV A,21H 
 MOV B, #10 
 MUL AB 
 ADD A, 20H 
 PUSH ACC 
 MOV A,B 
 ADDC A, #0 
 ADD A,R6 
 MOV B,A 
 POP ACC 
 ADD A,R7 
 MOV 23H, A ; BYTE THAP 
 MOV A, B 
 ADDC A, #0 
 MOV 24H, A ; BYTE CAO 
 MOV 50H, #0 
RET 
; ============================================================== 
; ============================================================== 
BI2BCD: 
 MOV B, #10 
 DIV AB 
 MOV 71H, B ; LUU HANG DON VI 
 MOV B, #10 
 DIV AB 
 MOV 72H, B ; LUU HANG CHUC 
 MOV 73H, A ; LUU HANG TRAM 
 RET 
; ============================================================== 
; ============================================================== 
HIENTHIKQ: 
 MOV 55H, #9 
 MOV 50H, #0 
 MOV A, #0C9H 
 CALL WRITE_COMMAND 
 CLR C 
 Thí nghiệm Vi Xử Lý | 36 
36 Báo cáo Thí nghiệm Vi Xử Lý Nhóm 2 
 MOV A, 30H 
 SUBB A,#30H 
 MOV 30H, A 
 CLR C 
 MOV A, 31H 
 SUBB A,#30H 
 MOV 31H, A 
 CLR C 
 MOV A, 32H 
 SUBB A,#30H 
 MOV 32H, A 
 CLR C 
 MOV A, 33H 
 SUBB A,#30H 
 MOV 33H, A 
 CLR C 
 MOV A, 34H 
 SUBB A,#30H 
 MOV 34H, A 
 MOV A, 30H 
 MOV DPTR, #TABLELCD 
 MOVC A, @A+DPTR 
 CALL WRITE_TEXT 
 MOV A, 31H 
 MOV DPTR, #TABLELCD 
 MOVC A, @A+DPTR 
 CALL WRITE_TEXT 
 MOV A, 32H 
 MOV DPTR, #TABLELCD 
 MOVC A, @A+DPTR 
 CALL WRITE_TEXT 
 MOV A, 33H 
 MOV DPTR, #TABLELCD 
 MOVC A, @A+DPTR 
 CALL WRITE_TEXT 
 MOV A, 34H 
 MOV DPTR, #TABLELCD 
 MOVC A, @A+DPTR 
 CALL WRITE_TEXT 
 RET 
; ============================================================== 
; ============================================================== 
BINTOASC: 
 MOV R0,#30h ; R0 = POUT 
 MOV DPTR,#TAB ; R=TAB(P) 
COM1: 
 CLR A ; P <- 0 
 MOVC A, @A+DPTR ; R <- TAB(P) 
 Thí nghiệm Vi Xử Lý | 37 
37 Báo cáo Thí nghiệm Vi Xử Lý Nhóm 2 
 MOV R7, A 
 INC DPTR 
 CLR A 
 MOVC A, @A+DPTR 
 MOV R6, A 
 MOV R4, #'0' ; C <- '0' 
SOMA: ; N <- N-R 
 CLR C 
 MOV A, R2 
 SUBB A, R6 
 MOV R2, A 
 MOV A, R3 
 SUBB A, R7 
 MOV R3, A 
 JC SAIDA ; If < 0 goto SAIDA 
 INC R4 ; If >0 then C <- C +1 
 SJMP SOMA ; goto SOMA 
SAIDA: 
 MOV A, R4 
 MOV @R0, A ;TABOUT (POUT) <- C 
 MOV A, R2 
 ADD A, R6 ; N=N+R 
 MOV R2, A 
 MOV A, R3 
 ADDC A, R7 
 MOV R3, A 
 INC R0 ; PSAIDA=PSAIDA +1 
 CLR A 
 MOVC A, @A+DPTR 
 CJNE A, #1, INCREMENTA ; TAB(P) = 1 ? 
 RET ; If yes, END 
INCREMENTA: ; If No, P <- P+1 
 INC DPTR 
 LJMP COM1 ; goto COM1 
; ============================================================== 
; ============================================================== 
SO_SANH: 
 CLR C 
 MOV 60H,A 
 SUBB A, #2BH 
 JZ CONG 
 CLR C 
 MOV A,60H 
 SUBB A, #2DH 
 JZ TRU 
 CLR C 
 MOV A,60H 
 SUBB A, #2FH 
 Thí nghiệm Vi Xử Lý | 38 
38 Báo cáo Thí nghiệm Vi Xử Lý Nhóm 2 
 JZ CHIA 
 CLR C 
 MOV A,60H 
 SUBB A, #2AH 
 JZ NHAN 
 CLR C 
 MOV A,60H 
 SUBB A, #0DH 
 JZ THUCHIEN 
 CLR C 
 MOV A,60H 
 CJNE A,#30H,X1 
X1: 
 JC ERROR 
 CJNE A,#3AH,X2 
X2: 
 JNC ERROR 
 MOV A,60H 
 RET 
CONG: 
 MOV 55H, #5 
 MOV 40H,#10 
 CALL BCD_2_BI 
 MOV R0, 23H 
 MOV R1, 24H 
 LJMP NNEXT 
TRU: 
 MOV 55H, #5 
 MOV 40H,#11 
 CALL BCD_2_BI 
 MOV R0, 23H 
 MOV R1, 24H 
 LJMP NNEXT 
NHAN: 
 MOV 55H, #5 
 MOV 40H,#12 
 CALL BCD_2_BI 
 MOV R0, 23H 
 MOV R1, 24H 
 LJMP NNEXT 
CHIA: 
 MOV 55H, #5 
 MOV 40H,#13 
 CALL BCD_2_BI 
 MOV R0, 23H 
 MOV R1, 24H 
 LJMP NNEXT 
ERROR: 
 MOV R0,#0 
 MOV R1,#0 
 MOV R2,#0 
 MOV R3,#0 
 MOV A, #0C9H 
 CALL WRITE_COMMAND 
 MOV R4, #5 
 Thí nghiệm Vi Xử Lý | 39 
39 Báo cáo Thí nghiệm Vi Xử Lý Nhóm 2 
 MOV A, #0 
LOOPXC: PUSH ACC 
 MOV DPTR, #TABLE 
 MOVC A, @A+DPTR 
 CALL WRITE_TEXT 
; MOV A, #07H 
; CALL WRITE_COMMAND 
 POP ACC 
 INC A 
 DJNZ R4, LOOPXC 
 MOV 55H, #9 
 RET 
THUCHIEN: 
 CLR C 
 MOV A, 55H 
 SUBB A, # 5 
 JZ TIEPTUC 
 MOV A, # 01H 
 LCALL WRITE_COMMAND 
 MOV R0,#0 
 MOV R1,#0 
 MOV R2,#0 
 MOV R3,#0 
 MOV 20H, #0 
 MOV 21H, #0 
 MOV 22H, #0 
 MOV 23H, #0 
 MOV 24H, #0 
 MOV 30H,#0 
 MOV 31H, #0 
 MOV 32H, #0 
 MOV 33H, #0 
 MOV 34H, #0 
 MOV 50H,#0 
 LJMP NNEXT 
TIEPTUC: 
 CALL BCD_2_BI 
 MOV R2, 23H 
 MOV R3, 24H 
 MOV A,40H 
 CJNE A, #0AH, ZZ1 
 CALL CONG_16 
 RET 
ZZ1: 
 CJNE A, #0BH, ZZ2 
 CALL TRU_16 
 RET 
ZZ2: 
 CJNE A, #0CH, ZZ3 
 CALL NHAN_16 
 RET 
ZZ3: 
 CJNE A, #0DH,ERROR 
 Thí nghiệm Vi Xử Lý | 40 
40 Báo cáo Thí nghiệm Vi Xử Lý Nhóm 2 
 CALL CHIA_16 
 RET 
TABLELCD: 
 DB '0123456789' 
TABLE: 
 DB 'ERROR' 
TAB: 
 DW 10000 
 DW 1000 
 DW 100 
 DW 10 
 DW 1 
 END 

File đính kèm:

  • pdfbao_cao_thi_nghiem_vi_xu_ly_nguyen_phuoc_loc.pdf