You are on page 1of 36

TH NGHIEM VI X LY EME MC8

BAI 1: TH NGHIEM VI NUT NHAN VA LED N 1. Th nghiem 1: Viet chng trnh thc hien oc lien tuc trang thai nut nhan c noi en P1.0 va hien th ra Led c noi tai chan P1.1 ( bit th 1 cua port 1)
ORG 2000H MAIN: MOV C,P1.0 MOV P1.1,C SJMP MAIN END a. Khi nhan co 2 en sang cung luc: khi mnh nhan P1.0 ( en sang) th d lieu t P1.0 c chuyen qua P1.1 thong qua c C, thi gian chuyen qua nhanh ( thi gian thc hien lenh la vai micro giay) => ta nhn se thay 2 en cung sang/tat cung luc. b. Cac bit cua 4 port c s dung trong th nghiem tren: V EME-MC8 thiet ke hoat ong che o 3 bus, nen port 0: bus d lieu, port 2: bus a ch, P3.0, P3.1, P3.6, P3.7 dung lam bus ieu khien. Cac chan con lai cua cac port eu co the dung trong th nghiem nay.

2. Th nghiem 2: Viet chng trnh tao xung vuong 1Hz c noi en chan P1.0 vi tan so dao ong dung trong he thong la 11.059MHz a. Duty cycle: 50% - Hz
ORG 2000H LAP: CPL P1.0 ACALL DL SJMP LAP DL: MOV R5,#10 L2: MOV R6,#100 L1: MOV R7,#250 DJNZ R7,$ DJNZ R6,L1 DJNZ R5,L2 RET END Dung vong lap e tao tre 0.5s, vi gia tr nap cho R5, R6, R7 nh tren tnh theo cong thc gan ung la t=2*m*n*p Vi gia tr nap: R5 = 10, R6 = 200, R7 = 250 e giam sai so.

b. Duty cycle: 30% - tan so 0.5Hz


ORG 2000H LAP: MOV R1,#3 MOV R2,#7 CLR P1.0 LAP1: ACALL DL DJNZ R1,LAP1 SETB P1.0 LAP2: ACALL DL DJNZ R2,LAP2 SJMP LAP DL: L2: L1: MOV MOV MOV DJNZ DJNZ DJNZ RET END R5,#4 R6,#200 R7,#250 R7,$ R6,L1 R5,L2

3. Th nghiem 3: a. Viet chng trnh tao xung vuong 1Hz dung timer 0
ORG 2000H MAIN: CPL P1.0 ACALL DL500 SJMP MAIN DL500: MOV TMOD,#01H MOV R7,#10 LOOP: MOV TH0,#HIGH(-50000) 0.5s MOV SETB JNB CLR CLR DJNZ RET END TL0,#LOW(-50000) TR0 TF0,$ ; i c TF0 tran va xoa c tran TF0 TR0 R7,LOOP

; gia tr nap la 50000*10 = 500000us =

b. Dung ngat Timer 0:

ORG LJMP ORG LJMP MAIN: MOV SETB MOV MOV SJMP ISRT0: DJNZ CPL MOV SJMP NAP: CLR MOV MOV SETB KT: RETI END

2000H MAIN 200BH ISRT0 TMOD,#01H TF0 IE,#82H R7,#11 $ R7,NAP P1.0 R7,#10 KT TR0 TH0,#HIGH(-50000) TL0,#LOW(-50000) TR0

4. Th nghiem 4: Viet chng trnh lam cho led noi en chan P1.0 chp tat vi tan so co the tang hoac giam bang cach nhan nut noi en chan P1.1 hoac P1.2. Chu k chp tat trung bnh la 1s
ORG 2000H MAIN: CPL MOV MOV JB DEC R7 MOV R7,A SJMP LAP ; moi lan giam la 1*25000us = 0.025s KT_GIAM: JB P1.2,LAP INC A MOV R7,A LAP: ACALL DL500 DJNZ R7,LAP SJMP MAIN DL500: MOV TMOD,#01H P1.0 A,#10 R7,A P1.1,KT_GIAM A ;Khi nhan P1.1 th f tang => Chu ky giam => giam

MOV TH0,#HIGH(-25000) ; gia tr la 50000*R7 (R7TB = 10) = 500000us = 0.5s MOV SETB JNB CLR CLR RET END TL0,#LOW(-25000) TR0 TF0,$ ; i c TF0 tran va xoa c tran TF0 TR0

BAI TAP: 1. Viet chng trnh thc hien cong logic: XOR 2 ngo vao
ORG 2000H MAIN: CLR MOV MOV MOV MOV MOV XRL MOV MOV SJMP END A C,P1.0 ACC.0,C R0,A C,P1.1 ACC.0,C A,R0 C,ACC.0 P1.5,C MAIN

