You are on page 1of 36

ThnghimVixlHckh0910Nhm07

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

ThnghimVixlHckh0910Nhm07

ThnghimVixlHckh0910Nhm07

Phn1: LmvicviViiukhin89C51

Bi1:

ThNghimvintnhnvLEDn

Thnghim1:VitchngtrnhthchinvicclintctrngtrngthicantnhnP1.0vhinthraLEDcniti
chnP1.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

ThnghimVixlHckh0910Nhm07
Thnghim2:Vitchngtrnhtoxungvung1HzrachnP1.0,bittnsdaongcdngtrongKITl11.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
Thnghim2:(Mrng)
Thayitnsxungvungthnh0.5Hz,vichuknhimvl30%
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
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;

ThnghimVixlHckh0910Nhm07
POP 05
POP 06
POP 07
RET
END
Thnghim3:
Vitchngtrnhtoxungvung1HzdngTimer0
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
JNB TF0, $
CLR TF0
CLR TR0
DJNZ R5, LOOP
POP R5
RET
END
Thnghim3:(Mrng)
TndngngtTimertoxung
Code:

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

ThnghimVixlHckh0910Nhm07
VitchngtrnhlmchoLEDninchnP1.0chpttvitnscththayicbngcchnhnP1.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
END

Bi2:

ThnghimhinthdngLED7on
Thnghim1:

ThnghimVixlHckh0910Nhm07
Vitchngtrnhthchinbmt0n9vhinthraLED7on,milncchnhau2s
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 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

ThnghimVixlHckh0910Nhm07
DJNZ R6, $
DJNZ R5, L1
POP 06
POP 05
RET
TABLE: DB 71H,0B2H,0D3H,0E4H
END

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

ThnghimVixlHckh0910Nhm07
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

Thnghim3:VitchngtrnhthhingitrnhphntrongthanhghiR7raLED7on.
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:
;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

ThnghimVixlHckh0910Nhm07
L1:
MOV R3, #250
DJNZ R3, $
DJNZ R2, L1
POP 03
POP 02
RET
END

Bi3:

ThnghimhinthdngLCD
Thnghim1:
Code:

ORG
2000H
;****************************************************
;Hien thi chuoi "Hello" tren LCD
;****************************************************
EN
BIT
P3.4
RS
BIT
P3.5
CALL

INIT_LCD

MOV
CLR
MOVC
CJNE
SJMP
CALL
INC
SJMP

DPTR, #TABLE
A
A, @A+DPTR
A, #0, NEXT
$
WRITE_LCD
DPTR
LOOP

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

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

ThnghimVixlHckh0910Nhm07
POP
RET

DPL

PUSH
PUSH
SETB
SETB
MOV
MOVX
CLR
LCALL
POP
POP
RET

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

MOV
MOV
DJNZ
DJNZ
RET

R6,
R7,
R7,
R6,

DB
END

'Hello',0

WRITE_LCD:

WAIT_LCD:
DL1:

TABLE:

#200
#250
$
DL1

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

ThnghimVixlHckh0910Nhm07
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:
PUSH DPH

PUSH DPL
MOV DPTR, #8000H
CLR RS
SETB EN
MOVX @DPTR, A
CLR EN
CALL WAIT_LCD
POP DPL
POP DPH

ThnghimVixlHckh0910Nhm07
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

Bi4:

Thnghimgiaotipquacngnitip
Thnghim1:VitchngtrnhphtchuiktHello,worldlnmytnhthngquaHyperTerminalvitc19200pbs.
Code:

ORG 2000H
MAIN: MOV TMOD, #20H
MOV SCON, #42H
MOV TH1, #-3
SETB TR1

ThnghimVixlHckh0910Nhm07
MOV DPTR, #TABLE
NEXT: CLR A
MOVC A, @A+DPTR
CJNE A, #0, SEND
SJMP $
SEND: JNB TI,$
CLR TI
MOV SBUF,A
INC DPTR
SJMP NEXT
TABLE: DB 'HELLO, WORLD',0
END
Thnghim2:VitchngtrnhnhncckttmytnhginEMEMC8thngquaHyperTerminal(bngcchgcc
kttrnbnphmkhiangtrongchngtrnhHyperTerminal)vhinthlnLCD.

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

ThnghimVixlHckh0910Nhm07
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

