You are on page 1of 36

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 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:

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

Th nghim Vi x l Hc k h 09-10
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:

Nhm 07

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 JNB TF0, $ CLR TF0 CLR TR0 DJNZ R5, LOOP POP R5 RET END Th nghim 3: (M rng) Tn dng ngt Timer0 to xung
Code:

ORG 2000H ;Tao xung 1Hz tren P1.0 dung ngat Timer0 LJMP MAIN ORG 200BH INC R5 CJNE R5, #10, ISRT0

Th nghim Vi x l Hc k h 09-10
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

Nhm 07

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: CJNE A, #1, GIAM1 SJMP LOOP GIAM1: DEC A CALL XUNG SJMP LOOP XUNG:

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

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

Nhm 07

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 POP 05 RET END

Th nghim 2:Vit
Code:

chng trnh hin th gi tr 1234 ra LED 7 on.

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

Th nghim Vi x l Hc k h 09-10
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

Nhm 07

Th nghim 2: (M rng) Hin th gi tr l m BCD nn trong R7_R6 ra 4 LED


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

Th nghim Vi x l Hc k h 09-10
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 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: MOV DIV MOV MOV DIV ;R7=R6_R5_R4 B, #10 AB R4,B B, #10 AB

Th nghim Vi x l Hc k h 09-10
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

Th nghim Vi x l Hc k h 09-10

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: LOOP: MOV CLR MOVC CJNE SJMP CALL INC SJMP INIT_LCD DPTR, #TABLE A A, @A+DPTR A, #0, NEXT $ WRITE_LCD DPTR LOOP

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 DPH DPL EN RS DPTR, #8000H @DPTR, A EN WAIT_LCD DPH DPL

WRITE_LCD: DPH

Th nghim Vi x l Hc k h 09-10
PUSH SETB SETB MOV MOVX CLR LCALL POP POP RET WAIT_LCD: DL1: MOV MOV DJNZ DJNZ RET DB END R6, R7, R7, R6, #200 #250 $ DL1 DPL EN RS DPTR, #8000H @DPTR, A EN WAIT_LCD DPH DPL

Nhm 07

TABLE:

'Hello',0

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

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: MOV R1, #6 KT1: 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 CALL WRITE_COM RET WRITE_COM:

Th nghim Vi x l Hc k h 09-10
PUSH DPH 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 POP DPH RET TABLE: DB 'DHBK TPHCM',0 END

Nhm 07

Th nghim Vi x l Hc k h 09-10

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:

MAIN:

ORG 2000H EN BIT P3.4 RS BIT P3.5

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 MOV TMOD,#20H MOV TH1,#-3 SETB TR1 RET OUT_CHAR: JNB TI,$ CLR TI MOV SBUF,A

Th nghim Vi x l Hc k h 09-10
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:

MAIN:

ORG 2000H EN BIT P3.4 RS BIT P3.5 MOV DPTR,#8000H CALL LCD_INTL CALL CLR_LCD CALL UART_INTL CALL IN_CHAR CALL WRT_TXT

LOOP:

Th nghim Vi x l Hc k h 09-10
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 MOV SBUF, A JNB TI,$ CLR TI POP ACC RET CLR_LCD: LCALL WAIT_LCD MOV A,#01H CALL WRT_COM

Nhm 07

Th nghim Vi x l Hc k h 09-10
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
tip. Tc tu chn.
Code:

ORG 2000H MAIN: EN BIT P3.4 RS BIT P3.5 CALL COM_INIT CALL LCD_INIT CALL IN_CHAR CJNE A,#13,KHAC13 CALL XUONGHANG CJNE A,#27,KHAC27 CALL XOA_LCD KHAC27: CALL CHU CALL SO JMP LOOP

LOOP:

KHAC13:

SO: CJNE A,#30H,$+3 JC THOAT CJNE A,#3AH,$+3 JNC THOAT CALL LED THOAT: RET CHU: CJNE A,#41H,$+3 JC THOAT1 CJNE A,#5BH,$+3 JNC KIEMTRA CALL WRITE_TEXT KIEMTRA: CJNE A,#61H,$+3 JC THOAT1 CJNE A,#7BH,$+3 JNC THOAT1 CALL WRITE_TEXT THOAT1: RET XOA_LCD: MOV A,#01H CALL WRITE_COM RET

Th nghim Vi x l Hc k h 09-10
XUONGHANG: MOV A,#0C0H CALL WRITE_COM RET COM_INIT: 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_INIT: MOV A,#0CH CALL WRITE_COM MOV A, #38H CALL WRITE_COM MOV A, #0EH CALL WRITE_COM MOV A, #06H CALL WRITE_COM MOV A, #01H CALL WRITE_COM RET WAIT_LCD: MOV R7, #100 LAP: MOV R6, #250 DJNZ R6, $ DJNZ R7, LAP RET WRITE_TEXT: MOV DPTR,#8000H LCALL WAIT_LCD SETB RS SETB EN MOVX @DPTR, A CLR EN RET WRITE_COM: MOV DPTR,#8000H LCALL WAIT_LCD CLR RS SETB EN MOVX @DPTR, A CLR EN RET LED: SUBB A,#2FH ORL A,#0E0H MOV DPTR,#0000h MOVX @DPTR,A

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

Th nghim Vi x l Hc k h 09-10
DJNZ R6,$ DJNZ R5,LOOP1 RET 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

Th nghim Vi x l Hc k h 09-10
DELAY3MS: CLR TF0 MOV TH0,#HIGH(-10000) 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


Code:

ORG 2000H RS BIT P3.5

Th nghim Vi x l Hc k h 09-10
EN BIT P3.4 MOV DPTR,#8000H ACALL LCD_INIT MOV DPTR,#4000H MOV A,#0 MOVX @DPTR,A ACALL DELAY_100US MOVX A,@DPTR MOV DPTR,#8000H ACALL CHIA MOV A, #80H ACALL WRITE_CMD SJMP LAP

Nhm 07

LAP:

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: MOV R7,#100 LOOP: 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

Th nghim Vi x l Hc k h 09-10
ACALL WRITE_CHAR MOV A,B MOV B,#5 DIV AB ORL A,#30H ACALL WRITE_CHAR POP B POP ACC RET END

Nhm 07

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 PUSH MOV DPH DPL A, R0 ACC DPH DPL DPTR, # DU_LIEU_HANG @DPTR, A ACC DPH DPL

Th nghim Vi x l Hc k h 09-10
MOV MOVC POP POP RET DELAY: MOV LAPC1: MOV DJNZ DJNZ RET 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, 0FFH, 0FFH 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 QUET_COT: PUSH DPH

Th nghim Vi x l Hc k h 09-10
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 DPL A DPTR, # @DPTR, A DPH DPL

Nhm 07

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

R7, R6, R6, R7,

#4 #250 $ LAPC1

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

Th nghim Vi x l Hc k h 09-10

Nhm 07

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 CALL DELAY CALL NGHICH MOVX @DPTR, A CALL DELAY CALL NGHI MOVX @DPTR, A CALL DELAY SJMP NEXT 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)

NGHICH:

NGHI:

THUAN:

DELAY: LAP:

Th nghim Vi x l Hc k h 09-10
SETB TR0 JNB TF0, $ CLR TR0 CLR TF0 DJNZ R1,LAP POP 01 RET

Nhm 07

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

MAIN:

ORG 2000H LJMP MAIN ORG 200BH LJMP ISR_T0 ORG 201BH LJMP ISR_T1 MOV TMOD,#11H CLR A MOV IE,#8AH SETB TF0 MOV DPTR,#0E000H MOVX @DPTR,A SJMP LAP SETB ACC.0 CLR ACC.1 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

LAP: ISR_T0:

ISR_T1:

CLR ACC.0 CLR ACC.1 CLR ET1 RETI END

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:

ORG 2000H LJMP MAIN

Th nghim Vi x l Hc k h 09-10
ORG 200BH LJMP ISR_T0 ORG 201BH LJMP ISR_T1 MAIN: MOV TMOD,#11H MOV R7,#50 MOV R6,#100 MOV R5,#0 CLR A MOV IE,#8AH SETB TF0 MOV DPTR,#0E000H MOVX @DPTR,A SJMP LAP SETB ACC.0 CLR ACC.1 CLR TR0 MOV TL0,#LOW(-1000) MOV TH0,#HIGH(-1000) SETB TR0 DJNZ R6,TT MOV R6,#100 DJNZ R7,TT MOV R7,#50 MOV R6,#100 INC R5 CJNE R5,#0,KHAC20 CLR TR1 MOV TL1,#LOW(-200) MOV TH1,#HIGH(-200) SETB TR1 SJMP EXIT CJNE R5,#1,KHAC50 CLR TR1 MOV TL1,#LOW(-500) MOV TH1,#HIGH(-500) SETB TR1 SJMP EXIT CJNE R5,#2,KHAC80 CLR TR1 MOV TL1,#LOW(-800) MOV TH1,#HIGH(-800) SETB TR1 SJMP EXIT MOV R5,#00H SETB ET1 RETI CLR ACC.0 CLR ACC.1 CLR ET1 RETI END

Nhm 07

LAP: ISR_T0:

TT:

KHAC20:

KHAC50:

KHAC80: EXIT: ISR_T1:

Th nghim Vi x l Hc k h 09-10

Nhm 07

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

state1: state2: state3: state4: 20per:

40per:

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)

80per:

100per:

Th nghim Vi x l Hc k h 09-10
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: ret setb tr1 reti

Nhm 07

clr tr1 clr tf1 cpl acc.0 mov dptr, #ic573 movx @dptr,a reti

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

Th nghim Vi x l Hc k h 09-10

Nhm 07

Phn2: Lm vic vi PIC 16F690

Bi 7:

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() { set_tris_C(0x00); output_C(0x00); while(1) { output_high(PIN_C0); delay_ms(500); output_low(PIN_C0); delay_ms(500); } }

Th nghim Vi x l Hc k h 09-10

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) { output_C(value); delay_ms(500); value++; if(value==16) value=0; } }

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:

Th nghim Vi x l Hc k h 09-10
#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); } } }

Nhm 07

Th nghim Vi x l Hc k h 09-10

Nhm 07

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> #use delay (clock= 4000000) #use fast_io(a) #use fast_io(c) void 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 nghim Vi x l Hc k h 09-10

Nhm 07

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 nghim3: Vit chng trnh thc hin mch m tho cc yu cu sau:

m ln t 0 n F (s Hex) khi mch va reset, m xung t F n 0 (s Hex) ki SW1 c nhn.

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);

Th nghim Vi x l Hc k h 09-10
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; } } } } }

Nhm 07

Bi 9:

Th nghim vi ADC
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)

Th nghim Vi x l Hc k h 09-10
#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; } 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; }

Nhm 07

Th nghim Vi x l Hc k h 09-10
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 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); } }

Th nghim Vi x l Hc k h 09-10

Nhm 07

You might also like