2. Viet chng trnh thc hien mach en chay: STTTTTTSSTTTTTT-SSSTTTTT-SSSSTTTT.-SSSSSSSS-TTTTTTT. Thi gian thc hien chng trnh la 4.5s (vi S: en sang, T: en tat)
ORG 2000H MAIN: CLR A MOV DPTR,#TABLE MOV R7,#8 LAP: MOVC A,@A+DPTR ACALL DL500 INC A DJNZ R7,LAP SJMP MAIN DL500: MOV TMOD,#01H MOV R6,#10 LOOP: MOV TH0,#HIGH(-50000) ; gia tr nap la 50000*10 = 500000us = 0.5s MOV TL0,#LOW(-50000) SETB TR0 JNB TF0,$ ; i c TF0 tran va xoa c tran

CLR CLR DJNZ RET TABLE: DB END

TF0 TR0 R6,LOOP

7FH,3FH,1FH,0FH,07H,03H,01H,00H,0FFH

3. Viet chng trnh thc hien phep logic: P1.5 = (P1.0 XOR P1.1) AND P1.2)
ORG 2000H MAIN: CLR MOV MOV MOV MOV MOV XRL MOV MOV MOV ANL MOV MOV SJMP END A C,P1.0 ACC.0,C R0,A C,P1.1 ACC.0,C A,R0 R0,A C,P1.2 ACC.0,C A,R0 C,ACC.0 P1.5,C MAIN

; R0 = P1.0 XOR P1.1

BAI 2: TH NGHIEM HIEN TH DUNG LED 7 OAN 1. Th nghiem 1:Viet chng trnh thc hien bo em t 0->9 va hien th tren led 7 oan, moi lan cach nhau 2s
ORG 2000H MAIN: MOV R7,#10 MOV R5,#0 LOOP: MOV DPTR,#TABLE MOV A,R5 MOVC A,@A+DPTR ACALL DL2S MOV DPTR,#0000H MOVX @DPTR,A INC R5 DJNZ R7,LOOP SJMP MAIN DL2S: MOV R6,#40 MOV TMOD,#01H

LAP: MOV MOV SETB JNB CLR CLR DJNZ RET TABLE: DB END TH0,#HIGH(-50000) TL0,#LOW(-50000) TR0 TF0,$ TF0 TR0 R6,LAP

70H,71H,72H,73H,74H,75H,76H,77H,78H,79H

2. Th nghiem 2: a. Viet chng trnh hien th gia tr 1234 len led 7 oan
ORG 2000H MAIN: MOV R7,#4 MOV R5,#0 LOOP: MOV DPTR,#TABLE MOV A,R5 MOVC A,@A+DPTR ACALL DL2MS MOV DPTR,#0000H MOVX @DPTR,A INC R5 DJNZ R7,LOOP SJMP MAIN DL2MS: MOV TMOD,#01H MOV TH0,#HIGH(-2000) MOV TL0,#LOW(-2000) SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 RET TABLE: DB 71H,0B2H,0D3H,0E4H ;tng ng vi gia tr 1234 hien th len Led 1 2 3 4 END

b. Thay oi chng trnh e gia tr 1234 co the hien th thong qua ma BCD nen cha trong cap thanh ghi R7 & R6,Biet R7 la MSB
ORG 2000H

MAIN: MOV R7,#12H MOV R6,#34H MOV A,R7 ANL A,#0F0H SWAP A ADD A,#70H MOV R1,A ; R1 cha ga tr 71H tng ng vi gia tr 1 c xuat ra led 1 MOV ANL ADD MOV ra led 2 MOV A,R6 ANL A,#0F0H SWAP A ADD A,#0D0H MOV R3,A ; R3 cha gia tr 0D3H tng ng vi gia tr 1 c xuat ra led 3 MOV ANL ADD MOV ra led 4 LAP: MOV DPTR,#0 MOV A,R1 MOVX @DPTR,A ACALL DL2MS MOV A,R2 MOVX @DPTR,A ACALL DL2MS MOV A,R3 MOVX @DPTR,A ACALL DL2MS MOV A,R4 MOVX @DPTR,A ACALL DL2MS SJMP LAP DL2MS: MOV TMOD,#01H MOV TH0,#HIGH(-2000) MOV TL0,#LOW(-2000) SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 RET A,R6 A,#0FH A,#0E0H R4,A ; R4 cha gia tr 0E4H trng ng vi gia tr 1 c xuat A,R7 A,#0FH A,#0B0H R2,A ; R2 cha gia tr 0B2H tng ng vi gia tr 1 c xuat

END

3. Th nghiem 3: Viet chng trnh hien th gia tr nh phan trong thanh ghi R7 len led 7 oan
ORG 2000H MAIN: MOV MOV MOV DIV MOV MOV DIV MOV MOV LAP: MOV DPTR,#0 MOV A,R2 ADD A,#0B0H MOVX @DPTR,A ACALL DL2MS MOV A,R3 ADD A,#0D0H MOVX @DPTR,A ACALL DL2MS MOV A,R4 ADD A,#0E0H MOVX @DPTR,A ACALL DL2MS SJMP LAP DL2MS: MOV TMOD,#01H MOV TH0,#HIGH(-2000) MOV TL0,#LOW(-2000) SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 RET END R7,#254 B,#10 A,R7 AB R4,B B,#10 AB R3,B R2,A ; nap tuy y gia tr R7 e kiem tra

