You are on page 1of 36

Th nghim Vi x l Hc k h 09-10

Nhm 07

I HC QUC GIA THNH PH H CH MINH TRNG I HC BCH KHOA ----------KHOA IN IN T B MN IN T

BO CO TH NGHIM VI X L
Lp : DD07TD Nhm : 01 T : 07

H v tn SV: Nguyn Thnh Nam V Xun Tm Dng Lm Phng Nguyn Thanh Nam Phng L B Tn

MSSV: 40701531 40702162 40701876

Th nghim Vi x l Hc k h 09-10

Nhm 07

Th nghim Vi x l Hc k h 09-10

Nhm 07

Phn 1:
Bi 1:

Lm vic vi Vi iu khin 89C51

Th Nghim vi nt nhn v LED n


Th nghim 1: Vit chng trnh thc hin vic c lin tc trng trng thi ca nt nhn P1.0 v hin th ra LED c ni ti chn P1.1
Code:

ORG 2000H ;Doc trang thai cua chan P1.0 va xuat ra P1.1 LOOP: MOV C, P1.0 MOV P1.1, C SJMP LOOP END Th nghim 2: Vit chng trnh to xung vung 1Hz ra chn P1.0,bit tn s dao ng c dng trong KIT l 11.059MHz
Code:

ORG 2000H ;Tao xung vuong 1Hz tren P1.0 dung vong lap LAP: CPL P1.0 ACALL DL500 SJMP LAP DL500: PUSH 05 PUSH 06 PUSH 07 MOV R5, #10 L2: MOV R6, #100 L1: MOV R7, #250 DJNZ R7, $ DJNZ R6, L1 DJNZ R5, L2 POP 07

Th nghim Vi x l Hc k h 09-10
POP 06 POP 05 RET END Th nghim 2: (M rng) Thay i tn s xung vung thnh 0.5Hz, vi chu k nhim v l 30%
Code:

Nhm 07

ORG 2000H ;Tao xung tan so 0.5Hz tren P1.0 voi chu ki nhiem vu 30% LAP: SETB P1.0 ; LCALL DL150 ; CLR P1.0 ; LCALL DL350 ; SJMP LAP ; DL150: PUSH 07 PUSH 06 PUSH 05 MOV R5, #2 ; L1_2: MOV R6, #150 ; L1_1: MOV R7, #250 ; DJNZ R7, $ ; DJNZ R6, L1_1; DJNZ R5, L1_2; POP 05 POP 06 POP 07 RET DL350: PUSH 07 PUSH 06 PUSH 05 MOV R5, #7 ; L2_2: MOV R6, #100 ; L2_1: MOV R7, #250 ; DJNZ R7, $ ; DJNZ R6, L2_1; DJNZ R5, L2_2; POP 05 POP 06 POP 07 RET END Th nghim 3: Vit chng trnh to xung vung 1 Hz dng Timer0
Code:

ORG 2000H ;Tao xung vuong 1Hz tren P1.0 su dung Timer0 LAP: CPL P1.0 CALL DL500 SJPM LAP DL500: MOV TMOD, #01H ;Goi Timer0, Mode1 PUSH 05 MOV R5, #10 LOOP: MOV TH0, #HIGH(-50000) MOV TL0, #LOW(-50000) SETB TR0

Th nghim Vi x l Hc k h 09-10
JNB TF0, $ CLR TF0 CLR TR0 DJNZ R5, LOOP POP R5 RET END Th nghim 3: (M rng) Tn dng ngt Timer to xung
Code:

Nhm 07

ORG 2000H ;Tao xung 1Hz tren P1.0 dung ngat Timer0 LJMP MAIN ORG 200BH INC R5 CJNE R5, #10, ISRT0 MOV R5, #1 CPL P1.0 ISRT0: CLR TR0 CLR TF0 MOV TH0, #HIGH(-50000) MOV TL0, #LOW(-50000) SETB TR0 RETI ORG 2030H MAIN: MOV TMOD ,#01H SETB TF0 MOV IE, #82H SJMP $ END Th nghim 4: Vit chng trnh lm cho LED ni n chn P1.0 chp tt vi tn s c th thay i c bng cch nhn P1.1 (tng) hoc P1.2 (gim)
Code:

ORG 2000H ;Tao xung tren P1.0 va thay doi theo P1.1 (tang), P1.2 (giam) MOV TMOD, #01H MOV A,#10 LOOP: JNB P1.1,TANG JNB P1.2,GIAM ;Tan so 1Hz lam trung binh,neu ko nhan nut nao thi van giu nguyen tan so cu CALL XUNG SJMP LOOP TANG: ;Xet xem A co la 255 hay chua CJNE A, #255, TANG1 SJMP LOOP ; A khac 255 TANG1: INC A CALL XUNG SJMP LOOP GIAM:

Th nghim Vi x l Hc k h 09-10
CJNE A, #1, GIAM1 SJMP LOOP GIAM1: DEC A CALL XUNG SJMP LOOP XUNG:

Nhm 07