Thnghim3:VitchngtrnhnhnmtkttcngnitiphinthlnLCDngthiphtracngnitip.Tctu
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
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,$

ThnghimVixlHckh0910Nhm07
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
RET
END

BI TP THM : Vit chng trnh nhn k t t cng ni tip, ng thi pht ra cng n i tip, v i iu ki n:
- 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

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

ThnghimVixlHckh0910Nhm07
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
RET
END

Bi5:

ThnghimiukhinADC
Thnghim1:Vitchngtrnhthchincinpcabintrtrnknh0vhinthraled7on.
Code:

ORG 2000H
MAIN:

MOV TMOD,#20H
LOOP: MOV DPTR,#4000H
MOV A,#0
MOVX @DPTR,A
CALL DELAY100US
MOVX A,@DPTR
CALL BINTOBCD
MOV DPTR,#0000H
MOV A,R2

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

Thnghim2:Vitchngtrnhthchincinpcabintrtrnknh0vhinthraLCD.
Code:

MAIN:

ORG 2000H
CALL LCD_INIT
MOV TMOD,#21H

LOOP:

MOV DPTR,#4000H
MOV A,#0
MOVX @DPTR,A
CALL DELAY100US
MOVX A,@DPTR
CALL BINTOASCII
CALL CLR_LCD
MOV A,R4

ThnghimVixlHckh0910Nhm07
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 B,#10
DIV AB
MOV R2,B
MOV B,#10
DIV AB
MOV R3,B
MOV R4,A
MOV A,#30H
ADD A,R2
MOV R2,A
MOV A,#30H
ADD A,R3
MOV R3,A
MOV A,#30H
ADD A,R4
MOV R4,A
RET
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

ThnghimVixlHckh0910Nhm07
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

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
MOVX A,@DPTR
MOV DPTR,#8000H
ACALL CHIA
MOV A, #80H
ACALL WRITE_CMD
SJMP 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

ThnghimVixlHckh0910Nhm07
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
ORL A,#30H
ACALL WRITE_CHAR
POP B
POP ACC

RET
END

Bi6:

ThnghimviLEDmatrn
Thnghim1:VitchngtrnhhinthchAraLEDmatrn

ThnghimVixlHckh0910Nhm07
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

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

DU_LIEU_HANG:
PUSH
PUSH
MOV
MOV
MOVC
POP
POP
RET
DELAY:

DPH
DPL
A, R0
DPTR, #CHAR_A
A, @A+DPTR
DPH
DPL

MOV
LAPC1: MOV
DJNZ
DJNZ
RET

R7,
R6,
R6,
R7,

#4
#250
$
LAPC1

CHAR_A:
END

DB 03H, 0EDH, 0EEH, 0EEH, 0EDH, 03H

ThnghimVixlHckh0910Nhm07
Thnghim2:VitlichngtrnhhinthchAraLEDmatrncsdngchngtrnhcon
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
PUSH
RR
MOV
MOVX
POP
POP
RET
QUET_HANG:
PUSH
PUSH
PUSH
MOV
MOV
MOVX
POP
POP
POP

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

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

ThnghimVixlHckh0910Nhm07
RET
DELAY:

MOV
LAPC1: MOV
DJNZ
DJNZ
RET

R7,
R6,
R6,
R7,

#4
#250
$
LAPC1

CHAR_A:
END

DB 03H, 0EDH, 0EEH, 0EEH, 0EDH, 03H

Bi7:

ThnghimvingcDC

Thnghim1:Vitchngtrnhchophpngcchytheochiuthuntrongvng2s,ngh2s,chytheochiungc2s,
ngh2svlpli.
Code:

ORG 2000H
MAIN: MOV TMOD, #01H
MOV R1, #40
MOV DPTR, #0E000H
NEXT: 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
NGHICH:
SETB ACC.0
CLR ACC.1
RET
NGHI:
CLR ACC.0
CLR ACC.1
RET
THUAN:

ThnghimVixlHckh0910Nhm07

DELAY:
LAP:

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

Thnghim2:VitchngtrnhiukhinngcviphngphpPWM,trongthigianbtcaxungl50%chuk
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
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
Thnghim3:VitchngtrnhiukhinngcviphngphpPWM,trongthigianbtcaxunglnltl20%,
50%,v80%chuk.Mirngxungcchnhau 5s. Quy trnh c lp li lien tc