; R4 cha gia tr hang n v

; R3 cha gia tr hang chuc ; R2 cha gia tr hang tram

BAI TAP: 1. em so t 0-99 (gia s <100) xuat ra led 7 oan. Moi lan nhn P1.0 th tng ln 1.
ORG 2000H MAIN: MOV DPTR,#0 MOV R7,#0 MOV R6,#0

JNB P1.0,NHAY ; nhay khi nhan P1.0 SJMP MAIN NHAY: INC R7 CJNE R7,0AH,SKIP ; nhay en SKIP khi R7 # 0AH MOV R7,#0 INC R6 SKIP: MOV A,R7 ADD A,#0E0H MOVX @DPTR,A ACALL DL2MS MOV A,R6 ADD A,#0D0H MOVX @DPTR,A JB P1.0,SKIP ; nhay en SKIP khi khong nhan P1.0 SJMP NHAY DL2MS: MOV TMOD,#01H MOV TH0,#HIGH(-2000) MOV TL0,#LOW(-2000) SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 RET END

2. Viet chng trnh em t 0-60 roi lap lai, moi lan em cach nhau 1s
ORG 2000H MOV R6,#0 MOV R7,#0 LOOP1: MOV R5,#100 ; gan R5 = 100*(5ms+5ms) = 1s e led xuat ra co s lu anh. LOOP: MOV DPTR,#0 MOV A,R7 ADD A,#0E0H MOVX @DPTR,A ACALL DL5MS MOV A,R6 ADD A,#0D0H MOVX @DPTR,A ACALL DL5MS DJNZ R5,LOOP

INC CJNE MOV INC CJNE MOV SJMP DL5MS: MOV MOV MOV SETB JNB CLR CLR RET END

R7 R7,#0AH,LOOP1 R7,#0 R6 R6,#6,LOOP1 R6,#0 LOOP1 TMOD,#01H TH0,#HIGH(-5000) TL0,#LOW(-5000) TR0 TF0,$ TF0 TR0

BAI 3: TH NGHIM HIN TH BNG LCD 1. Th nghim 1: Hin th chui Hello world len LCD
ORG 2000H MAIN: MOV DPTR,#8000H ACALL CLEAR ACALL INIT_LCD ACALL HIEN_CHU ACALL DELAY1 SJMP MAIN ;=============================================Chng trnh con LCD INIT_LCD: MOV A,#38H ACALL WRITECOM MOV A,#0EH ACALL WRITECOM MOV A,#06H ACALL WRITECOM RET CLEAR: MOV A,#01H ACALL WRITECOM RET WRITECOM: SETB P3.4 CLR P3.5 MOVX @DPTR,A

CLR P3.4 ACALL DELAY_50MS RET WRITETEXT: SETB P3.4 SETB P3.5 MOVX @DPTR,A CLR P3.4 ACALL DELAY2 RET HIEN_CHU: MOV A,#'H' ACALL WRITETEXT MOV A,#'E' ACALL WRITETEXT MOV A,#'L' ACALL WRITETEXT MOV A,#'L' ACALL WRITETEXT MOV A,#''O ACALL WRITETEXT MOV A,#'W' ACALL WRITETEXT MOV A,#'O' ACALL WRITETEXT MOV A,#'R' ACALL WRITETEXT MOV A,#'L' ACALL WRITETEXT MOV A,#'D' ACALL WRITETEXT RET ; ===============================================Chng trnh DELAY DELAY_50MS: MOV R3,#100 LOOP1: MOV R7,#250 DJNZ R7,$ DJNZ R3,LOOP1 RET DELAY1: ; delay 300ms MOV R6,#3 LOP1: MOV R5,#200 LOP: MOV R4,#250 DJNZ R4,$ DJNZ R5,LOP DJNZ R6,LOP1

RET DELAY2: MOV LOOP2: MOV DJNZ DJNZ RET END

R3,#1 R7,#50 R7,$ R3,LOOP2

BAI TAP: Vit chng trnh hin th chui: DHBK TPHCM chy tren man hnh, khi ht man hnh th chy ngc li, lp li qua trnh tren
ORG 2000H MAIN: MOV DPTR,#8000H MOV R1,#6 ACALL CLEAR ACALL INIT_LCD ACALL HIEN_CHU ACALL DELAY LAP1: MOV A,#1CH ACALL WRITECOM ACALL DELAY DJNZ R1,LAP1 MOV R1,#6 LAP: MOV A,#18H ; dch trai ACALL WRITECOM ACALL DELAY DJNZ R1,LAP MOV R1,#6 SJMP LAP1 ;=============================================Chng trnh con LCD INIT_LCD: MOV A,#38H ACALL WRITECOM MOV A,#0EH ACALL WRITECOM MOV A,#06H ACALL WRITECOM RET CLEAR: MOV A,#01H ACALL WRITECOM ; dch phai