MOV R5, A DL50: MOV TH0, #HIGH(-50000) MOV TL0, #LOW(-50000) SETB TR0 JNB TF0, $ CLR TR0 CLR TF0 DJNZ R5, DL50 CPL P1.0 RET END

Bi 2:

Th nghim hin th dng LED 7 on


Th nghim 1: Vit chng trnh thc hin b m t 0 n 9 v hin th ra LED 7 on,mi ln cch nhau 2s
Code:

ORG 2000H ;bo dem tu 0 toi 9, hien thi tren LED 7 doan, moi lan cach nhau 2s CLR A MAIN: MOV R1, #10 MOV A,#0E0H LOOP: MOV DPTR, #0000H MOVX @DPTR, A INC A CALL DL2000 DJNZ R1,LOOP SJMP MAIN DL2000: PUSH 05 ;Delay 2s PUSH 06 PUSH 07 MOV R5, #20 DL2: MOV R6, #200 DL1: MOV R7, #250 DJNZ R7, $ DJNZ R6, DL1 DJNZ R5, DL2 POP 07 POP 06

Th nghim Vi x l Hc k h 09-10
POP 05 RET END

Nhm 07

Th nghim 2: Vit chng trnh hin th gi tr 1234 ra LED 7 on.


Code:

ORG 2000H ;Bai 2, Thi nghiem 2 ;Hien thi 1234 len 4 LED 7 doan AGAIN: CLR A MOV R1, #4 LOOP: MOV DPTR, #TABLE MOVC A,@A+DPTR DJNZ R1,NEXT SJMP AGAIN ;lien tuc de tao hinh anh tren mat NEXT: CALL XUAT CALL DL3 INC DPTR SJMP LOOP XUAT: PUSH DPH PUSH DPL MOV DPTR, #0000H MOVX @DPTR, A POP DPL POP DPH RET DL3: PUSH 05 PUSH 06 MOV R5, #12 L1: MOV R6, #250 DJNZ R6, $ DJNZ R5, L1 POP 06 POP 05 RET TABLE: DB 71H,0B2H,0D3H,0E4H END

Th nghim 2: M rng
Code:

ORG 2000H ;Bai 2 Thi nghiem 2 mo rong ;Hien thi gia tri la ma BCD nen trong R7_R6 ra 4 LED ;R7=1_2, R6=3_4 MOV R7, #00010010B MOV R6, #00110100B CALL BP_2_B LOOP: ;Copy R5=>A,roi OR voi 70H MOV A,R5 ORL A, #70H CALL XUAT ;Copy R4=>A,OR voi 0B0H

Th nghim Vi x l Hc k h 09-10
MOV A, R4 ORL A, #0B0H CALL XUAT ;Copy R3=>A,OR voi 0D0H MOV A, R3 ORL A, #0D0H CALL XUAT ;Copy R2=>A,OR voi 0E0H MOV A,R2 ORL A, #0E0H CALL XUAT SJMP LOOP BP_2_B: ;R7=>R5_R4,R6=>R3_R2 MOV A,R7 PUSH ACC ANL A, #0FH MOV R4, A POP ACC ANL A, #0F0H SWAP A MOV R5,A MOV A,R6 PUSH ACC ANL A, #0FH MOV R2, A POP ACC ANL A, #0F0H SWAP A MOV R3,A RET XUAT: ;Xuat + Delay 3ms MOV DPTR, #0000H MOVX @DPTR, A ;Delay 3ms PUSH 00 PUSH 01 MOV R0, #6 L1: MOV R1, #250 DJNZ R1, $ DJNZ R0, L1 POP 01 POP 00 RET END

Nhm 07

Th nghim 3: Vit chng trnh th hin gi tr nh phn trong thanh ghi R7 ra LED 7 on.
Code:

ORG 2000H ;Bai 2 Thi nghiem 3 ;Hien thi gia tri nhi phan trong R7 len LED 7 doan MOV R7, #0A0H ;Example R7= 160 MOV A, R7

Th nghim Vi x l Hc k h 09-10
CALL BIN_2_BCD LOOP: ;R6=>A,OR voi 0B0H roi xuat ra LED_2 MOV A, R6 ORL A, #0B0H CALL XUAT ;R5=>A,OR voi 0D0H xuat ra LED_3 MOV A, R5 ORL A, #0D0H CALL XUAT ;R4=>A,OR voi 0E0H xuat ra LED_4 MOV A, R4 ORL A, #0E0H CALL XUAT SJMP LOOP BIN_2_BCD: ;R7=R6_R5_R4 MOV B, #10 DIV AB MOV R4,B MOV B, #10 DIV AB MOV R6, A MOV R5, B RET XUAT: ;Xuat + Delay 3ms MOV DPTR, #0000H MOVX @DPTR, A ;Delay 3ms PUSH 02 PUSH 03 MOV R2, #6 L1: MOV R3, #250 DJNZ R3, $ DJNZ R2, L1 POP 03 POP 02 RET END

Nhm 07

Bi 3:

Th nghim hin th dng LCD


Th nghim 1:
Code:

ORG 2000H ;**************************************************** ;Hien thi chuoi "Hello" tren LCD ;**************************************************** EN BIT P3.4 RS BIT P3.5 CALL MAIN: MOV DPTR, #TABLE INIT_LCD

Th nghim Vi x l Hc k h 09-10
LOOP: CLR MOVC CJNE SJMP CALL INC SJMP A A, @A+DPTR A, #0, NEXT $ WRITE_LCD DPTR LOOP

Nhm 07

NEXT:

;-----------------------------------------------------INIT_LCD: SETB EN CLR RS MOV A, #38H CALL SEND_COM MOV A, #06H CALL SEND_COM MOV A, #0EH CALL SEND_COM RET SEND_COM: PUSH PUSH SETB CLR MOV MOVX CLR LCALL POP POP RET PUSH PUSH SETB SETB MOV MOVX CLR LCALL POP POP RET WAIT_LCD: DL1: MOV MOV DJNZ DJNZ RET DB END DPH DPL EN RS DPTR, #8000H @DPTR, A EN WAIT_LCD DPH DPL

WRITE_LCD: DPH DPL EN RS DPTR, #8000H @DPTR, A EN WAIT_LCD DPH DPL

R6, R7, R7, R6,

#200 #250 $ DL1

TABLE:

'Hello',0

Th nghim thm: vit chng trnh hin th ln LCD ch DHBK TPHCM dch tri v dch phi:

Th nghim Vi x l Hc k h 09-10

Nhm 07

Th nghim Vi x l Hc k h 09-10
ORG 2000H RS BIT P3.5 EN BIT P3.4 CALL LCD_INIT MOV DPTR, #TABLE MAIN: CLR A MOVC A,@A+DPTR CJNE A,#0,NEXT SJMP KT NEXT: CALL WRITE_LCD INC DPTR SJMP MAIN KT: KT1: MOV R1, #6 MOV A,#1CH CALL WRITE_COM CALL WAIT_LCD DJNZ R1,KT1 MOV R1,#6 KT2: MOV A,#18H CALL WRITE_COM CALL WAIT_LCD DJNZ R1,KT2 SJMP KT LCD_INIT: MOV A,#01H CALL WRITE_COM MOV A,#38H CALL WRITE_COM MOV A, #0EH CALL WRITE_COM MOV A,#06H

Nhm 07

Th nghim Vi x l Hc k h 09-10
CALL WRITE_COM RET WRITE_COM: PUSH DPH

Nhm 07

PUSH DPL MOV DPTR, #8000H CLR RS SETB EN MOVX @DPTR, A CLR EN CALL WAIT_LCD POP DPL POP DPH RET WAIT_LCD: MOV R6 ,#250 LOOP: MOV R7,# 250 DJNZ R7,$ DJNZ R6, LOOP RET WRITE_LCD: PUSH DPH PUSH DPL MOV DPTR ,#8000H SETB RS SETB EN MOVX @DPTR,A CLR EN LCALL WAIT_LCD POP DPL

Th nghim Vi x l Hc k h 09-10
POP DPH RET TABLE: DB 'DHBK TPHCM',0 END

Nhm 07

Bi 4:

Th nghim giao tip qua cng ni tip


Th nghim 1: Vit chng trnh pht chui k t Hello, world ln my tnh thng qua Hyper Terminal vi tc 19200pbs.
Code:

MAIN:

ORG 2000H MOV TMOD, #20H MOV SCON, #42H MOV TH1, #-3 SETB TR1 MOV DPTR, #TABLE CLR A MOVC A, @A+DPTR CJNE A, #0, SEND SJMP $ JNB TI,$ CLR TI MOV SBUF,A INC DPTR SJMP NEXT

NEXT:

SEND:

TABLE: DB 'HELLO, WORLD',0 END Th nghim 2: Vit chng trnh nhn cc k t t my tnh gi n EME-MC8 thng qua Hyper Terminal (bng cch g cc k t trn bn phm khi ang trong chng trnh Hyper Terminal) v hin th ln LCD.

Code:

ORG 2000H EN BIT P3.4 RS BIT P3.5 MAIN: MOV DPTR,#8000H CALL LCD_INTL CALL CLR_LCD CALL UART_INTL LOOP: CALL IN_CHAR CALL WRT_TXT SJMP LOOP UART_INTL: MOV SCON,#52H

Th nghim Vi x l Hc k h 09-10
MOV TMOD,#20H MOV TH1,#-3 SETB TR1 RET OUT_CHAR: JNB TI,$ CLR TI MOV SBUF,A RET IN_CHAR: JNB RI,$ CLR RI CALL CLR_LCD MOV A,SBUF RET LCD_INTL: MOV A,#38H CALL WRT_COM MOV A,#0EH CALL WRT_COM MOV A,#06H CALL WRT_COM MOV A,#0CH CALL WRT_COM RET WAIT_LCD: MOV R7,#50 DEL: MOV R6,#250 DJNZ R6,$ DJNZ R7,DEL RET WRT_TXT: CALL WAIT_LCD SETB RS MOVX @DPTR,A SETB EN CLR EN RET WRT_COM: CALL WAIT_LCD CLR RS MOVX @DPTR,A SETB EN CLR EN RET CLR_LCD: LCALL WAIT_LCD MOV A,#01H CALL WRT_COM RET END