ThnghimVixlHckh0910Nhm07
Code:

Thnghim4: Vitchngtrnhthchinvictnghocgimdntcngc

nh 2 nt nhn P1.4 v P1.5. Khi


khng nhn nt, tc ng c khng i. Khi nt P1.4 c nh n v gi th t c ng c tng d n.Khi nt
P1.5 c nhn v gi li th tc ng c gim dn.
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
state1:
sjmp
state2:
sjmp
state3:
sjmp
state4:
20per:

40per:

check
r1, #0,state1
20per
cjne r1, #1,state2
40per
cjne r1, #1,state3
60per
cjne r1, #1,state4
80per
sjmp 100per

mov th1,#high(-200)
mov tl1, #low(-200)
sjmp kt
mov th1,#high(-400)
mov tl1, #low(-400)
sjmp kt

ThnghimVixlHckh0910Nhm07
80per:

mov th1,#high(-800)
mov tl1, #low(-800)
sjmp kt
100per:
mov th1,#high(-1000)
mov tl1, #low(-1000)
kt:
setb tr1
reti
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:

ret

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

ThnghimVixlHckh0910Nhm07

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

Phn1: LmvicviPIC16F690
Bi7:

ThnghimviLEDn

Thnghim1:VitchngtrnhchpttLEDcninchnRC2caPIC16F690vitnschpttl1Hz.
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);
}
}

Thnghim2:VitchngtrnhthchinmchLEDchycnin4LEDportCcaPIC16F690nhsau,bitthi
giangiacctrngthiS(sng)vT(tt)l0.5s:STTT>TSTT>TTST>TTTS>STTT>

ThnghimVixlHckh0910Nhm07
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;
}
}

Thnghim3:Vitchngtrnhthchinmchmlnbtut0n15,ktquxutra4LEDncninportC
caPIC16F690.Gitrmchmtngln1nvcchnhau1s.
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;
}
}

Thnghim4:Vitchngtrnhthchinmchmlnbtut0n15,ktquxutra4LEDncninportC
caPIC16F690.MchchmkhiSW1cnhn.
Code:

ThnghimVixlHckh0910Nhm07
#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);
}
}
}

Bi8:

ThnghimviLED7on

Thnghim1:Vitchngtrnhthchinmchmlnt0nF(sHex),ktquxutraLED7on,gitrbmtng
ln1nvcchnhaumi0.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,0x
03};
int
state2[16]={0x0F,0x01,0x06,0x03,0x09,0x0B,0x0F,0x01,0x0F,0x0B,0x0D,0x0F,0x0E,0x07,0x0E,0x
0c};
int i;
set_tris_a(0x00);
set_tris_c(0x00);
while(1)

ThnghimVixlHckh0910Nhm07
{
for(i=0;i<16;i++)
{
output_a(state1[i]);
output_c(state2[i]);
delay_ms(500);
}
}
}

Thnghim2:VitchngtrnhmslnnhnSW1,ktquxutraledn(gisslnnhnnhhn10).
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);
}

Thnghim3:Vitchngtrnhthchinmchmthoccyucusau:

mlnt0nF(sHex)khimchvareset,

mxungtFn0(sHex)kiSW1cnhn.

Ktquxutraledn,gitrbmtngln(gimxung)1nvcchnhaumi0.5s.
Code:

#include<16f690.h>

ThnghimVixlHckh0910Nhm07
#use
#use
#use
void

delay (clock= 4000000)


fast_io(a)
fast_io(c)
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;
}
}
}
}

Bi9:

ThnghimviADC
Thnghim1:VitchngtrnhcgitrinpcabintrRP1vxutmcinptngngvigitrinpc
craLED7on(dungADCviphngii10bits)cchobibngsau:
Mc(ngrabADC)

GitrhinthtrnLED7on

063

64127

ThnghimVixlHckh0910Nhm07
128191

832895

896959

9601023

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;
}
else if(256<=a&&a<=319)
{i=4;
}
else if(320<=a&&a<=383)
{i=5;

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

Thnghim2:VitchngtrnhcgitrngraADCviphngii10bitsdungiukhinthigianchpttLEDn
cninchnRC0caPIC16F690.

ThnghimVixlHckh0910Nhm07
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