RET WRITECOM: SETB P3.4 CLR P3.5 MOVX @DPTR,A CLR P3.4 ACALL DELAY_50MS RET WRITETEXT: SETB P3.4 SETB P3.5 MOVX @DPTR,A CLR P3.4 ACALL DELAY2 RET HIEN_CHU: MOV A,#'D' ACALL WRITETEXT MOV A,#'H' ACALL WRITETEXT MOV A,#'B' ACALL WRITETEXT MOV A,#'K' ACALL WRITETEXT MOV A,#' ' ACALL WRITETEXT MOV A,#'T' ACALL WRITETEXT MOV A,#'P' ACALL WRITETEXT MOV A,#'H' ACALL WRITETEXT MOV A,#'C' ACALL WRITETEXT MOV A,#'M' ACALL WRITETEXT RET ; ===============================================Chng trnh DELAY DELAY_50MS: MOV R3,#100 LOOP1: MOV R7,#250 DJNZ R7,$ DJNZ R3,LOOP1 RET DELAY: MOV R6,#3 LOP1: MOV R5,#200

LOP: MOV DJNZ DJNZ DJNZ RET DELAY2: MOV LOOP2: MOV DJNZ DJNZ RET END R4,#250 R4,$ R5,LOP R6,LOP1

R3,#1 R7,#50 R7,$ R3,LOOP2

BAI 4: TH NGHIEM GIAO TIEP QUA CONG NOI TIEP 1. Th nghim 1: Phat chui Hello World ra port ni tip
ORG 2000H MAIN: MOV MOV MOV SETB MOV LAP: CLR A MOVC A,@A+DPTR INC DPTR ACALL OUT_CHAR JNZ LAP SJMP $ OUT_CHAR: JNB TI, $ CLR TI MOV SBUF, A RET TABLE: DB 'Hello, world',0 END SCON,#52H TMOD,#20H TH1,#-3 TR1 DPTR,#TABLE

;phat k t ra port ni tip

;phat ti khi gp k t 0 th dng

2. Th nghim 2: Nhn k t t port ni tip hin th ra LCD (tc port chn la 9600pbs)
EN RS ORG 2000H BIT P3.4 BIT P3.5

MAIN: MOV DPTR, #8000H ACALL LCD_INIT ACALL UART_INIT ACALL CLEAR LOOP: MOV R4,#16 LAP1: ACALL IN_CHAR ACALL WRITE_TEXT DJNZ R4,LAP1 MOV R4,#16 MOV A,#0C0H ;e con tro xuong hang ACALL WRITE_COM LAP2: ACALL IN_CHAR ACALL WRITE_TEXT DJNZ R4,LAP2 ACALL CLEAR SJMP LOOP ;============================================ Chng trnh con port ni tip UART_INIT: MOV SCON,#52H MOV TMOD,#20H MOV TH1,#-3 SETB TR1 RET OUT_CHAR: JNB TI, $ ;khi phat het TI=1 CLR TI MOV SBUF, A RET IN_CHAR: JNB RI, $ CLR RI MOV A, SBUF RET ;============================================== Chng trnh con LCD LCD_INIT: MOV A,#38H ACALL WRITE_COM MOV A,#0CH ACALL WRITE_COM MOV A,#06H ACALL WRITE_COM RET CLEAR: MOV A,#01H ACALL WRITE_COM

RET WAIT_LCD: MOV R7, #100 DEL1: MOV R6, #250 DJNZ R6, $ DJNZ R7, DEL1 RET WRITE_TEXT: ACALL WAIT_LCD SETB RS MOVX @DPTR, A SETB EN CLR EN RET WRITE_COM: ACALL WAIT_LCD CLR RS MOVX @DPTR, A SETB EN CLR EN RET END

3. Th nghim 3: Nhn k t t port ni tip hin th ra LCD ng thi phat ra li port ni tip (tc port chn la 9600pbs)
EN RS MAIN: ORG 2000H BIT P3.4 BIT P3.5

; chng trnh chnh MOV DPTR, #8000H ACALL LCD_INIT ACALL UART_INIT ACALL CLEAR LOOP: MOV R4,#16 ; gan R4 = 16 nhp ch tren hang 1 ri xung hang 2 LAP1: ACALL IN_CHAR ACALL WRITE_TEXT ACALL OUT_CHAR DJNZ R4,LAP1 MOV R4,#16 MOV A,#0C0H ; e con tro xuong hang ACALL WRITE_COM LAP2:

ACALL IN_CHAR ACALL WRITE_TEXT ACALL OUT_CHAR DJNZ R4,LAP2 ACALL CLEAR SJMP LOOP ;========================================= Chng trnh con port ni tip UART_INIT: ; khi ng port ni tip MOV SCON,#52H MOV TMOD,#20H MOV TH1,#-3 SETB TR1 RET OUT_CHAR: ; phat k t ra port ni tip JNB TI, $ ;khi phat het TI = 1 CLR TI MOV SBUF, A RET IN_CHAR: ; thu k t t port ni tip JNB RI, $ CLR RI MOV A, SBUF RET ;============================================== Chng trnh con LCD LCD_INIT: ; khi ng LCD MOV A,#38H ACALL WRITE_COM MOV A,#0EH ACALL WRITE_COM MOV A,#06H ACALL WRITE_COM RET CLEAR: MOV A,#01H ACALL WRITE_COM RET WAIT_LCD: ; chng trnh to delay ch cho LCD MOV R7, #100 DEL1: MOV R6, #250 DJNZ R6, $ DJNZ R7, DEL1 RET WRITE_TEXT: ; ghi k t ra LCD ACALL WAIT_LCD SETB RS MOVX @DPTR, A