Nhm 07

Th nghim 3: Vit chng trnh nhn mt k t t cng ni tip hin th ln LCD ng thi pht ra cng ni tip. Tc tu chn.
Code:

ORG 2000H

Th nghim Vi x l Hc k h 09-10
EN BIT P3.4 RS BIT P3.5 MAIN: MOV DPTR,#8000H CALL LCD_INTL CALL CLR_LCD CALL UART_INTL LOOP: CALL IN_CHAR CALL WRT_TXT CALL OUT_UART SJMP LOOP UART_INTL: MOV SCON,#52H MOV TMOD,#20H MOV TH1,#-3 SETB TR1 RET OUT_CHAR: JNB TI,$ CLR TI MOV SBUF,A RET IN_CHAR: JNB RI,$ CLR RI MOV A,SBUF RET LCD_INTL: MOV A,#38H CALL WRT_COM MOV A,#0EH CALL WRT_COM MOV A,#06H CALL WRT_COM MOV A,#0CH CALL WRT_COM RET WAIT_LCD: MOV R7,#50 DEL: MOV R6,#250 DJNZ R6,$ DJNZ R7,DEL RET WRT_TXT: CALL WAIT_LCD SETB RS MOVX @DPTR,A SETB EN CLR EN RET WRT_COM: CALL WAIT_LCD CLR RS MOVX @DPTR,A SETB EN CLR EN RET OUT_UART: PUSH ACC

Nhm 07

Th nghim Vi x l Hc k h 09-10
MOV SBUF, A JNB TI,$ CLR TI POP ACC RET CLR_LCD: LCALL WAIT_LCD MOV A,#01H CALL WRT_COM RET END

Nhm 07

BI TP THM : Vit chng trnh nhn k t t cng ni tip, ng thi pht ra cng ni tip, vi iu kin: - Nu k t nhn c l s th xut ra Led - Nu k t nhn c l ch A-Z, a-z th xut ra LCD - Nu k t nhn c l Enter th xung hng , l ESC th xa trong mn hnh LCD. M ASCII ca Enter l 13, ESC l 27 ORG 2000H EN BIT P3.4 RS BIT P3.5 MOV TMOD,#20H MOV TL1,#-3 MOV TH1,#-3 MOV SCON,#52H SETB TR1 MOV R1,#0 MOV DPTR,#8000H ACALL LCD_INIT LAP: ACALL RECEIVE CJNE A,#13,TT ; kim tra phm nhn Enter MOV A,#0C0H ACALL WRITE_CMD SJMP THOAT TT: CJNE A,#27,TT1 ; kim tra phm nhn ESC MOV A,#01H ACALL WRITE_CMD SJMP THOAT TT1: CJNE A,#30H,SO ; bt u kim tra phm nhn l s SO: JC THOAT CJNE A,#3AH,CHU ; kt thc kim tra phm nhn l s CHU: JC LED CJNE A,#41H,KHAC ; bt u kim tra phm nhn l ch hoa KHAC: JC THOAT CJNE A,#5BH,HOA ; kt thc kim tra phm nhn l ch hoa HOA: JC NHO CJNE A,#61H,KHAC1 ; bt u kim tra phm nhn l ch thng KHAC1: JC THOAT CJNE A,#7BH,THUONG ; kt thc kim tra phm nhn l ch thng THUONG: JC NHO SJMP THOAT NHO: MOV DPTR,#8000H INC R1 CJNE R1,#17,XUONG ; kim tra nu hin th ht hng u tin th xung hng trong mn hnh LCD

Th nghim Vi x l Hc k h 09-10
XUONG: JC XUATLCD PUSH ACC MOV A,#0C0H ACALL WRITE_CMD POP ACC MOV R1,#0 XUATLCD: ACALL WRITE_cHAR SJMP THOAT LED: MOV DPTR,#0000H ANL A,#0FH ORL A,#0E0H MOVX @DPTR,A THOAT: MOV DPTR,#8000H ACALL SEND SJMP LAP LCD_INIT: MOV A, #38H ACALL WRITE_CMD MOV A, #0EH ACALL WRITE_CMD MOV A, #06H ACALL WRITE_CMD MOV A, #01H ACALL WRITE_CMD RET WAIT_LCD: MOV R7,#100 LOOP: MOV R6, #250 DJNZ R6,$ DJNZ R7, LOOP RET WRITE_CHAR: ACALL WAIT_LCD SETB RS MOVX @DPTR,A SETB EN CLR EN RET WRITE_CMD: ACALL WAIT_LCD CLR RS MOVX @DPTR,A SETB EN CLR EN RET RECEIVE: JNB RI,RECEIVE MOV A, SBUF CLR RI RET SEND: JNB TI,SEND MOV SBUF,A CLR TI

Nhm 07

Th nghim Vi x l Hc k h 09-10
RET END

Nhm 07