SETB EN CLR EN RET WRITE_COM: ; ghi lnh ra LCD ACALL WAIT_LCD CLR RS MOVX @DPTR, A SETB EN CLR EN RET END

BAI TAP: Vit chng trnh nhp k t t ban phm ve lam cong viec sau ay: a. Kim tra xem k t nhn c la A-Z hoc a-z th hin th len LCD b. Kim tra xem k t nhn nhan c s t 0-9 th hin th qua led 7 on c. Nu nhn phm Enter th xung hang ma ASCII 13H d. Nu nhn phm ESC th xoa man hnh LCD ma ASCII 27H
EN RS MAIN: ORG 2000H BIT P3.4 BIT P3.5

MOV DPTR, #8000H ACALL LCD_INIT ACALL UART_INIT ACALL CLEAR LOOP: MOV R4,#16 LAP1: ACALL IN_CHAR ACALL NHANKYTU ACALL OUT_CHAR DJNZ R4,LAP1 MOV R4,#16 MOV A,#0C0H ACALL WRITE_COM LAP2: ACALL IN_CHAR ACALL NHANKYTU ACALL OUT_CHAR DJNZ R4,LAP2 ACALL CLEAR

;e con tro xuong hang

SJMP LOOP ;=======================================Chng trnh con Port ni tip UART_INIT: MOV SCON,#52H MOV TMOD,#20H MOV TH1,#-3 SETB TR1 RET OUT_CHAR: JNB TI, $ ;khi phat het TI = 1 CLR TI MOV SBUF, A RET IN_CHAR: JNB RI, $ CLR RI MOV A, SBUF RET ;========================================== Chng trnh con LCD LCD_INIT: MOV A,#38H ACALL WRITE_COM MOV A,#0EH ACALL WRITE_COM MOV A,#06H ACALL WRITE_COM RET CLEAR: MOV A,#01H ACALL WRITE_COM RET WAIT_LCD: MOV R7, #100 DEL1: MOV R6, #250 DJNZ R6, $ DJNZ R7, DEL1 RET WRITE_TEXT: ACALL WAIT_LCD SETB RS MOVX @DPTR, A SETB EN CLR EN RET WRITE_COM: ACALL WAIT_LCD CLR RS MOVX @DPTR, A

SETB EN CLR EN RET ;=========Chng trnh con kim tra k t nhn c t Port ni tip ve x l theo bai NHANKYTU: PUSH ACC ;....................................................................................kim tra ESC VA ENTER CJNE A,#13,SKIP1 MOV A,#0C0H ;e con tro xuong hang ACALL WRITE_COM SJMP THOAT SKIP1: CJNE A,#27,TIEP ACALL CLEAR SJMP THOAT ;............................................................................................................ki m tra 0-9 TIEP: CJNE A,#30H,$+3 JNC KTRA3 SJMP THOAT KTRA3: CJNE A,#3AH,$+3 JC XUAT_LED ;............................................................................................................ kim tra A-Z CJNE A,#41H,$+3 JNC KTRA1 SJMP THOAT KTRA1: CJNE A,#5BH,$+3 JC XUAT_LCD ; C=1 th A < 5AH ;............................................................................................................ki m tra a-z CJNE A,#61H,$+3 JNC KTRA2 SJMP THOAT KTRA2: CJNE A,#7BH,$+3 JC XUAT_LCD XUAT_LED: PUSH DPH PUSH DPL MOV DPTR,#0 ANL A,#0FH ADD A,#0E0H MOVX @DPTR,A ACALL DELAY_2MS POP DPL POP DPH SJMP THOAT

XUAT_LCD: ACALL WRITE_TEXT THOAT: POP ACC RET ;========================Chng trnh con to tr to s lu nh tren led 7 on DELAY_2MS: MOV R1,#4 LAP9: MOV R2,#250 DJNZ R2,$ DJNZ R1,LAP9 RET END

BAI 5: TH NGHIM IEU KHIEN ADC 1. Th nghiem 1: Viet chng trnh thc hien oc ien ap cua bien tr tren kenh 0 va hien th ra led 7 oan.
ORG 2000H MAIN: MOV DPTR,#4000H MOV A,#0 MOVX @DPTR,A ACALL DELAY_100US MOVX A,@DPTR MOV DPTR,#0000H MOV B,#10 DIV AB MOV R7,B MOV B,#10 DIV AB ORL A,#0B0H MOVX @DPTR,A ACALL DELAY_1MS MOV A,B ORL A,#0D0H MOVX @DPTR,A ACALL DELAY_1MS MOV A,R7 ORL A,#0E0H MOVX @DPTR,A ACALL DELAY_1MS SJMP MAIN DELAY_100US: MOV R6,#200 ;a ch khoi ADC