Bi 5:

Th nghim iu khin ADC


Th nghim 1: Vit chng trnh thc hin c in p ca bin tr trn knh 0 v hin th ra led 7 on.
Code:

ORG 2000H MAIN: LOOP: MOV TMOD,#20H MOV DPTR,#4000H MOV A,#0 MOVX @DPTR,A CALL DELAY100US MOVX A,@DPTR CALL BINTOBCD MOV DPTR,#0000H MOV A,R2 ORL A,#0E0H MOVX @DPTR,A CALL DELAY3MS MOV A,R3 ORL A,#0D0H MOVX @DPTR,A CALL DELAY3MS MOV A,R4 ORL A,#0B0H MOVX @DPTR,A CALL DELAY3MS SJMP LOOP

DELAY100US: MOV TH1,#-100 MOV TL1,#-100 SETB TR1 JNB TF1,$ CLR TF1 CLR TR1 RET BINTOBCD: MOV DIV MOV MOV DIV MOV MOV RET B,#10 AB R2,B B,#10 AB R3,B R4,A

DELAY3MS: MOV R5,#10 LOOP1: MOV R6,#150 DJNZ R6,$ DJNZ R5,LOOP1 RET

Th nghim Vi x l Hc k h 09-10
END

Nhm 07

Th nghim 2: Vit chng trnh thc hin c in p ca bin tr trn knh 0 v hin th ra LCD.
Code:

MAIN: LOOP:

ORG 2000H CALL LCD_INIT MOV TMOD,#21H MOV DPTR,#4000H MOV A,#0 MOVX @DPTR,A CALL DELAY100US MOVX A,@DPTR CALL BINTOASCII CALL CLR_LCD MOV A,R4 CALL WRITE_TEXT MOV A,R3 CALL WRITE_TEXT MOV A,R2 CALL WRITE_TEXT CALL DELAY3MS CALL DELAY3MS SJMP LOOP

DELAY100US: MOV TH1,#-100 MOV TL1,#-100 SETB TR1 JNB TF1,$ CLR TF1 CLR TR1 RET BINTOASCII: MOV DIV MOV MOV DIV MOV MOV MOV ADD MOV MOV ADD MOV MOV ADD MOV RET B,#10 AB R2,B B,#10 AB R3,B R4,A A,#30H A,R2 R2,A A,#30H A,R3 R3,A A,#30H A,R4 R4,A

DELAY3MS: CLR TF0 MOV TH0,#HIGH(-10000)

Th nghim Vi x l Hc k h 09-10
MOV TL0,#LOW(-10000) SETB TR0 JNB TF0,$ CLR TR0 RET LCD_INIT: MOV DPTR,#8000H SETB P3.4 CLR P3.5 MOV A,#38H MOVX @DPTR,A CLR P3.4 CALL DELAY3MS SETB P3.4 CLR P3.5 MOV A,#0EH MOVX @DPTR,A CLR P3.4 CALL DELAY3MS SETB P3.4 CLR P3.5 MOV A,#06H MOVX @DPTR,A CLR P3.4 CALL DELAY3MS RET WRITE_TEXT: MOV DPTR,#8000H SETB P3.4 SETB P3.5 MOVX @DPTR,A CLR P3.4 CALL DELAY3MS RET CLR_LCD: MOV DPTR,#8000H SETB P3.4 CLR P3.5 MOV A,#01H MOVX @DPTR,A CLR P3.4 CALL DELAY3MS RET END

Nhm 07

BI TP THM : Vit chng trnh c in p thc ca knh 0 v hin th ln LCD ORG 2000H RS BIT P3.5 EN BIT P3.4 MOV DPTR,#8000H ACALL LCD_INIT LAP: MOV DPTR,#4000H MOV A,#0 MOVX @DPTR,A ACALL DELAY_100US

Th nghim Vi x l Hc k h 09-10
MOVX A,@DPTR MOV DPTR,#8000H ACALL CHIA MOV A, #80H ACALL WRITE_CMD SJMP LAP

Nhm 07

LCD_INIT:

MOV A, #38H ACALL WRITE_CMD MOV A, #0CH ACALL WRITE_CMD MOV A, #04H ACALL WRITE_CMD MOV A, #01H ACALL WRITE_CMD RET

WAIT_LCD: LOOP:

MOV R7,#100 MOV R6, #250 DJNZ R6,$ DJNZ R7, LOOP RET

WRITE_CHAR:

SETB RS MOVX @DPTR,A SETB EN CLR EN ACALL WAIT_LCD RET

WRITE_CMD:

CLR RS MOVX @DPTR,A SETB EN CLR EN ACALL WAIT_LCD RET

DELAY_100US:

MOV R6,#200 DJNZ R6,$ RET

CHIA:

PUSH ACC PUSH B MOV B,#51 DIV AB ORL A,#30H ACALL WRITE_CHAR MOV A,#0A5H ACALL WRITE_CHAR MOV A,B MOV B,#5 DIV AB

Th nghim Vi x l Hc k h 09-10
ORL A,#30H ACALL WRITE_CHAR POP B POP ACC

Nhm 07

RET END

Bi 6:

Th nghim vi LED ma trn


Th nghim 1: Vit chng trnh hin th ch A ra LED ma trn
Code:

ORG 2000H ;======================================== ;Xuat ky tu A tren LED ma tran ;======================================== MAIN: MOV A, #01H MOV R0, #0 LAP: ACALL QUET_COT ACALL QUET_HANG INC R0 ACALL DELAY CJNE R0, #5, LAP SJMP MAIN ;----------------------------------------QUET_COT: PUSH DPH PUSH DPL RR A MOV DPTR, # MOVX @DPTR, A POP DPH POP DPL RET QUET_HANG: PUSH PUSH PUSH MOV ACALL MOVX POP POP POP RET DU_LIEU_HANG: PUSH DPH ACC DPH DPL DPTR, # DU_LIEU_HANG @DPTR, A ACC DPH DPL

Th nghim Vi x l Hc k h 09-10
PUSH MOV MOV MOVC POP POP RET DELAY: MOV LAPC1: MOV DJNZ DJNZ RET DPL A, R0 DPTR, #CHAR_A A, @A+DPTR DPH DPL

Nhm 07

R7, R6, R6, R7,

#4 #250 $ LAPC1

CHAR_A: DB 03H, 0EDH, 0EEH, 0EEH, 0EDH, 03H END

Th nghim 2: Vit li chng trnh hin th ch A ra LED ma trn c s dng chng trnh con
Code:

ORG 2000H ;========================================== ;Xuat ky tu A tren LED ma tran (dung CTCon) ;========================================== MAIN: MOV R0, #8 MOV R1, #30H MOV DPTR, #CHAR_A MOV A, #0 LAP: MOVC A, @A+DPTR MOV @R1, A INC R1 INC A DJNZ R0, LAP ACALL XUAT ;----------------------------------------XUAT: PUSH ACC PUSH R0 PUSH R1 MOV A, #01H MOV R0, #0 MOV R1, #30H LAPC: ACALL QUET_COT ACALL QUET_HANG INC R0 INC R1 ACALL DELAY CJNE R0, #7, LAPC PUSH ACC PUSH R0 PUSH R1 SJMP XUAT RET

Th nghim Vi x l Hc k h 09-10
QUET_COT: PUSH PUSH RR MOV MOVX POP POP RET QUET_HANG: PUSH PUSH PUSH MOV MOV MOVX POP POP POP RET DELAY: MOV LAPC1: MOV DJNZ DJNZ RET R7, R6, R6, R7, #4 #250 $ LAPC1

Nhm 07

DPH DPL A DPTR, # @DPTR, A DPH DPL

ACC DPH DPL DPTR, # A, @R1 @DPTR, A ACC DPH DPL

CHAR_A: DB 03H, 0EDH, 0EEH, 0EEH, 0EDH, 03H END

Bi 7:

Th nghim vi ng c DC

Th nghim1: Vit chng trnh cho php ng c chy theo chiu thun trong vng 2s, ngh 2s, chy theo chiu ngc 2s, ngh 2s v lp li.
Code:

MAIN: NEXT:

ORG 2000H MOV TMOD, #01H MOV R1, #40 MOV DPTR, #0E000H CLR A CALL THUAN MOVX @DPTR, A CALL DELAY CALL NGHI MOVX @DPTR, A

Th nghim Vi x l Hc k h 09-10
CALL CALL MOVX CALL CALL MOVX CALL SJMP NGHICH: SETB ACC.0 CLR ACC.1 RET CLR ACC.0 CLR ACC.1 RET CLR ACC.0 SETB ACC.1 RET PUSH 01 MOV TH0, #HIGH(-50000) MOV TL0, #LOW(-50000) SETB TR0 JNB TF0, $ CLR TR0 CLR TF0 DJNZ R1,LAP POP 01 RET DELAY NGHICH @DPTR, A DELAY NGHI @DPTR, A DELAY NEXT

Nhm 07

NGHI:

THUAN:

DELAY: LAP:

Th nghim2: Vit chng trnh iu khin ng c vi phng php PWM, trong thi gian bt ca xung l 50% chu k
Code:

ORG 2000H LJMP MAIN ORG 200BH LJMP ISR_T0 ORG 201BH LJMP ISR_T1 MAIN: MOV TMOD,#11H MOV IE,#10001010B MOV DPTR,#0E000H SJMP $

ISR_T0: CLR TR0 MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0 RETI

Th nghim Vi x l Hc k h 09-10
ISR_T1: CLR TR1 MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0 MOV TH1,#HIGH(-25000) MOV TL1,#LOW(-25000) SETB TR1 CLR A SETB ACC.0 CLR ACC.1 MOVX @DPTR,A RETI END

Nhm 07

Th nghim3: Vit chng trnh iu khin ng c vi phng php PWM, trong thi gian bt ca xung ln lt l 20%, 50%, v 80% chu k. Mi rng xung cch nhau 5s. Quy trnh c lp li lien tc
Code:

nh 2 nt nhn P1.4 v P1.5. Khi khng nhn nt, tc ng c khng i. Khi nt P1.4 c nhn v gi th tc ng c tng dn.Khi nt P1.5 c nhn v gi li th tc ng c gim dn.
Th nghim4: Vit chng trnh thc hin vic tng hoc gim dn tc ng c
Code:

org 2000h ljmp main org 200bh ljmp isr_t0 org 201bh ljmp isr_t1 org 2030h ic573 equ 0E000H main: mov tmod, #11h mov r1, #0 ;r1 la bien trang thai ;r1=0=> 0% ,r1=1=> 40%, r1=2=> 60%, r1=3=>80%, r1=4=>100% mov ie,#8Ah clr a mov th0, #high(-1000) mov tl0, #low(-1000) setb tr0 sjmp $ isr_t0: ;nap lai gia tri clr tr0 clr tf0 mov th0, #high(-1000) mov tl0, #low(-1000) setb tr0

Th nghim Vi x l Hc k h 09-10
call cjne sjmp cjne sjmp cjne sjmp cjne sjmp sjmp check r1, #0,state1 20per r1, #1,state2 40per r1, #1,state3 60per r1, #1,state4 80per 100per

Nhm 07

state1: state2: state3: state4: 20per:

mov th1,#high(-200) mov tl1, #low(-200) sjmp kt mov th1,#high(-400) mov tl1, #low(-400) sjmp kt mov th1,#high(-800) mov tl1, #low(-800) sjmp kt mov th1,#high(-1000) mov tl1, #low(-1000) setb tr1 reti

40per:

80per:

100per: kt: check:

jnb p1.4,tang jnb p1.5,giam sjmp kt1 tang: call delay jb p1.4,tang1 het_tang: mov r1, #4 sjmp kt1 tang1: inc r1 cjne r1, #5,het_tang sjmp kt1 giam: call delay jb p1.5,giam1 het_giam: mov r1, #0 sjmp kt1 giam1: dec r1 cjne r1, #255,het_giam sjmp kt1 kt1: isr_t1: clr tr1 clr tf1 cpl acc.0 mov dptr, #ic573 movx @dptr,a reti ret

Th nghim Vi x l Hc k h 09-10
delay: PUSH 07 PUSH 06 PUSH 05 MOV R5, #20 ; L2_2: MOV R6, #250 ; L2_1: MOV R7, #250 ; DJNZ R7, $ ; DJNZ R6, L2_1; DJNZ R5, L2_2; POP 05 POP 06 POP 07 RET end

Nhm 07

Bi tp lm thm ti lp: 1.Vit chng trnh m s ln nhn P1.0 v xut ra LED hng chc ,hng n v (gi s s ln nhn <100) 2.Vit chng trnh thc hin ng h hn gi vi thi gian ch l 3 pht (t 259 n 000 ) Kt qu tng ln nhy c hin th ra LED 7 on vi Gi - Pht Giy tng ng LED3LED2- LED1

Phn 1:
Bi 7:

Lm vic vi PIC 16F690

Th nghim vi LED n

Th nghim1: Vit chng trnh chp tt LED c ni n chn RC2 ca PIC 16F690 vi tn s chp tt l 1Hz.
Code:

#include <16F690.h> #use delay(clock=4000000) #use fast_io(C) void main() {

Th nghim Vi x l Hc k h 09-10
set_tris_C(0x00); output_C(0x00); while(1) { output_high(PIN_C0); delay_ms(500); output_low(PIN_C0); delay_ms(500); } }

Nhm 07

Th nghim2: Vit chng trnh thc hin mch LED chy c ni n 4 LED port C ca PIC 16F690 nh sau, bit thi gian gia cc trng thi S (sng) v T (tt) l 0.5s: STTT->TSTT->TTST->TTTS->STTT->
Code:

#include <16F690.h> #use delay(clock=4000000) #use fast_io(C) void main() { int value=1; set_tris_C(0x00); output_C(0x00); while(1) { output_C(value); delay_ms(500); if(value!=0x08) value<<=1; else value=1; } }

Th nghim3: Vit chng trnh thc hin mch m ln bt u t 0 n 15, kt qu xut ra 4 LED n c ni n port C ca PIC 16F690 . Gi tr mch m tng ln 1 n v cch nhau 1s.
Code:

#include <16F690.h> #use delay(clock=4000000) #use fast_io(C) void main() { int value=0; set_tris_C(0x00); output_C(0x00); while(1) {

Th nghim Vi x l Hc k h 09-10
output_C(value); delay_ms(500); value++; if(value==16) value=0; } }

Nhm 07

Th nghim4: Vit chng trnh thc hin mch m ln bt u t 0 n 15, kt qu xut ra4 LED n c ni n port C ca PIC 16F690. Mch ch m khi SW1 c nhn.
Code:

#include <16F690.h> #use delay(clock=4000000) #use fast_io(C) #use fast_io(A) void main() { int value=0; set_tris_A(0x08); set_tris_C(0x00); output_C(0xFF); while(1) { while(input(pin_A3)); while(!input(pin_A3)) { value++; if(value==16) value=0; output_C(value); } } }