DJNZ R6,$ RET DELAY_1MS: MOV R6,#5 LOOP: MOV R5,#100 DJNZ R5,$ DJNZ R6,LOOP RET END

2. Th nghiem 2: Viet chng trnh oc ien ap cua kenh 0 va hien th len LCD
ORG 2000H MAIN: MOV DPTR,#4000H ;a ch khoi ADC MOV A,#0 MOVX @DPTR,A ACALL DELAY_100US MOVX A,@DPTR MOV B,#10 DIV AB MOV R2,B MOV B,#10 DIV AB MOV DPTR,#8000H ACALL CLEAR ACALL INIT_LCD ACALL HIEN_CHU ACALL DELAY1 SJMP MAIN ;=============================================Chng trnh con LCD INIT_LCD: MOV A,#38H ACALL WRITECOM MOV A,#0EH ACALL WRITECOM MOV A,#06H ACALL WRITECOM RET CLEAR: MOV A,#01H ACALL WRITECOM RET WRITECOM: SETB P3.4

CLR P3.5 MOVX @DPTR,A CLR P3.4 ACALL DELAY_50MS RET WRITETEXT: SETB P3.4 SETB P3.5 MOVX @DPTR,A CLR P3.4 ACALL DELAY2 RET HIEN_CHU: PUSH ACC MOV A,R2 ACALL WRITETEXT MOV A,B ACALL WRITETEXT POP ACC ACALL WRITETEXT RET ; ===============================================Chng trnh DELAY DELAY_50MS: MOV R3,#100 LOOP1: MOV R7,#250 DJNZ R7,$ DJNZ R3,LOOP1 RET DELAY1: ; delay 300ms MOV R6,#3 LOP1: MOV R5,#200 LOP: MOV R4,#250 DJNZ R4,$ DJNZ R5,LOP DJNZ R6,LOP1 RET DELAY2: MOV R3,#1 LOOP2: MOV R7,#50 DJNZ R7,$ DJNZ R3,LOOP2 RET DELAY_100US: MOV R6,#200 DJNZ R6,$

RET END

BAI 6: TH NGHIM VI LED MA TRAN 1. Th nghiem 1: Viet chng trnh hien th k t A len LED ma tran.
ORG 2000H LOOP: MOV A,#0 MOV R7,#8 LAP: MOV R4,A MOV DPTR,#COT ;quet cot cua LED ma tran MOVC A,@A+DPTR ACALL XUAT_COT MOV A,R4 MOV DPTR,#HANG MOVC A,@A+DPTR ACALL XUAT_HANG ;quet hang cua LED ma tran ACALL DL2MS MOV A,R4 INC A DJNZ R7,LAP SJMP LOOP XUAT_COT: MOV DPTR,#0C00H ;a ch cot cua LED ma tran MOVX @DPTR,A RET XUAT_HANG: MOV DPTR,#0A00H ;a ch hang cua LED ma tran MOVX @DPTR,A RET DL2MS: MOV R6,#4 LAP1: MOV R5,#250 DJNZ R5,$ DJNZ R6,LAP1 RET COT: DB 01H, 02H, 04H, 08H, 10H, 20H, 40H, 80H HANG:DB 03H, 0EDH, 0EEH, 0EEH, 0EDH, 03H, 0FFH, 0FFH END

2. Th nghiem 2: Viet chng trnh chay ch A B t phai sang trai hien th len LED ma tran

ORG 2000H TT: MOV R4,#10 MOV R0,#0 MOV DPTR,#CHAR MOV R5,#24 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 SJMP TT CHAR: DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,03H, 0EDH, 0EEH, DB 0EEH, 0EDH, 03H, 0FFH, 0FFH,00H, 76H, 76H, 76H, 89H, 0FFH, 0FFH, DB 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

BAI 7: TH NGHIM VI ONG C DC 1. Th nghiem 1: Viet chng trnh cho phep ong c chay theo chieu thuan trong vong 2s, ngh 2s, chay theo chieu ngc 2s, ngh 2s va lap lai.
ORG 2000H MAIN: MOV DPTR,#0E000H LOOP: MOV A,#02H MOVX @DPTR,A ACALL DL2S MOV A,#00H MOVX @DPTR,A ACALL DL2S MOV A,#01H MOVX @DPTR,A ACALL DL2S MOV A,#00H MOVX @DPTR,A ACALL DL2S SJMP LOOP DL2S: MOV R5,#40 LAP1: MOV R6,#100 LAP: MOV R7,#250 DJNZ R7,$ DJNZ R6,LAP DJNZ R5,LAP1 RET ;a ch cua ong c ;ong c quay ngc (theo quy c)

;ong c dng

;ong c quay thuan (theo quy c)

END