Bi 8:

Th nghim vi LED 7 on

Th nghim1: Vit chng trnh thc hin mch m ln t 0 n F (s Hex), kt qu xut ra LED 7 on, gi tr b m tng ln 1 n v cch nhau mi 0.5s.
Code:

#include<16f690.h>

Th nghim Vi x l Hc k h 09-10
#use #use #use void

Nhm 07

delay (clock= 4000000) fast_io(a) fast_io(c) main () { int state1[16]={0x06,0x04,0x07,0x07,0x05,0x03,0x03,0x06,0x07,0x07,0x07,0x01,0x02,0x05,0x03,0x03} ; int state2[16]={0x0F,0x01,0x06,0x03,0x09,0x0B,0x0F,0x01,0x0F,0x0B,0x0D,0x0F,0x0E,0x07,0x0E,0x0c} ; int i; set_tris_a(0x00); set_tris_c(0x00); while(1) { for(i=0;i<16;i++) { output_a(state1[i]); output_c(state2[i]); delay_ms(500); } } }

Th nghim2: Vit chng trnh m s ln nhn SW1, kt qu xut ra led n (gi s s ln nhn nh hn 10).
Code:

#include<16f690.h> #use delay (clock= 4000000) #use fast_io(a) #use fast_io(c) void main () { int value=0; set_tris_a(0xFF); set_tris_c(0x00); output_C(0x00); while(1) { while(!input(pin_A1)) { value++; if(value==16) value=0; output_C(value); delay_ms(1000); }

} }

Th nghim Vi x l Hc k h 09-10
m ln t 0 n F (s Hex) khi mch va reset, m xung t F n 0 (s Hex) ki SW1 c nhn.

Nhm 07

Th nghim3: Vit chng trnh thc hin mch m tho cc yu cu sau:

Kt qu xut ra led n , gi tr b m tng ln (gim xung ) 1 n v cch nhau mi 0.5s.


Code:

#include<16f690.h> #use delay (clock= 4000000) #use fast_io(a) #use fast_io(c) void main () { int value=0; int value2=16; set_tris_a(0xFF); set_tris_c(0x00); while(1) { Laplai: value++; if(value==16) value=0; output_C(value); delay_ms(1000); if(!input(pin_A1)) { while(1) { value2--; if(value2==0) value2=16; output_C(value2); delay_ms(1000); if(!input(pin_A1)) { value2=16; value=0; goto Laplai; } } } } }

Bi 9:

Th nghim vi ADC

Th nghim Vi x l Hc k h 09-10

Nhm 07

Th nghim1: Vit chng trnh c gi tr in p ca bin tr RP1 v xut mc in p tng ng vi gi tr in p c c ra LED 7 on ( dung ADC vi phn gii 10 bits) c cho bi bng sau: Mc (ng ra b ADC) 0-63 64-127 128-191 832-895 896-959 960-1023 Gi tr hin th trn LED 7 on 0 1 3 D E F

Code:

#include <16f690.h> #include <math.h> #include <stdio.h> #include <stdlib.h> #use delay (clock= 4000000) #use fast_io(a) #use fast_io(c) void main () { int i; int a; set_tris_c(0x00); set_tris_a(0xff); setup_adc_ports( ALL_ANALOG ); setup_adc(ADC_CLOCK_DIV_32); set_adc_channel( 0); delay_ms(10); while(1) { a= read_adc(); if (0<=a&&a<=63) {i=0; } else if(64<=a&&a<=127) { i=1; } else if(128<=a&&a<=191) {i=2; } else if(192<=a&&a<=255) {i=3;

Th nghim Vi x l Hc k h 09-10
} else if(256<=a&&a<=319) {i=4; } else if(320<=a&&a<=383) {i=5; } else if(384<=a&&a<=447) {i=6; } else if(448<=a&&a<=511) {i=7; } else if(512<=a&&a<=575) {i=8; } else if(576<=a&&a<=639) {i=9; } else if(640<=a&&a<=703) {i=10; } else if(704<=a&&a<=767) {i=11; } else if(768<=a&&a<=831) {i=12; } else if(832<=a&&a<=895) {i=13; } else if(896<=a&&a<=959) {i=14; } else if(960<=a&&a<=1023) {i=15; } output_c(i);

Nhm 07

Th nghim Vi x l Hc k h 09-10

Nhm 07

Th nghim2: Vit chng trnh c gi tr ng ra ADC vi phn gii 10 bits dung iu khin thi gian chp tt LED n c ni n chn RC0 ca PIC 16F690.
Code:

#include <16f690.h> #include <math.h> #include <stdio.h> #include <stdlib.h> #use delay (clock= 4000000) #use fast_io(a) #use fast_io(c) void main () { int i; int a; set_tris_c(0x00); set_tris_a(0xff); setup_adc_ports( ALL_ANALOG ); setup_adc(ADC_CLOCK_DIV_32); set_adc_channel( 0); delay_ms(10); while(1) { a= read_adc(); i=a/16; output_c(i); }

You might also like