2. Th nghiem 2: Viet chng trnh ieu khien ong c vi phng phap PWM, trong o thi gian bat cua xung la 50% chu ky.
ORG LJMP ORG LJMP ORG LJMP MAIN: MOV DPTR,#0E000H ;a ch cua ong c MOV A,#01H MOVX @DPTR,A MOV TMOD,#11H SETB TF0 MOV IE,#8AH ;cho phep ngat timer 0 va timer 1 SJMP $ ISRT0: ;ngat timer 0 tao chu ky 1000us SETB ACC.0 CLR ACC.1 MOVX @DPTR,A CLR TR0 MOV TH0,#HIGH(-1000) MOV TL0,#LOW(-1000) SETB TR0 CLR TR1 MOV TH1,#HIGH(-500) MOV TL1,#LOW(-500) SETB TR1 RETI ISRT1: ;ngat timer 1 tao o rong xung 500us CLR ACC.0 CLR ACC.1 MOVX @DPTR,A RETI END 2000H MAIN 200BH ISRT0 201BH ISRT1

;a ch ngat timer 0 ;a ch ngat timer 1

3. Th nghiem 3: Viet chng trnh ieu khien ong c vi phng phap PWM, trong o thi gian bat cua xung lan lt la 20%, 50%, 80% chu ky. Moi o rong xung cach nhau 5s. Qui trnh c lap lai lien tuc.
ORG LJMP ORG LJMP 2000H MAIN 200BH ISRT0

ORG 201BH LJMP ISRT1 MAIN: MOV R7,#250 MOV R6,#20 MOV R3,#0 MOV DPTR,#0E000H MOV A,#01H MOVX @DPTR,A MOV TMOD,#11H SETB TF0 MOV IE,#8AH SJMP $ ISRT0: CJNE R3,#0,NHAY DJNZ R7,LOP DJNZ R6,LOP1 INC R3 MOV R6,#20 MOV R7,#250 SJMP LOP2 LOP1: MOV R7,#250 LOP: SETB ACC.0 CLR ACC.1 MOVX @DPTR,A CLR TR0 MOV TH0,#HIGH(-1000) MOV TL0,#LOW(-1000) SETB TR0 CLR TR1 MOV TH1,#HIGH(-200) MOV TL1,#LOW(-200) SETB TR1 SJMP THOAT NHAY: CJNE R3,#1,NHAY1 DJNZ R7,LOP2 DJNZ R6,LOP3 INC R3 MOV R6,#20 MOV R7,#250 SJMP LOP2 LOP3: MOV R7,#250 LOP2: SETB ACC.0 CLR ACC.1

MOVX @DPTR,A CLR TR0 MOV TH0,#HIGH(-1000) MOV TL0,#LOW(-1000) SETB TR0 CLR TR1 MOV TH1,#HIGH(-500) MOV TL1,#LOW(-500) SETB TR1 SJMP THOAT NHAY1: DJNZ R7,LOP4 DJNZ R6,LOP5 MOV R3,#0 MOV R6,#20 MOV R7,#250 SJMP THOAT LOP5: MOV R7,#250 LOP4: SETB ACC.0 CLR ACC.1 MOVX @DPTR,A CLR TR0 MOV TH0,#HIGH(-1000) MOV TL0,#LOW(-1000) SETB TR0 CLR TR1 MOV TH1,#HIGH(-800) MOV TL1,#LOW(-800) SETB TR1 SJMP THOAT THOAT: RETI ISRT1: CLR ACC.0 CLR ACC.1 MOVX @DPTR,A RETI END

4. Th nghiem 4: Viet chg trnh thc hien viec tang hoac giam dan toc o ong c nh hai nut nhan P1.4 va P1.5. Khi khong nhan nut, toc o ong c khong oi. Khi nut P1.4 c nhan va gi th toc o ong c tang dan. Khi nut P1.5 c nhan va gi th toc o ong c giam dan.
ORG 2000H

MAIN: MOV DPTR,#0E000H MOV R3,#5 MOV R4,#5 KT: JNB P1.4,NHAY1 MOV A,#01H MOVX @DPTR,A ACALL DLC MOV A,#00H MOVX @DPTR,A ACALL DLT JNB P1.5,NHAY2 MOV A,#01H MOVX @DPTR,A ACALL DLC MOV A,#00H MOVX @DPTR,A ACALL DLT SJMP KT NHAY1: INC R3 DEC R4 MOV A,#01H MOVX @DPTR,A ACALL DLC MOV A,#00H MOVX @DPTR,A ACALL DLT SJMP KT NHAY2: INC R4 DEC R3 SKIP2: MOV A,#01H MOVX @DPTR,A ACALL DLC MOV A,#00H MOVX @DPTR,A ACALL DLT SJMP KT DLC: MOV R6,03H LAP1: MOV R5,#100 DJNZ R5,$ DJNZ R6,LAP1 RET ;nhan P1.4 th en NHAY1

;nhan P1.5 th en NHAY2

DLT: MOV R6,04H LAP: MOV R5,#100 DJNZ R5,$ DJNZ R6,LAP RET END

TH NGHIEM VI X LY PHAN PIC 16F690


BAI 1: TH NGHIM VI LED N 1. Th nghiem 1: Viet chng trnh chp tat LED c noi en chan RC2 cua PIC 16F690 vi tan so chp tat la 1Hz.
#include <16F690.h> #use delay(clock = 4000000) #use fast_io(c) void main() { set_tris_C(0x00); output_C(0x00); while(1) { output_high(pin_C0); delay_ms(500); output_low(pin_C0); delay_ms(500); } }

2. Th nghiem 2: Viet chng trnh thc hien mach LED chay c noi en 4 LED port C cua PIC 16F690 nh sau, biet thi gian gia cac trang thai S (sang) va T (tat) la 0.5s: STTT TSTT TTST TTTS STTT - .....
#include <16F690.h>

#use delay(clock = 4000000) #use fast_io(c) int const a[4] = {0x08, 0x04, 0x02, 0x01); void main() { int i; set_tris_C(0x00); output_C(0x00); while(1) { while(i<4) { port_C = a[i]; delay_ms(500); i++; } i = 0; } }

3. Th nghiem 3: Viet chng trnh thc hien mach em len bat au t 0 en 15, ket qua xuat ra 4 LED n c noi en port C cua PIC16F690. Gia tr mach em tang len 1 n v cach nhau 1s.
#include <16F690.h> #use delay(clock = 4000000) #use fast_io(c) int const a[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; void main() { int i; set_tris_C(0x00); output_C(0x00); while(1) { while(i<16) { output_C(a[i]); delay_ms(1000); i++; } i = 0; } }

4. Th nghiem 4: Viet chng trnh thc hien mach em len bat au t 0 en 15, ket qua xuat ra 4 LED n c noi en port C cua PIC16F690. Mach ch em khi SW1 c nhan.
#include <16F690.h> #use delay(clock = 4000000) #use fast_io(C) int const a[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; void main() { int i; set_tris_C(0x00); output_C(0x00); while(1) { while(i<16) { if (input(pin_a0)==0) { output_C(a[i]); delay_ms(1000); i++; } } i = 0; } }

5. Th nghiem 5: Viet chng trnh thc hien mach em len bat au t 0 en 15, ket qua xuat ra 4 LED n c noi en port C cua PIC16F690. Trong qua trnh em neu SW1 c nhan th se thc hien em ngc tai gia tr o ve 0. Sau o lai thc hien em len t 0.
#include <16F690.h> #use delay(clock = 4000000) #use fast_io(c) #use fast_io(a) int const a[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; void main() { int i; set_tris_C(0x00); output_C(0x00); while(1) { while(i<16)

{ output_C(a[i]); delay_ms(1000); if (input(pin_a0)==0) { lap: if (i==0) { while(i<16) { output_C(a[i]); delay_ms(1000); i++; } } else //i>0 { while(i!=0) { output_c(a[i]); delay_ms(500); i--; } } } else //tng i tip khi khng nhn i++; } i = 0; } goto lap; }

BAI 2: TH NGHIM VI LED 7 OAN 1. Th nghiem 1: Viet chng trnh thc hien mach em len t 0 en F (so Hex), ket qua xuat ra LED 7 oan, gia tr bo em tang len 1 n v cach nhau moi 0.5s
#include<16F690.h> #use delay(clock = 4000000) #use fast_io(c) #use fast_io(a) int const a[16] = {0x06,0x04,0x07,0x07,0x05,0x03,0x03,0x06,0x07,0x07,0x07, 0x01,0x02, 0x05,0x03,0x03} ; int const c[16] = {0x0f,0x01,0x06,0x03,0x09,0x0b,0x0f,0x01,0x0f,0x0b,0x0d, 0x0f,0x0e, 0x07,0x0e,0x0c} ; void main() { int i = 0;

set_tris_c(0); set_tris_a(0); while(1) { while(i<16) { output_c(c[i]); output_a(a[i]); delay_ms(500); i++; } i = 0; } }

BAI 3: TH NGHIM IEU KHIEN ADC 1. Th nghiem 1: Viet chng trnh oc gia tr ien ap cua bien tr RP1 va xuat mc ien ap tng ng vi gia tr ien ap oc c ra LED (dung ADC vi o phan giai 10 bits) c cho bi bang sau:
Mc (ngo ra bo ADC) 0 63 64 127 128 191 ... 832 895 896 959 960 1023 Gia tr hien th tren LED 0 1 2 ... D E F

#include <16f690.h> #include <math.h> #use delay(clock = 4000000) #use fast_io(c) #use fast_io(a) void main() { int16 adc; set_tris_c(0); set_tris_a(1); setup_adc(adc_clock_internal); setup_adc_ports(sAN0); set_adc_channel(0);

delay_us(10); while(1) { adc = read_adc(); adc = adc/16; output_c(adc); } }

2. Th nghiem 2: Viet chng trnh oc gia tr ngo ra ADC vi o phan giai 10 bits dung e ieu khien thi gian chp tat LED n c noi en chan RC0 cua PIC 16F690.
#include <16f690.h> #include <math.h> #use delay(clock = 4000000) #use fast_io(c) #use fast_io(a) void main() { int adc; set_tris_c(0); set_tris_a(1); setup_adc(adc_clock_internal); setup_adc_ports(sAN0); set_adc_channel(0); delay_us(10); while(1) { adc = read_adc(); adc = adc*4; output_c(0xff); delay_ms(adc+100); output_c(0x00); delay_ms(adc+100); } }

You might also like