Vous êtes sur la page 1sur 104

I.

PHN LED N LNH MOV



1.Chng trnh led sng nhp nhy port 1.
ORG 00H
MAIN:
MOV P1,#00H;led tt ht
CALL DELAY
MOV P1,#0FFH;led sng ht
CALL DELAY
JMP MAIN
DELAY:;CT to tr
MOV R0,#50
LAP:
NOP
NOP
DJNZ R0,LAP
RET
END



2.Chng trnh Led sng dn port 1
ORG 00H
MAIN:
MOV P1,#00000000B;Trng thi led tt ht
CALL DELAY
MOV P1,#00000001B;Led p1.0 sng
CALL DELAY
MOV P1,#00000011B;led p1.0,p1.1 sng
CALL DELAY
MOV P1,#00000111B;led p1.0,p1.1,p1.2 sng
CALL DELAY
MOV P1,#00001111B
CALL DELAY
MOV P1,#00011111B
CALL DELAY
MOV P1,#00111111B
CALL DELAY
MOV P1,#01111111B
CALL DELAY
MOV P1,#11111111B
CALL DELAY
JMP MAIN
DELAY:
MOV R0,#200
LAP:
MOV R1,#200
LAP2:
NOP
NOP
NOP
DJNZ R1,LAP2
DJNZ R0,LAP
RET
END

3.Chng trnh led tt dn port 1
ORG 00H
MAIN:
MOV P1,#11111111B;Trng thi led sng ht
CALL DELAY
MOV P1,#11111110B;Led p1.0 tt
CALL DELAY
MOV P1,#11111100B;led p1.0 tt,p1.1 tt
CALL DELAY
MOV P1,#11111000B
CALL DELAY
MOV P1,#11110000B
CALL DELAY
MOV P1,#11100000B
CALL DELAY
MOV P1,#11000000B
CALL DELAY
MOV P1,#10000000B
CALL DELAY
MOV P1,#00000000B
CALL DELAY
JMP MAIN
DELAY:
MOV R0,#200
LAP:
MOV R1,#200
LAP2:
NOP
NOP
NOP
DJNZ R1,LAP2
DJNZ R0,LAP
RET
END
4.Sng dn tt dn theo chiu ngc li:
ORG 00H

MAIN:
CALL CON1
CALL CON2
JMP MAIN
CON1:;SANG DAN
MOV P1,#00000000B
CALL DELAY
MOV P1,#10000000B
CALL DELAY
MOV P1,#11000000B
CALL DELAY
MOV P1,#11100000B
CALL DELAY
MOV P1,#11110000B
CALL DELAY
MOV P1,#11111000B
CALL DELAY
MOV P1,#11111100B
CALL DELAY
MOV P1,#11111110B
CALL DELAY
MOV P1,#11111111B
CALL DELAY
RET

CON2:;TAT DAN
MOV P1,#11111111B
CALL DELAY
MOV P1,#01111111B
CALL DELAY
MOV P1,#00111111B
CALL DELAY
MOV P1,#00011111B
CALL DELAY
MOV P1,#00001111B
CALL DELAY
MOV P1,#00000111B
CALL DELAY
MOV P1,#00000011B
CALL DELAY
MOV P1,#00000001B
CALL DELAY
MOV P1,#00000000B
CALL DELAY
RET

DELAY:
MOV R0,#200
LAP:
MOV R1,#200
LAP2:
NOP
NOP
NOP
DJNZ R1,LAP2
DJNZ R0,LAP
RET
END

II. PHN LED N LNH QUAY.

ORG 0000H
MAIN:; Bat dau chuong trinh chinh
CALL CTA;Goi chuong trinh con sang dan tu tren xuong duoi
CALL CTB;Goi chuong trinh con sang dan tu duoi len tren
JMP MAIN
;-----------chuong trinh con sang dan tu tren xuong duoi--------------------------
CTA:
MOV A,#00H;Thanh ghi A la 00000000
LAP:;Nhan cua vong lap
SETB C;Thit lap co nho C len 1
RLC A;Quay trai co C co nho
MOV P2,A;Dua gia tri vao P2
CALL DELAY;Tao thoi gian tre de thay hieu ung
CJNE A,#0FFH,LAP;Kiem tra neu chua bang 11111111 thi nhay den nhan LAP
RET

;-------------chuong trinh con sang dan tu duoi len tren-------------------------
CTB:
MOV A,#00H; dua gia tri 00000000 vao thanh ghi tich luy A
LAP1: ; nhan vong lap
SETB C ; Thiet lap co nho C len 1
RRC A ; quay phai thanh ghi A co co nho
MOV P2,A ; chuyen gia tri thanh ghi A vua quay xuat ra Port 2
CALL DELAY;goi chuong trinh tre de thay hieu ung led
CJNE A,#0FFH,LAP1;Kiem tra thanh ghi A da bang 11111111 chua, neu chua bang thin hay
den LAP1
RET
;----Chuong trinh tao thoi gian tre-----
DELAY:
MOV R0,#200
LOOP:
MOV R1,#210
LOOP1:
NOP
DJNZ R1,LOOP1
DJNZ R0,LOOP
RET
END
III. LED N LY BNG M
ORG 00H
MAIN:
CALL CTA; sang dan qua trai
CALL CTB; sang dan qua phai
JMP MAIN
;*****************************************
CTA:
MOV R0,#00H ;Bien dem so trang thai hien thi
MOV DPTR,#MALED ;Nap di chi vung du lieu
LABEL:
MOV A,R0 ; Chuyen gia tri thanh ghi R0 vao thanh ghi A
MOVC A,@A+DPTR ; Lay du lieu tu vung nho
MOV P2,A ;Hien thi
CALL DELAY
INC R0 ; Lay du lieu ke tiep
CJNE R0,#9,LABEL ; Kiem tra so du trang thai hien thi
RET
;*****************************************
CTB:
MOV R0,#00H
MOV DPTR,#MALED1
LABEL1:
MOV A,R0
MOVC A,@A+DPTR
MOV P2,A
CALL DELAY
INC R0
CJNE R0,#9,LABEL1
RET
;******************************************
MALED: DB 00H,01H,03H,07H,0FH,1FH,3FH,7FH,0FFH; co 9 ma led CTA
;00000000b,00000001b,00000011b,
MALED1: DB 00H,80H,0C0H,0E0H,0F0H,0F8H,0FCH,0FEH,0FFH; 9 ma led CTB
;----Chuong trinh tao thoi gian tre-----
DELAY:
MOV R3,#200
LOOP:
MOV R2,#250
LOOP1:
NOP
DJNZ R2,LOOP1
DJNZ R3,LOOP
RET
END
IV. DNG IC 74HC595

ORG 00H
MAIN:
CALL CTA;goi chuong trinh con
CALL CTB
CALL CTC
JMP MAIN

CTA:
;sang dan led
MOV R1,#8;quet 8 led
LAP:
SETB P2.0;thiet lap bit chan data len 1 cho led sang
CALL DELAY
SETB P2.1;tao xung mo cho bit vao chan SH
CALL DELAY
CLR P2.1;tao xung dong khong cho bit vao chan SH
CALL DELAY
SETB P2.2;tao xung mo ST cho bit xuat ra cac chan led
CALL DELAY
CLR P2.2;tao xung dong ST khong cho bit xuat ra cac chan led
CALL DELAY
DJNZ R1,LAP

;tat dan led
MOV R1,#8
LAP1:
CLR P2.0;thiet lap bit chan data len 1 cho led sang
CALL DELAY
SETB P2.1
CALL DELAY
CLR P2.1
CALL DELAY
SETB P2.2
CALL DELAY
CLR P2.2
CALL DELAY
DJNZ R1,LAP1
RET

CTB:;sang 1 led chay
MOV R4,#3
NHAY:
SETB P2.0
CALL DELAY
SETB P2.1
CALL DELAY
CLR P2.1
SETB P2.2
CALL DELAY
CLR P2.2
CALL DELAY
MOV R1,#7
LAP2:
CLR P2.0
SETB P2.1
CLR P2.1
SETB P2.2
CLR P2.2
CALL DELAY
CALL DELAY
DJNZ R1,LAP2
DJNZ R4,NHAY
RET

CTC:;sang nhap nhay led
MOV R4,#3
NHAY1:
MOV R1,#8
LAP3:
SETB P2.0
SETB P2.1
CLR P2.1
DJNZ R1,LAP3
SETB P2.2
CLR P2.2
CALL DELAY

MOV R1,#8
LAP4:
CLR P2.0
SETB P2.1
CLR P2.1
DJNZ R1,LAP4
SETB P2.2
CLR P2.2
CALL DELAY
DJNZ R4,NHAY1
RET



DELAY:;chuong trinh tao tre
MOV R0,#200
LOOP:
MOV R2,#200
LOOP1:
DJNZ R2,LOOP1
DJNZ R0,LOOP
RET
END
LED 7 THANH

ORG 0000H

MAIN:

MOV R0,#00; khoi tao bien dem

LAP:

CALL CTHT; goi chuong trinh hien thi

INC R0; tang bien dem

CJNE R0,#10,LAP; kiem tra m n 9

JMP MAIN



CTHT:; Chuong trinh hien thi led 7 oan

MOV R7,#1; vong lap quet

QUAY:

MOV A,R0

MOV B,#10

DIV AB

MOV DPTR,#MALED

MOVC A,@A+DPTR

MOV P2,A

CALL DELAY

MOV A,B

MOVC A,@A+DPTR

MOV P3,A

CALL DELAY

DJNZ R7,QUAY

RET



MALED: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H



DELAY:

MOV R4,#150

LOOP:

MOV R5,#200

LOOP1:

DJNZ R5,LOOP1

DJNZ R4,LOOP

RET

END
2. Phng php qut led:

ORG 00H

MAIN:

MOV R0,#0 ; GIA TRI BAN DAU

LAP:

INC R0 ; TANG BIEN DEM

CALL HT

CJNE R0,#100,LAP ; GIOI HAN CUA GIA TRI

JMP MAIN



HT: ; CHUONG TRINH HIEN THI LED 7 DOAN

MOV DPTR,#MALED ; GAN MA CHO THANH GHI CONTROL

MOV R7,#50 ; SO LAN QUET

QUET:

MOV A,R0

MOV B,#10

DIV AB ; CHIA LAY RA PHAN CHUC

MOVC A,@A+DPTR ; LAY MA LED HANG CHUC

MOV P2,A ; XUAT DU LIEU RA PORT

SETB P3.0 ; CHO PHEP HIEN THI

CALL DELAY

CLR P3.0



MOV A,B ; LAY GIA TRI HANG DON VI

MOVC A,@A+DPTR ;LAY MA LED HANG DON VI

MOV P2,A ; XUAT DU LIEU

SETB P3.1 ; CHO PHEP HIEN THI RA LED

CALL DELAY

CLR P3.1



DJNZ R7,QUET

RET



DELAY: ;THOI GIAN TRE

MOV R1,#150

LAPA:

MOV R2,#20

LAPB:

DJNZ R2,LAPB

DJNZ R1,LAPA

RET



ORG 500 ; MA LED 7 DOAN

MALED:

DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

END

3. Phng php dng ic cht 74hc373

ORG 00H

MAIN:

CALL CTA

JMP MAIN



CTA:

MOV P2,#00H ; TAT CAC PORT DU LIEU

MOV P3,#00H

MOV R1,#0 ; GIA TRI BAN DAU CUA BIEN DEM

MOV DPTR,#MALED ; DUA MA LED 7 DOAN VAO THANH GHI CONTROL

NEXT:

CALL HT ; CHUONG TRINH HIEN THI RA LED 7 DOAN

INC R1 ; TANG GIA TRI BIEN DEM

CJNE R1,#100,NEXT ; KIEM TRA GIA TRI BIEN DEM =100 THI KET THUC

RET
PHIM N




ORG 00H

MAIN:

MOV P2,#00000000B

KEY1:

JNB P1.4,KEY1OK

CLR P2.0

CALL DELAY

JMP KEY2

KEY1OK:

SETB P2.0

CALL DELAY



KEY2:

JNB P1.5,KEY2OK

CLR P2.1

CALL DELAY

JMP KEY3

KEY2OK:

SETB P2.1

CALL DELAY



KEY3:

JNB P1.6,KEY3OK

CLR P2.2

CALL DELAY

JMP KEY4

KEY3OK:

SETB P2.2

CALL DELAY



KEY4:

JNB P1.7,KEY4OK

CLR P2.3

CALL DELAY

JMP KEY1

KEY4OK:

SETB P2.3

CALL DELAY

JMP KEY1

JMP MAIN



DELAY:

MOV R0,#200

LOOP:

MOV R1,#150

LOOP1:

DJNZ R1,LOOP1

DJNZ R2,LOOP

RET

END
2. Phm n + led 7 thanh

ORG 00H
MAIN:
KEY0:
JNB P1.7,KEY0OK
JMP KEY1
KEY0OK:
CALL CTHT
INC R0
KEY1:
JNB P1.6,KEY1OK
JMP KEY0
KEY1OK:
CALL CTHT
DEC R0
JMP KEY0

JMP MAIN

CTHT:
MOV R7,#5
QUET:
MOV A,R0
MOV B,#10
DIV AB
MOV DPTR,#MALED
MOVC A,@A+DPTR
MOV P3,A
CALL DELAY
MOV A,B
MOVC A,@A+DPTR
MOV P2,A
CALL DELAY
DJNZ R7,QUET
RET

MALED:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

DELAY:
MOV R2,#150
LOOP:
MOV R1,#200
LOOP1:
DJNZ R1,LOOP1
DJNZ R2,LOOP
RET
END
3. Phm iu khin Role + ng c n gin

ORG 0000H
MAIN:
JNB P1.0,THUAN_R
JNB P1.1,NGHICH_R
JNB P1.2,THUAN_H
JNB P1.3,NGHICH_H
JNB P1.4,STOP

JMP MAIN

THUAN_R:
SETB P3.0
CLR P3.1
JMP MAIN

NGHICH_R:
CLR P3.0
SETB P3.1
JMP MAIN

THUAN_H:
SETB P3.2
CLR P3.3
JMP MAIN

NGHICH_H:
CLR P3.2
SETB P3.3
JMP MAIN

STOP:
CLR P3.0
CLR P3.1
CLR P3.2
CLR P3.3
JMP MAIN

CALL DELAY

DELAY:
MOV R0,#200
LOOP:
MOV R1,#250
LOOP1:
NOP
DJNZ R1,LOOP1
DJNZ R0,LOOP
RET

END

1 MATRIX CHY CH:

ORG 00H

MAIN:

MOV DPTR,#MASO1

CALL CTHT

LJMP MAIN



CTHT:;CHUONG TRINH HIEN THI

MOV R7,#64;Moi chu la 1 ma tran 8x8, co 8 chu nhu vay se la 8x8 = 64

CHAYCHU:

MOV R5,#100;toc do chay chu

QUET:

MOV R0,#00

MOV R1,#01111111B

LAPS:

MOV P3,R1

MOV A,R1

RL A

MOV R1,A

MOV P3,R1

MOV A,R0

MOVC A,@A+DPTR

MOV P2,A

CALL DELAY

INC R0

CJNE R0,#8,LAPS;

DJNZ R5,QUET

INC DPTR

DJNZ R7,CHAYCHU

RET



;-------Hien thi Chu LAP TRINH---------------

MASO1:

DB 0FFH,0FFH,0H,7FH,7FH,7FH,7FH,0FFH ;L

DB 0FFH,3H,0F5H,0F6H,0F6H,0F5H,3H,0FFH ;A

DB 0FFH,0FFH,0H,0F6H,0F6H,0F6H,0F9H,0FFH ;P

DB 0FFH,0FFH,0FEH,0FEH,0H,0FEH,0FEH,0FFH ;T

DB 0FFH,0FFH,0H,0EEH,0D6H,0B6H,79H,0FFH ;R

DB 0FFH,0FFH,7EH,0H,7EH,0FFH,0FFH,0FFH ;I

DB 0FFH,0FFH,0H,0FDH,0FBH,0F7H,0H,0FFH ;N

DB 0FFH,0FFH,0H,0F7H,0F7H,0F7H,0H,0FFH ;H



;----------Chuong trinh tao thoi gian tre----------

DELAY:

MOV R4,#50

LAPF:

NOP

NOP

NOP

DJNZ R4,LAPF

RET

END
2.MATRIX PHIM + MATRIX LED

ORG 00H
MAIN:
;QUET HANG 1
MOV P0,#11111110B
JNB P0.4,PHIM1 ;SO 7
JNB P0.5,PHIM2 ;SO 8
JNB P0.6,PHIM3 ;SO 9
JNB P0.7,PHIM4 ;KT CHIA

;QUET HANG 2
MOV P0,#11111101B
JNB P0.4,PHIM5 ;SO 4
JNB P0.5,PHIM6 ;SO 5
JNB P0.6,PHIM7 ;SO 6
JNB P0.7,PHIM8 ;KT NHAN

;QUET HANG 3
MOV P0,#11111011B
JNB P0.4,PHIM9 ;SO 1
JNB P0.5,PHIM10 ;SO 2
JNB P0.6,PHIM11 ;SO 3
JNB P0.7,PHIM12 ;KT -

;QUET HANG 4
MOV P0,#11110111B
JNB P0.4,PHIM13 ; ON
JNB P0.5,PHIM14 ;SO 0
JNB P0.6,PHIM15 ;KT =
JNB P0.7,PHIM16 ;KT +
LJMP MAIN

PHIM1:
CALL MS1
LJMP MAIN
PHIM2:
CALL MS2
LJMP MAIN
PHIM3:
CALL MS3
LJMP MAIN
PHIM4:
CALL MS4
LJMP MAIN
PHIM5:
CALL MS5
LJMP MAIN
PHIM6:
CALL MS6
LJMP MAIN
PHIM7:
CALL MS7
LJMP MAIN
PHIM8:
CALL MS8
LJMP MAIN
PHIM9:
CALL MS9
LJMP MAIN
PHIM10:
CALL MS10
LJMP MAIN
PHIM11:
CALL MS11
LJMP MAIN
PHIM12:
CALL MS12
LJMP MAIN
PHIM13:
CALL MS13
LJMP MAIN
PHIM14:
CALL MS14
LJMP MAIN
PHIM15:
CALL MS15
LJMP MAIN
PHIM16:
CALL MS16
LJMP MAIN
MS1:
MOV DPTR,#MASO1
CALL CTHT
RET
MS2:
MOV DPTR,#MASO2
CALL CTHT
RET
MS3:
MOV DPTR,#MASO3
CALL CTHT
RET
MS4:
MOV DPTR,#MASO4
CALL CTHT
RET
MS5:
MOV DPTR,#MASO5
CALL CTHT
RET
MS6:
MOV DPTR,#MASO6
CALL CTHT
RET
MS7:
MOV DPTR,#MASO7
CALL CTHT
RET
MS8:
MOV DPTR,#MASO8
CALL CTHT
RET
MS9:
MOV DPTR,#MASO9
CALL CTHT
RET
MS10:
MOV DPTR,#MASO10
CALL CTHT
RET
MS11:
MOV DPTR,#MASO11
CALL CTHT
RET
MS12:
MOV DPTR,#MASO12
CALL CTHT
RET
MS13:
MOV DPTR,#MASO13
CALL CTHT
RET
MS14:
MOV DPTR,#MASO14
CALL CTHT
RET
MS15:
MOV DPTR,#MASO15
CALL CTHT
RET
MS16:
MOV DPTR,#MASO16
CALL CTHT
RET
CTHT:;CHUONG TRINH HIEN THI
MOV R2,#20
QUET:
MOV R0,#0
MOV R1,#01H
BACK_1:
MOV A,R0
MOVC A,@A+DPTR
MOV P2,A
MOV P3,R1
CALL DELAY
MOV P3,#00H
MOV A,R1
RL A
MOV R1,A
INC R0
CJNE R0,#8,BACK_1
DJNZ R2,QUET
RET

DELAY:
PUSH 01
MOV R1,#50
DJNZ R1,$
POP 01
RET

MASO1:
DB 0FFH,0FFH,0BDH,0DDH,0EDH,0F5H,0F9H,0FFH ;S7
MASO2:
DB 0FFH,89H,76H,76H,76H,89H,0FFH,0FFH ;S8
MASO3:
DB 0FFH,71H,6EH,6EH,0AEH,0C1H,0FFH,0FFH ;S9
MASO4:
DB 0FFH,0F7H,0F7H,0D5H,0F7H,0F7H,0FFH,0FFH ;KT CHIA
MASO5:
DB 0FFH,0E7H,0EBH,0EDH,80H,0EFH,0FFH,0FFH ;S4
MASO6:
DB 0FFH,0FFH,0B8H,0BAH,0BAH,0BAH,0C7H,0FFH ;S5
MASO7:
DB 0FFH,0C7H,0B3H,0B5H,0B6H,0CFH,0FFH,0FFH ;S6
MASO8:
DB 0FFH,0BDH,0DBH,0E7H,0E7H,0DBH,0BDH,0FFH ;KT NHAN
MASO9:
DB 0FFH,0F7H,0BBH,81H,0BFH,0FFH,0FFH,0FFH ;S1
MASO10:
DB 0FFH,0BDH,9EH,0AEH,0B6H,0B9H,0FFH,0FFH ;S2
MASO11:
DB 0FFH,7EH,76H,72H,74H,8EH,0FFH,0FFH ;S3
MASO12:
DB 0FFH,0F7H,0F7H,0F7H,0F7H,0F7H,0FFH,0FFH ;KT -
MASO13:
DB 0C3H,0BDH,0C3H,83H,0F7H,0EFH,0DFH,83H ;ON
MASO14:
DB 0FFH,83H,7DH,7DH,7DH,83H,0FFH,0FFH ; S0
MASO15:
DB 0FFH,0FFH,0EBH,0EBH,0EBH,0EBH,0FFH,0FFH ;KT =
MASO16:
DB 0FFH,0F7H,0F7H,0C1H,0F7H,0F7H,0FFH,0FFH ;KT +

END
3. Matrix phm + Led 7 thanh

;chng trnh code asm
;Design By Chipkool_online
;SV H Kinh t - K Thut cng Nghip
ORG 00H
MAIN:
;QUET HANG 1
MOV P3,#11111110B
JNB P3.4,PHIM7
JNB P3.5,PHIM8
JNB P3.6,PHIM9
JNB P3.7,PHIM10

;QUET HANG 2
MOV P3,#11111101B
JNB P3.4,PHIM4
JNB P3.5,PHIM5
JNB P3.6,PHIM6
JNB P3.7,PHIM11

;QUET HANG 3
MOV P3,#11111011B
JNB P3.4,PHIM1
JNB P3.5,PHIM2
JNB P3.6,PHIM3
JNB P3.7,PHIM12

;QUET HANG 4
MOV P3,#11110111B
JNB P3.4,PHIM13
JNB P3.5,PHIM14
JNB P3.6,PHIM15
JNB P3.7,PHIM16

JMP MAIN

PHIM1:
MOV R0,#1
CALL CTHT
LJMP MAIN



PHIM2:
MOV R0,#2
CALL CTHT
LJMP MAIN


PHIM3:
MOV R0,#3
CALL CTHT
LJMP MAIN


PHIM4:
MOV R0,#4
CALL CTHT
LJMP MAIN


PHIM5:
MOV R0,#5
CALL CTHT
LJMP MAIN



PHIM6:
MOV R0,#6
CALL CTHT
LJMP MAIN


PHIM7:
MOV R0,#7
CALL CTHT
LJMP MAIN


PHIM8:
MOV R0,#8
CALL CTHT
LJMP MAIN


PHIM9:
MOV R0,#9
CALL CTHT
LJMP MAIN


PHIM10:
MOV R0,#10
CALL CTHT
LJMP MAIN


PHIM11:
MOV R0,#11
CALL CTHT
LJMP MAIN


PHIM12:
MOV R0,#12
CALL CTHT
LJMP MAIN

PHIM13:
MOV R0,#13
CALL CTHT
LJMP MAIN


PHIM14:
MOV R0,#14
CALL CTHT
LJMP MAIN


PHIM15:
MOV R0,#15
CALL CTHT
LJMP MAIN


PHIM16:
MOV R0,#16
CALL CTHT
LJMP MAIN


CTHT:
MOV R7,#20
QUAY:
MOV A,R0
MOV B,#10
DIV AB
MOV DPTR,#MALED
MOVC A,@A+DPTR
MOV P0,A
SETB P2.0
CALL DELAY
CLR P2.0
MOV A,B
MOVC A,@A+DPTR
MOV P0,A
SETB P2.1
CALL DELAY
CLR P2.1
DJNZ R7,QUAY
RET


MALED:DB
11000000B,11111001B,10100100B,10110000B,10011001B,10010010B,10000010B,11111000B,10000
000B,10010000B

DELAY:

MOV R1,#100
LAP:
NOP
NOP
DJNZ R1,LAP
RET
END
4. MATRIX PHM + LCD

;P2=data pin
;P3.0 -> RS pin
;P3.1 -> R/W pin
;P3.2 -> E pin

;RS EQU P3.0
;RW EQU P3.1
;E EQU P3.2

ORG 00H
MAIN:
;*** chuong trinh khoi tao LCD
MOV A,#38H ;init. LCD 2 dong ma tran 5x7
ACALL CSTROBE
MOV A,#0EH ;LCD on, cursor on
ACALL CSTROBE
MOV A,#01H ;clear LCD
ACALL CSTROBE


;QUET HANG 1
MOV P1,#11111110B
JNB P1.4,PHIM1
JNB P1.5,PHIM2
JNB P1.6,PHIM3
JNB P1.7,PHIM4

;QUET HANG 2
MOV P1,#11111101B
JNB P1.4,PHIM5
JNB P1.5,PHIM6
JNB P1.6,PHIM7
JNB P1.7,PHIM8

;QUET HANG 3
MOV P1,#11111011B
JNB P1.4,PHIM9
JNB P1.5,PHIM10
JNB P1.6,PHIM11
JNB P1.7,PHIM12

;QUET HANG 4
MOV P1,#11110111B
JNB P1.4,PHIM13
JNB P1.5,PHIM14
JNB P1.6,PHIM15
JNB P1.7,PHIM16

LJMP MAIN

PHIM1:; hien thi chay chu sang trai
LCALL CTSO1
LJMP MAIN

PHIM2:
LCALL CTSO2
LJMP MAIN

PHIM3:
LCALL CTSO3
LJMP MAIN

PHIM4:
LCALL CTSO4
LJMP MAIN

PHIM5:
LCALL CTSO5
LJMP MAIN

PHIM6:
LCALL CTSO6
LJMP MAIN

PHIM7:
LCALL CTSO7
LJMP MAIN

PHIM8:
LCALL CTSO8
LJMP MAIN

PHIM9:
LCALL CTSO9
LJMP MAIN

PHIM10:
LCALL CTSO10
LJMP MAIN

PHIM11:
LCALL CTSO11
LJMP MAIN

PHIM12:
LCALL CTSO12
LJMP MAIN

PHIM13:
LCALL CTB
LJMP MAIN

PHIM14:
LCALL CTA
LJMP MAIN

PHIM15:

LJMP MAIN

PHIM16:

LJMP MAIN

;***************CHUONG TRINH CON CAC SO 1 - 12
CTSO1:
;Hien dong 1
MOV A,#80H
LCALL CSTROBE
LCALL DELAY100MS
;
MOV A,#'1'
LCALL DSTROBE
LCALL DELAY100MS

RET

CTSO2:
;Hien dong 1
MOV A,#80H
LCALL CSTROBE
LCALL DELAY100MS
;
MOV A,#'2'
LCALL DSTROBE
LCALL DELAY100MS
RET

CTSO3:
;Hien dong 1
MOV A,#80H
LCALL CSTROBE
LCALL DELAY100MS
;
MOV A,#'3'
LCALL DSTROBE
LCALL DELAY100MS
RET

CTSO4:
;Hien dong 1
MOV A,#80H
LCALL CSTROBE
LCALL DELAY100MS
;
MOV A,#'4'
LCALL DSTROBE
LCALL DELAY100MS
RET

CTSO5:
;Hien dong 1
MOV A,#80H
LCALL CSTROBE
LCALL DELAY100MS
;
MOV A,#'5'
LCALL DSTROBE
LCALL DELAY100MS
RET

CTSO6:
;Hien dong 1
MOV A,#80H
LCALL CSTROBE
LCALL DELAY100MS
;
MOV A,#'6'
LCALL DSTROBE
LCALL DELAY100MS
RET


CTSO7:
;Hien dong 1
MOV A,#80H
LCALL CSTROBE
LCALL DELAY100MS
;
MOV A,#'7'
LCALL DSTROBE
LCALL DELAY100MS
RET

CTSO8:
;Hien dong 1
MOV A,#80H
LCALL CSTROBE
LCALL DELAY100MS
;
MOV A,#'8'
LCALL DSTROBE
LCALL DELAY100MS
RET

CTSO9:
;Hien dong 1
MOV A,#80H
LCALL CSTROBE
LCALL DELAY100MS
;
MOV A,#'9'
LCALL DSTROBE
LCALL DELAY100MS
RET

CTSO10:
;Hien dong 1
MOV A,#80H
LCALL CSTROBE
LCALL DELAY100MS
;
MOV A,#'10'
LCALL DSTROBE
LCALL DELAY100MS

RET

CTSO11:
;Hien dong 1
MOV A,#80H
LCALL CSTROBE
LCALL DELAY100MS
;
MOV A,#'11'
LCALL DSTROBE
LCALL DELAY100MS
RET

CTSO12:
;Hien dong 1
MOV A,#80H
LCALL CSTROBE
LCALL DELAY100MS
;
MOV A,#'12'
LCALL DSTROBE
LCALL DELAY100MS
RET






;*******************HIEN THI CHAY CHU DHKTKTCN
CTA:
MOV A,#06H ; con tro dich phai
ACALL CSTROBE
MOV A,#80H ;chuyen Con tro den dong 1 vi tri 0
ACALL CSTROBE
MOV DPTR,#MYDATA ;Dua con tro du lieu toi bang

DONG1: CLR A
MOVC A,@A+DPTR
JZ THOAT ;Neu A=0 thi thi thoat
LCALL DSTROBE
INC DPTR
SJMP DONG1

THOAT:
MOV A,#18H
LCALL CSTROBE
LCALL DELAY100MS
SJMP THOAT

RET

; ********************HIEN THI CHU CHIPKOOL - UNETI
CTB:
MOV A,#0C1H; Lenh dong 2
LCALL CSTROBE
LCALL DELAY100MS

MOV R0,#1; LAP 1 LAN HIEN THI 1 LAN
LAP1:

MOV A,#'C'
LCALL DSTROBE
LCALL DELAY100MS
;
MOV A,#'H'
LCALL DSTROBE
LCALL DELAY100MS
;
MOV A,#'I'
LCALL DSTROBE
LCALL DELAY100MS
;
MOV A,#'P'
LCALL DSTROBE
LCALL DELAY100MS
;
MOV A,#'K'
LCALL DSTROBE
LCALL DELAY100MS
;
MOV A,#'O'
LCALL DSTROBE
LCALL DELAY100MS
;
MOV A,#'O'
LCALL DSTROBE
LCALL DELAY100MS
;
MOV A,#'L'
LCALL DSTROBE
LCALL DELAY100MS
;
MOV A,#'-'
LCALL DSTROBE
LCALL DELAY100MS
; ******************UNETI

MOV A,#'U'
LCALL DSTROBE
LCALL DELAY100MS

;
MOV A,#'N'
LCALL DSTROBE
LCALL DELAY100MS
;
MOV A,#'E'
LCALL DSTROBE
LCALL DELAY100MS
;
MOV A,#'T'
LCALL DSTROBE
LCALL DELAY100MS
;
MOV A,#'I'
LCALL DSTROBE
LCALL DELAY100MS

;
DJNZ R0,LAP1
CALL DELAY100MS
CALL DELAY100MS
CALL DELAY100MS
RET




; ***********************************BAT DAU CHUONG TRINH CON LCD*******************


CSTROBE: ;command strobe
ACALL READY ;is LCD ready?
MOV P2,A ;xuat ma lenh
CLR P3.0 ;RS=0: lenh
CLR P3.1 ;R/W=0 -> ghi ra LCD
SETB P3.2 ;E=1 -> tao canh xuong
CLR P3.2 ;E=0 chot
RET
DSTROBE: ;data strobe
ACALL READY ;is LCD ready?
MOV P2,A ;xuat du lieu
SETB P3.0 ;RS=1 for data
CLR P3.1 ;R/W=0 to write to LCD
SETB P3.2 ;E=1 -> tao canh xuong
CLR P3.2 ;E=0 chot
RET
; kiem tra co BF
READY: SETB P2.7 ;P2.7: input
CLR P3.0 ;RS=0: thanh ghi lenh
SETB P3.1 ;R/W=1: doc
BACK: CLR P3.2 ;E=0 -> tao canh lenh
SETB P3.2 ;E=1
JB P2.7,BACK ;cho co flag bang 0
RET

DELAY100MS:
MOV R2,#100
DL5: MOV R1,#250
DL4: NOP
NOP
DJNZ R1,DL4
DJNZ R2,DL5
RET

ORG 250H
MYDATA:
DB "DAI HOC KINH TE KY THUAT CONG NGHIEP"

END

; *** File Name: PDCLK.ASM
; *** Project: Programmable Digital Clock with Alarm
; *** Author: MICROPIC
; *** Date: 04/01/2007
; *** Processor: Atmel AT89C51 Microcontroller (Compatible With MCS-51)
; *** Timekeeper: DS1307 I2C Serial Timekeeper IC
; *** Display: 16 characters x 2 lines LCD
;**************************************************************
; LCD Connections
LCD DATA P2 ; define LCD data port on port 1
Busy BIT LCD.7 ; define LCD busy flag
EN BIT P3.5 ; define LCD enable pin on port 2.2
RW BIT P3.6 ; define LCD register select pin on port 2.0
RS BIT P3.7 ; define LCD read/write pin on port 2.1
;**************************************************************
; KEYS
UP BIT P1.3
DN BIT P1.2
Rel_Set BIT P3.4
T_Set BIT P3.2
A_Set BIT P3.3
;**************************************************************
Rel_Out BIT P1.4
;**************************************************************
; I2C Connections
SCL BIT P1.0 ; I2C serial clock line
SDA BIT P1.1 ; I2C serial data line
;**************************************************************
; Slave Address
SAW EQU 0D0H ; Slave address for write (DS1307)
SAR EQU 0D1H ; Slave address for read (DS1307)
;**************************************************************
BitCnt DATA 20H ; BIT COUNTER FOR I2C ROUTINES
Sec DATA 21H ; SECONDS STORAGE RAM
Min DATA 22H ; MINUTES STORAGE RAM
Hour DATA 23H ; HOURS STORAGE RAM
Day DATA 24H ; DAY STORAGE RAM
Date DATA 25H ; DATE STORAGE RAM
Month DATA 26H ; MONTH STORAGE RAM
Year DATA 27H ; YEAR STORAGE RAM
SQW DATA 28H ; SQUARE-WAVE CONTROL
AL_Hour DATA 29H ; ALARM HOURS STORAGE RAM SPACE
AL_Min DATA 2AH ; ALARM MINUTES STORAGE RAM SPACE
Rel_H DATA 2BH ; RELAY HOURS STORAGE RAM SPACE (FOR ON)
Rel_M DATA 2CH ; RELAY MINUTES STORAGE RAM SPACE (FOR ON)
RH_Off DATA 2DH ; RELAY HOURS STORAGE RAM SPACE (FOR OFF)
RM_Off DATA 2EH ; RELAY MINUTES STORAGE RAM SPACE (FOR OFF)
Flags DATA 2FH ; FLAGS
AL_Flag BIT Flags.0 ; ALARM FLAG
RL_Flag BIT Flags.1 ; RELAY TIMER FLAG
RL_On BIT FlagS.2
;**************************************************************
; ***MACRO'S***
I2C_Delay MACRO
NOP
ENDM
;--------------------------------------------------------------
SCLHigh MACRO
SETB SCL
JNB SCL,$
ENDM
;--------------------------------------------------------------
D_Str MACRO
ACALL Command
LCALL Disp_Char
ENDM
;--------------------------------------------------------------
CLR_LCD MACRO
MOV A,#01H
ACALL Command
ENDM
;**************************************************************
ORG 0000H
;--------------------------------------------------------------
CLR AL_Flag
CLR RL_Flag
CLR RL_On
MOV SP,#2FH
MOV SQW,#80H
ACALL SQW_W
ACALL I2C_Start
MOV A,#SAW
ACALL I2C_Write
MOV A,#3FH
ACALL I2C_Write
ACALL I2C_Start
MOV A,#SAR
ACALL I2C_Write
ACALL I2C_Read_Last
ACALL I2C_Stop
CJNE A,#'~',INIT
LJMP LCD_I
;--------------------------------------------------------------
INIT: ACALL I2C_Start
MOV A,#SAW
ACALL I2C_Write
MOV A,#3FH
ACALL I2C_Write
MOV A,#'~'
ACALL I2C_Write
MOV A,#00H
ACALL I2C_Write
ACALL I2C_Stop
SJMP LCD_I
;--------------------------------------------------------------
RTC_Reset:
MOV R0,#21H
MOV R6,#07H
ACALL I2C_Start
MOV A,#SAW
ACALL I2C_Write
MOV A,#00H
ACALL I2C_Write
Loop1: MOV A,@R0
ACALL I2C_Write
INC R0
DJNZ R6,Loop1
ACALL I2C_Stop
RET
;--------------------------------------------------------------
AL_Off: CLR AL_Flag
MOV SQW,#80H
ACALL SQW_W
CLR_LCD
MOV A,#84H
D_Str
DB 'Alarm Off!',0
MOV A,#82H
ACALL Command
MOV A,#01H
ACALL Data_Disp
ACALL Delay
ACALL RL_Logo
SJMP Main
;--------------------------------------------------------------
Alarm_Set:
JB AL_Flag,AL_Off
CLR_LCD
MOV A,#84H
D_Str
DB 'Set Alarm',0
MOV A,#82H
ACALL Command
MOV A,#01H
ACALL Data_Disp
ACALL Delay
AJMP AH
;--------------------------------------------------------------
LCD_I: ACALL LCD_Initial
ACALL CGR
;--------------------------------------------------------------
Main: ACALL Disp_C
Start: ACALL Key_Scan
Back1: MOV R0,#21H
MOV R1,#0DH
ACALL I2C_Start
MOV A,#SAW
ACALL I2C_Write
MOV A,#00H
ACALL I2C_Write
ACALL I2C_Start
MOV A,#SAR
ACALL I2C_Write
Loop: ACALL I2C_Read
DJNZ R1,Loop
ACALL I2C_Read_Last
ACALL I2C_Stop
ACALL Display
ACALL Alarm_Check
ACALL Relay_Check
SJMP Start
;--------------------------------------------------------------
Key_Scan:
JNB T_Set,Jump1
JNB A_Set,Alarm_Set
JNB Rel_Set,Jump2
RET
;--------------------------------------------------------------
Jump1: LJMP Time_Set
Jump2: SJMP Relay_Set
;--------------------------------------------------------------
Alarm_Check:
JNB AL_Flag,CH
MOV A,AL_Min
CJNE A,Min,Alarm_Off
MOV A,AL_Hour
CJNE A,Hour,Alarm_Off
ACALL Alarm_On
CH: RET
;--------------------------------------------------------------
Alarm_Off:
MOV SQW,#80H
ACALL SQW_W
RET
;--------------------------------------------------------------
RL_Off: CLR RL_Flag
SETB Rel_Out
CLR RL_On
CLR_LCD
MOV A,#84H
D_Str
DB 'Relay Off!',0
MOV A,#82H
ACALL Command
MOV A,#00H
ACALL Data_Disp
ACALL Delay
ACALL AL_Logo
SJMP Main
;--------------------------------------------------------------
SQW_W: ACALL I2C_Start
MOV A,#SAW
ACALL I2C_Write
MOV A,#07H
ACALL I2C_Write
MOV A,SQW
ACALL I2C_Write
ACALL I2C_Stop
RET
;--------------------------------------------------------------
Alarm_On:
MOV SQW,#10H
ACALL SQW_W
RET
;--------------------------------------------------------------
Relay_Check:
JNB RL_Flag,CH1
JB RL_On,Rel_Off
MOV A,Rel_M
CJNE A,Min,Relay_Off
MOV A,Rel_H
CJNE A,Hour,Relay_Off
SETB RL_On
ACALL Relay_On
CH1: RET
;--------------------------------------------------------------
Relay_Off:
SETB Rel_Out
RET
;--------------------------------------------------------------
Relay_On:
CLR Rel_Out
RET
;--------------------------------------------------------------
Relay_Set:
JB RL_Flag,RL_Off
LJMP R_Set
;--------------------------------------------------------------
Rel_Off:MOV A,RM_Off
CJNE A,Min,Relay_On
MOV A,RH_Off
CJNE A,Hour,Relay_On
CLR RL_On
ACALL Relay_Off
CH2: RET
;--------------------------------------------------------------
Time_Set:
CLR_LCD
MOV A,#83H
D_Str
DB 'Set Hours:',0
MOV A,#0C7H
ACALL Command
MOV A,Hour
MOV R7,A
ACALL Disp_BCD
JNB T_Set,$
I24: PUSH ACC
MOV A,#0C7H
ACALL Command
POP ACC
KS24: JNB UP,Inc_Hour
JNB DN,Dec_Hour
JNB T_Set,Done_H
SJMP KS24
Inc_Hour:
NOP
ACALL BCD_2_Hex
INC A
CJNE A,#18H,SH
MOV A,#00H
SH: ACALL Hex_2_BCD
ACALL Disp_BCD
JNB UP,$
JNB DN,$
SJMP I24
Dec_Hour:
NOP
ACALL BCD_2_Hex
DEC A
CJNE A,#00H-1,SH
MOV A,#17H
SJMP SH
Done_H: JNB T_Set,$
MOV Hour,R7
;--------------------------------------------------------------
Mint: CLR_LCD
MOV A,#82H
D_Str
DB 'Set Minutes:',0
MOV A,#0C7H
ACALL Command
MOV A,Min
MOV R7,A
ACALL Disp_BCD
JNB T_Set,$
M1: PUSH ACC
MOV A,#0C7H
ACALL Command
POP ACC
KSMIN: JNB UP,Inc_Min
JNB DN,Dec_Min
JNB T_Set,DoneMin
SJMP KSMIN
Inc_Min:NOP
ACALL BCD_2_Hex
INC A
CJNE A,#3CH,SMin
MOV A,#00H
SMin: ACALL Hex_2_BCD
ACALL Disp_BCD
JNB UP,$
JNB DN,$
SJMP M1
Dec_Min:NOP
ACALL BCD_2_Hex
DEC A
CJNE A,#00H-1,SMin
MOV A,#3BH
SJMP SMin
DoneMin:JNB T_Set,$
MOV Min,R7
;--------------------------------------------------------------
CLR_LCD
MOV A,#83H
D_Str
DB 'Set Days:',0
MOV A,#0C5H
D_Str
DB '* *',0
MOV A,#0C6H
ACALL Command
MOV A,Day
PUSH ACC
LCALL W_Day
POP ACC
JNB T_Set,$
D1: PUSH ACC
MOV A,#0C6H
ACALL Command
POP ACC
KSDAY: JNB UP,Inc_Day
JNB DN,Dec_Day
JNB T_Set,DoneDay
SJMP KSDAY
Inc_Day:NOP
INC A
CJNE A,#08H,SDay
MOV A,#01H
SDay: PUSH ACC
LCALL W_Day
POP ACC
JNB UP,$
JNB DN,$
SJMP D1
Dec_Day:NOP
DEC A
CJNE A,#00H,SDay
MOV A,#07H
SJMP SDay
DoneDay:JNB T_Set,$
MOV Day,A
;--------------------------------------------------------------
CLR_LCD
MOV A,#83H
D_Str
DB 'Set Date:',0
MOV A,#0C7H
ACALL Command
MOV A,Date
MOV R7,A
ACALL Disp_BCD
JNB T_Set,$
DA1: PUSH ACC
MOV A,#0C7H
ACALL Command
POP ACC
KSDAT: JNB UP,Inc_DAT
JNB DN,Dec_DAT
JNB T_Set,DoneDAT
SJMP KSDAT
Inc_DAT:NOP
ACALL BCD_2_Hex
INC A
CJNE A,#20H,SDAT
MOV A,#01H
SDAT: ACALL Hex_2_BCD
ACALL Disp_BCD
JNB UP,$
JNB DN,$
SJMP DA1
Dec_DAT:NOP
ACALL BCD_2_Hex
DEC A
CJNE A,#00H,SDAT
MOV A,#1FH
SJMP SDAT
DoneDAT:JNB T_Set,$
MOV Date,R7
;--------------------------------------------------------------
CLR_LCD
MOV A,#83H
D_Str
DB 'Set Month:',0
MOV A,#0C7H
ACALL Command
MOV A,Month
MOV R7,A
ACALL Disp_BCD
JNB T_Set,$
MM1: PUSH ACC
MOV A,#0C7H
ACALL Command
POP ACC
KSMON: JNB UP,Inc_MON
JNB DN,Dec_MON
JNB T_Set,DoneMON
SJMP KSMON
Inc_MON:NOP
ACALL BCD_2_Hex
INC A
CJNE A,#0DH,SMON
MOV A,#01H
SMON: ACALL Hex_2_BCD
ACALL Disp_BCD
JNB UP,$
JNB DN,$
SJMP MM1
Dec_MON:NOP
ACALL BCD_2_Hex
DEC A
CJNE A,#00H,SMON
MOV A,#0CH
SJMP SMON
DoneMON:JNB T_Set,$
MOV Month,R7
;--------------------------------------------------------------
CLR_LCD
MOV A,#83H
D_Str
DB 'Set Year:',0
MOV A,#0C6H
D_Str
DB '20',0
MOV A,#0C8H
ACALL Command
MOV A,Year
MOV R7,A
ACALL Disp_BCD
JNB T_Set,$
YY1: PUSH ACC
MOV A,#0C8H
ACALL Command
POP ACC
KSYY: JNB UP,Inc_YY
JNB DN,Dec_YY
JNB T_Set,DoneYY
SJMP KSYY
Inc_YY: NOP
ACALL BCD_2_Hex
INC A
CJNE A,#64H,SYY
MOV A,#00H
SYY: ACALL Hex_2_BCD
ACALL Disp_BCD
JNB UP,$
JNB DN,$
SJMP YY1
Dec_YY: NOP
ACALL BCD_2_Hex
DEC A
CJNE A,#00H-1,SYY
MOV A,#63H
SJMP SYY
DoneYY: JNB T_Set,$
MOV Year,R7
MOV Sec,#00H
ACALL RTC_Reset
ACALL Done
ACALL Disp_C
ACALL RL_Logo
ACALL AL_Logo
LJMP Main
;--------------------------------------------------------------
Done:
CLR_LCD
MOV A,#86H
D_Str
DB 'Done!',0
ACALL Delay
RET
;--------------------------------------------------------------
Delay: MOV R2,#0FFH
MOV R3,#14H
LP3: MOV R2,#0FFH
LP2: MOV R5,#0FFH
LP1: DJNZ R5,LP1
DJNZ R2,LP2
DJNZ R3,LP3
RET
;--------------------------------------------------------------
AH: CLR_LCD
MOV A,#83H
D_Str
DB 'Set Hours:',0
MOV A,#0C7H
ACALL Command
MOV A,AL_Hour
MOV R7,A
ACALL Disp_BCD
ALH1: PUSH ACC
MOV A,#0C7H
ACALL Command
POP ACC
ALH2: JNB UP,Inc_AL_Hour
JNB DN,Dec_AL_Hour
JNB A_Set,DoneALH
SJMP ALH2
Inc_AL_Hour:
NOP
ACALL BCD_2_Hex
INC A
CJNE A,#18H,Z_AL_H
MOV A,#00H
Z_AL_H: ACALL Hex_2_BCD
ACALL Disp_BCD
JNB UP,$
JNB DN,$
SJMP ALH1
Dec_AL_Hour:
NOP
ACALL BCD_2_Hex
DEC A
CJNE A,#00H-1,Z_AL_H
MOV A,#17H
SJMP Z_AL_H
DoneALH:JNB A_Set,$
MOV AL_Hour,R7
CLR_LCD
MOV A,#82H
D_Str
DB 'Set Minutes:',0
MOV A,#0C7H
ACALL Command
MOV A,AL_Min
MOV R7,A
ACALL Disp_BCD
JNB A_Set,$
ALM1: PUSH ACC
MOV A,#0C7H
ACALL Command
POP ACC
ALM2: JNB UP,Inc_AL_Min
JNB DN,Dec_AL_Min
JNB A_Set,DoneAL_Min
SJMP ALM2
Inc_AL_Min:
NOP
ACALL BCD_2_Hex
INC A
CJNE A,#3CH,SAL_Min
MOV A,#00H
SAL_Min:ACALL Hex_2_BCD
ACALL Disp_BCD
JNB UP,$
JNB DN,$
SJMP ALM1
Dec_AL_Min:
NOP
ACALL BCD_2_Hex
DEC A
CJNE A,#00H-1,SAL_Min
MOV A,#3BH
SJMP SAL_Min
DoneAL_Min:
JNB A_Set,$
MOV AL_Min,R7
SETB AL_Flag
ACALL ALT_Done
ACALL Done
ACALL RL_Logo
ACALL AL_Logo
LJMP Main
;--------------------------------------------------------------
R_Set: CLR_LCD
MOV A,#81H
D_Str
DB ' Set Timer(ON)',0
MOV A,#80H
ACALL Command
MOV A,#00H
ACALL Data_Disp
ACALL Delay
CLR_LCD
MOV A,#83H
D_Str
DB 'Set Hours:',0
MOV A,#0C7H
ACALL Command
MOV A,Rel_H
MOV R7,A
ACALL Disp_BCD
JNB Rel_Set,$
RTH1: PUSH ACC
MOV A,#0C7H
ACALL Command
POP ACC
KHREL: JNB UP,Inc_Rel_H
JNB DN,Dec_Rel_H
JNB Rel_Set,DoneRel_H
SJMP KHREL
Inc_Rel_H:
NOP
ACALL BCD_2_Hex
INC A
CJNE A,#18H,HRel
MOV A,#00H
HRel: ACALL Hex_2_BCD
ACALL Disp_BCD
JNB UP,$
JNB DN,$
SJMP RTH1
Dec_Rel_H:
NOP
ACALL BCD_2_Hex
DEC A
CJNE A,#00H-1,HRel
MOV A,#17H
SJMP HRel
DoneRel_H:
JNB Rel_Set,$
MOV Rel_H,R7
CLR_LCD
MOV A,#82H
D_Str
DB 'Set Minutes:',0
MOV A,#0C7H
ACALL Command
MOV A,Rel_M
MOV R7,A
ACALL Disp_BCD
JNB Rel_Set,$
RTM1: PUSH ACC
MOV A,#0C7H
ACALL Command
POP ACC
KMREL: JNB UP,Inc_Rel_M
JNB DN,Dec_Rel_M
JNB Rel_Set,DoneRel_M
SJMP KMREL
Inc_Rel_M:
NOP
ACALL BCD_2_Hex
INC A
CJNE A,#3CH,MRel
MOV A,#00H
MRel: ACALL Hex_2_BCD
ACALL Disp_BCD
JNB UP,$
JNB DN,$
SJMP RTM1
Dec_Rel_M:
NOP
ACALL BCD_2_Hex
DEC A
CJNE A,#00H-1,MRel
MOV A,#3BH
SJMP MRel
DoneRel_M:
JNB Rel_Set,$
MOV Rel_M,R7
Off: CLR_LCD
MOV A,#81H
D_Str
DB ' Set Timer(OFF)',0
MOV A,#80H
ACALL Command
MOV A,#00H
ACALL Data_Disp
ACALL Delay
CLR_LCD
MOV A,#83H
D_Str
DB 'Set Hours:',0
MOV A,#0C7H
ACALL Command
MOV A,RH_Off
MOV R7,A
ACALL Disp_BCD
JNB Rel_Set,$
RTHF1: PUSH ACC
MOV A,#0C7H
ACALL Command
POP ACC
KHFREL: JNB UP,Inc_Rel_HF
JNB DN,Dec_Rel_HF
JNB Rel_Set,DoneRel_HF
SJMP KHFREL
Inc_Rel_HF:
NOP
ACALL BCD_2_Hex
INC A
CJNE A,#18H,HFRel
MOV A,#00H
HFRel: ACALL Hex_2_BCD
ACALL Disp_BCD
JNB UP,$
JNB DN,$
SJMP RTHF1
Dec_Rel_HF:
NOP
ACALL BCD_2_Hex
DEC A
CJNE A,#00H-1,HFRel
MOV A,#17H
SJMP HFRel
DoneRel_HF:
JNB Rel_Set,$
MOV RH_Off,R7
CLR_LCD
MOV A,#82H
D_Str
DB 'Set Minutes:',0
MOV A,#0C7H
ACALL Command
MOV A,RM_Off
MOV R7,A
ACALL Disp_BCD
JNB Rel_Set,$
RFTM1: PUSH ACC
MOV A,#0C7H
ACALL Command
POP ACC
KFMREL: JNB UP,Inc_Rel_MF
JNB DN,Dec_Rel_MF
JNB Rel_Set,DoneRel_MF
SJMP KFMREL
Inc_Rel_MF:
NOP
ACALL BCD_2_Hex
INC A
CJNE A,#3CH,MFRel
MOV A,#00H
MFRel: ACALL Hex_2_BCD
ACALL Disp_BCD
JNB UP,$
JNB DN,$
SJMP RFTM1
Dec_Rel_MF:
NOP
ACALL BCD_2_Hex
DEC A
CJNE A,#00H-1,MFRel
MOV A,#3BH
SJMP MFRel
DoneRel_MF:
JNB Rel_Set,$
MOV RM_Off,R7
SETB RL_Flag
ACALL ALT_Done
ACALL Done
ACALL RL_Logo
ACALL AL_Logo
LJMP Main
;--------------------------------------------------------------
RL_Logo:JNB RL_Flag,WE1
MOV A,#0CDH
ACALL Command
MOV A,#00H
ACALL Data_Disp
WE1: RET
;--------------------------------------------------------------
AL_Logo:JNB AL_Flag,WE2
MOV A,#0C2H
ACALL Command
MOV A,#01H
ACALL Data_Disp
WE2: RET
;--------------------------------------------------------------
ALT_Done:
MOV R1,#29H
MOV R3,#07H
ACALL I2C_Start
MOV A,#SAW
ACALL I2C_Write
MOV A,#08H
ACALL I2C_Write
LOOP4: MOV A,@R1
ACALL I2C_Write
INC R1
DJNZ R3,LOOP4
ACALL I2C_Stop
RET
;--------------------------------------------------------------
LCD_Initial:
MOV A,#38H
ACALL Command
MOV A,#0CH
ACALL Command
CLR_LCD
MOV A,#06H
ACALL Command
RET
;--------------------------------------------------------------
Display:MOV R1,#21H
MOV A,#0CAH
ACALL Command
MOV A,@R1
ACALL Disp_BCD
;
INC R1
MOV A,#0C7H
ACALL Command
MOV A,@R1
ACALL Disp_BCD
;
INC R1
MOV A,#0C4H
ACALL Command
MOV A,@R1
ACALL Disp_BCD
;
INC R1
MOV A,#80H
ACALL Command
MOV A,@R1
LCALL W_Day
;
INC R1
MOV A,#86H
ACALL Command
MOV A,@R1
ACALL Disp_BCD
;
INC R1
MOV A,#89H
ACALL Command
MOV A,@R1
ACALL Disp_BCD
;
INC R1
MOV A,#8EH
ACALL Command
MOV A,@R1
ACALL Disp_BCD
RET
;--------------------------------------------------------------
Hex_2_BCD:
MOV B,#00001010B
DIV AB
MOV R3,B
MOV B,#00010000B
MUL AB
ADD A,R3
MOV R7,A
RET
;--------------------------------------------------------------
BCD_2_Hex:
MOV B,#00010000B
DIV AB
MOV R3,B
MOV B,#00001010B
MUL AB
ADD A,R3
RET
;--------------------------------------------------------------
Disp_BCD:
PUSH ACC
MOV R5,A
ANL A,#11110000B
SWAP A
MOV DPTR,#Ascii_Code
MOVC A,@A+DPTR
ACALL Data_Disp
MOV A,R5
ANL A,#00001111B
MOVC A,@A+DPTR
ACALL Data_Disp
POP ACC
RET
;--------------------------------------------------------------
Disp_C: MOV A,#80H
D_Str
DB ' / /20 ',0
MOV A,#0C0H
ACALL Command
MOV A,#'*'
ACALL Data_Disp
MOV A,#0C6H
ACALL Command
MOV A,#':'
ACALL Data_Disp
MOV A,#0C9H
ACALL Command
MOV A,#':'
ACALL Data_Disp
MOV A,#0CFH
ACALL Command
MOV A,#'*'
ACALL Data_Disp
RET
;--------------------------------------------------------------
CGR: MOV R4,#08H
MOV R5,#40H
MOV DPTR,#Clock
ACALL WRI
MOV R4,#08H
MOV R5,#48H
MOV DPTR,#Bell
ACALL WRI
RET
;--------------------------------------------------------------
WRI: CLR A
ACALL Get_Ready
MOV LCD,R5
CLR RS
CLR RW
SETB EN
CLR EN
INC R5
MOVC A,@A+DPTR
ACALL Data_Disp
INC DPTR
DJNZ R4,WRI
RET
;---------------------------------------;
; ************I2C Commands************* ;
;---------------------------------------;
I2C_Start:
SETB SCL
SETB SDA
I2C_Delay
CLR SDA
I2C_Delay
CLR SCL
RET
;--------------------------------------------------------------
I2C_Stop:
CLR SDA
SETB SCL
I2C_Delay
SETB SDA
RET
;--------------------------------------------------------------
I2C_Write:
MOV BitCnt,#08H
I2C_Write_Loop:
RLC A
MOV SDA,C
NOP
SCLHigh
CLR SCL
DJNZ BitCnt,I2C_Write_Loop
NOP
SETB SDA
NOP
SETB SCL
I2C_Delay
MOV C,SDA
CLR SCL
NOP
JNC Label
ACALL I2C_Stop
ACALL I2C_Start
SJMP I2C_Write
Label: RET
;--------------------------------------------------------------
I2C_Read_Dummy:
SETB SDA
CLR A
MOV BitCnt,#08H
I2C_Read_Loop:
CLR SCL
I2C_Delay
SCLHigh
MOV C,SDA
RLC A
DJNZ BitCnt,I2C_Read_Loop
CLR SCL
MOV @R0,A
INC R0
RET
;--------------------------------------------------------------
I2C_Ack_Write:
CLR SDA
NOP
SETB SCL
I2C_Delay
CLR SCL
SETB SDA
I2C_Delay
RET
;--------------------------------------------------------------
I2C_Nack_Write:
SETB SDA
NOP
SETB SCL
I2C_Delay
CLR SCL
I2C_Delay
RET
;--------------------------------------------------------------
I2C_Read:
ACALL I2C_Read_Dummy
ACALL I2C_Ack_Write
RET
;--------------------------------------------------------------
I2C_Read_Last:
ACALL I2C_Read_Dummy
ACALL I2C_Nack_Write
RET
;--------------------------------------;
; ************LCD CommandS*************;
;--------------------------------------;
Command:ACALL Get_Ready
MOV LCD,A
CLR RS
CLR RW
SETB EN
CLR EN
RET
;--------------------------------------------------------------
Data_Disp:
ACALL Get_Ready
MOV LCD,A
SETB RS
CLR RW
SETB EN
CLR EN
RET
;--------------------------------------------------------------
Get_Ready:
SETB Busy
CLR RS
SETB RW
Back: CLR EN
SETB EN
JB Busy,BACK
RET
;--------------------------------------------------------------
Disp_Char:
POP DPH
POP DPL
Print_Text:
CLR A
MOVC A,@A+DPTR
CJNE A,#00H,Loop2
SJMP Return
Loop2: MOV R4, A
LCALL Data_Disp
INC DPTR
LJMP Print_Text
Return: MOV A,#01H
JMP @A+DPTR
;--------------------------------------------------------------
W_Day: CJNE A,#01H,MON
LCALL Disp_Char
DB 'Sun',0
RET
MON: CJNE A,#02H,TUE
LCALL Disp_Char
DB 'Mon',0
RET
TUE: CJNE A,#03H,WED
LCALL Disp_Char
DB 'Tue',0
RET
WED: CJNE A,#04H,THU
LCALL Disp_Char
DB 'Wed',0
RET
THU: CJNE A,#05H,FRI
LCALL Disp_Char
DB 'Thu',0
RET
FRI: CJNE A,#06H,SAT
LCALL Disp_Char
DB 'Fri',0
RET
SAT: CJNE A,#07H,WHAT
LCALL Disp_Char
DB 'Sat',0
RET
WHAT: RET
;--------------------------------------------------------------
Ascii_Code:
DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
;--------------------------------------------------------------
;Icons
Clock: DB 00H,0EH,15H,17H,11H,0EH,00H,00H
Bell: DB 04H,0EH,0EH,0EH,1FH,00H,04H,00H
;--------------------------------------------------------------
END
Mch ng h hn gi
Sau phin bn Hng dn lm mch ng h thi gian thc Ver 1 - Khng hn gi mc
trc - Thy my bn mun thm hn gi, Chip hm nay s thit k v hng dn cc bn lm mch
ng h c hn gi test ngon...Lm chy lun v ngay khng phi xon...^^".Bn di l video chip test
mch chy cc bn xem nh..Cn mch in update nt n gn ht trn mch ri,,ch vic lm thi.
I.Hnh nh m phng mch thc hin trn phn mm Protues 7.10

Mch phin bn ny phi dng tng cng 6 nt.c thm nt OK v Alarm
II.Nguyn liu chun b tin hnh thi cng.
Cng ging nh bi hng dn trc cc bn chun b mua nhng th sau:
-Chip AT89C52
-IC DS1307 - Loi tt s chy ng gi - Trn th trng c loi 10k v loi 40k
- 2 t ha 10uF
- 1 tu ha 470uF

-4 t gm 33pF

-1 thch anh 12Mhz

-1 thch anh 32Mhz - Loi tt s chy chun

-1 Chip 40 chn

- 1 ic 8 chn

-1 pin 3v

- 1 pin 3v

-6 nt bm nh

-10 in tr 1k

-4 in tr 10k

- 5 tr 100R

- 5 tr 330R

-4 led bo nt bm

- 1 LM7805

- 1 tr bng 103

-10 tranzitor C1815

- 6 led 7 on Anode chung loi b c 10 chn 2 hng..ring tng con..



chip 40 chn Led 7 on anode chung Chip At89C52


DS1307 Thach anh 12Mhz Thach anh 32Mhz



Pin 3V Pin 3V Led bo ngun v trng thi nt bm



T ha 10uF - 100uF LM7805 LM7805



Tr bng 103


III.Tin hnh lm mch.

Mch do chip designer nn cc bn yn tm mi thc mc chip s h tr.



Do phin bn trc chip qun khng thm nt Ok nn phin bn mi v sau y s c thm nt ok ri
cc bn download file PDF v cm theo l chy..Ch phin bn ny c Hn gi nn ch ci loa chnh l
ch ni loa ngoi( Loi loa my tnh cng c nhng ch loa thi nh)










- c k hng dn s dng trc khi dng.. xa tm tay tr em.^^
- Tin hng download file v M file m phng - Np code v Play
- Nhn Set ci t gi - nhn up tng - down gim
- Nhn Hn gi
+ nhn nt alarm - nhn set ci t - nhn up tng - down gim
+ nhn tip n phn giy nhn Up cho hin so 8 kich hoat t hn gi
+ nhn Ok la xong.
- de tat hen gio nhan Alarm

#include <reg51.H>
#include"LCD1602.h"
//--------------------------
//5 lcd display Frequency Meter
//--------------------------
//--------------------------------------------------
//Fixed function declaration
void int_0(); //External Interrupt 0

void int_1(); //External Interrupt 1

void t0(); //Timer Interrupt 1

void t1(); //Timer 2 interrupt

void serial_1(); //Serial interrupt 1

void serial_2(); //Serial interrupt 2
//---------------------------------------------------
//User function declaration
void initial(); //Initialization

void IntToStr(unsigned long t, unsigned char *str);//Data conversion mode

void Delay1ms(unsigned int num); //Delay Module
//---------------------------------------------------
//-----------------------------------------------------------------------------------
--------------------
//Signal and data declarations
unsigned char timecount=0; //Gate count

unsigned char T0count; //Counter overflow count

sbit Gate=P3^1; //Gate output

sbit Clr=P3^7; //Clear signal

unsigned long x; //Frequency count container 1

bit flag=0; //Gate marks the end of

unsigned char TempBuffer[10];//Data buffer

//-----------------------------------------------------------------------------------
----------------------
void main(void)
{
initial();

Gate=1; //Gate opening

Clr=1; //First clear 74LS393

LCD_Initial(); //lcd initialization

GotoXY(0,0); //Point to 0 rows 0

Print(" Frequency Meter");

GotoXY(0,1);

Print(" Hz");

while(1)

{
Clr=0;
if(flag)
{
flag=0;

IntToStr(x,TempBuffer); //Numeric conversion

GotoXY(0,1); //Locate

Print(TempBuffer); //Print data

TR0=1;
}

}


}
void initial() //Initialization
{

TMOD=0x15;

TH0=0; //Counter to pay the initial value

TL0=0; //Counter to pay the initial value

TH1=0x3b; //Timer initial payment

TL1=0xb0; //Timer initial payment

TR1=1; //Timer start

TR0=1; //Counter Start

ET0=1; //Interrupt counter open

ET1=1; //Open timer interrupt

EX1=1; // INT1 disconnect

IT1=0; // INT1 trigger low (compared to a falling edge trigger)

EA=1; //Open break

return;
}

void IntToStr(unsigned long t, unsigned char *str)
{
unsigned char a[10]; char i,length;
while(t/10) //The count value is converted to digital code values of pipe sections
{
a[i]=t%10;
t=t/10;
i++;
}
a[i]=t;
length=i+1;
for(i=0; i<length; i++) //Converted to ASCII code
a[i]=a[i]+'0';
//for(i=0; a[i]=='0' && i<=6; i++);
//for(j=8-n; j<i; j++) //Fill spaces
// { *str=' '; str++; }
for(i=length-1; i>=0; i--)
{ *str=a[i]; str++; } //Adding the number of effective
*str='\0';
}

void int_1() interrupt 2 using 1 //INT1 interrupt generated from the P3.1 pin

{

T0count=0; //Clear high count

flag=1;


TH0=0; //Counter clear

TL0=0;

}

void t0(void) interrupt 1 using 0 //Counter interrupt service routine

{

T0count++;

}

void t1(void) interrupt 3 using 0 //Timer overflow interrupt program

{

TH1=0x3b; //Initial reset

TL1=0xb0;

timecount++;

if(timecount==20)

{
TR0=0; //Stop counter

x=(T0count*65536+TH0*256+TL0)*255+P1;//Take the count
Clr=1; //Produce clear signal

timecount=0; //Count clear timer

Gate=!Gate; //Invert gate

}

}

11: Vit chng trnh mch m s ln nhn phm SP1 trn chn 17 (p3.7), kt
qu hin th trn n s dng Led 7 on. S m bt u t 00, 01, 02,...99.


PHP:
Count EQU 30H ; t tn thanh ghi 8 bit 30h l Count.
SP1 BIT P3.7 ; t tn bit p3.7 l SP1.
ORG 0000h ; Bt u t thanh ghi Reset 0000h
START: MOV Count,#00H ; t Count v mc khi u l s 0.
NEXT: MOV A,Count ; Cho chuyn ni dung trong Count vo thanh ghi a.
MOV B,#10 ; t s 10 vo thanh ghi b.
DIV AB ; Cho s trong a chia cho 10 (s trong b).
MOV DPTR,#TABLE ; t a ch ca bng c tn l Table vo thanh ghi con tr.
MOVC A,@A+DPTR ; Ly s t bng theo tr c trong a v kt qu gi trong a.
MOV P1,A ; Cho xut ni dung trong a ra port 1.
MOV A,B ; By gi cho chuyn ni dung trong thanh ghi b vo a.
MOVC A,@A+DPTR ; Li ly s t bng theo tr c trong a v kt qu gi trong
a.
MOV P2,A ; Cho xut ni dung trong a ra port 2.
WT: JNB SP1,WT ; Ch bung phm SP1.
WAIT: JB SP1,WAIT ; Ch nhn phm SP1.
LCALL DELY10MS ; Gi chng trnh tr 10ms, trnh hin tng rung phm.
JB SP1,WAIT ; Kim tra bung phm
INC Count ; Tng ni dung trong Count ln theo bc +1.
MOV A,Count ; Cho chuyn ni dung trong Count vo thanh ghi a.
CJNE A,#100,NEXT ; So snh tr trong a bng 100 cha? Nu cha th tip tc.
LJMP START ; Quay li t u.
DELY10MS: MOV R6,#20 ; Lm tr 10ms trnh nh hng ca rung phm.
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ; Bng m s dng cho Led 7
on.
END ; Dng bin dch ti dng ny.
Phn tch cch vit cc cu lnh:

Trong on chng trnh trn, chng ta c dng n lnh lm php ton chia: div ab

Bn ly s c trong a chia cho b. Kt qua s chia c trong a v s d c trong b. chia a cho
10, Bn phi np vo thanh ghi b tr 10 vi cu lnh: mov b, #10.

Bn ch n trnh lm tr 10ms, y dng trnh nh hng c sai do rung phm, v
mi khi Bn nhn phm, trong khong thi gian ngn phm b rung v to ra s ghi nhn sai.

Dng cu lnh so snh (cjne: Compare Jump iu kin Non-Zero) kim tra tr trong
thanh ghi a. y l mt cu lnh rt thng dng.
1: Nguyn l lm vic ca ic vi iu khin AT89C51 (Bn xem hnh).




IC AT89C51 c 40 chn. Cng dng ca cc chn nh sau:

* Chn 40 ni vo ng ngun 5V, chn 20 cho ni masse.

* Chn 9 ni vo mch reset vi in tr 10K v t 10uF. Khi mch va c cp in, t np
v ko chn 9 ln mc p cao to tc ng reset. Sau mt lc chn 9 tr li mc p thp. IC
AT89C51 bt u hot ng t trng thi khi u.

* Chn 18, 19 mc thch anh nh tn. Nh vy tn s xung nhp s l 1Mhz (hay 1us). Ngang
thch anh mc 2 t nh dng b nhit n tn (Bn xem hnh).




* Chn 31 Bn phi cho treo ln mc p cao, xc nh l mch ch lm vic vi b nh ni
(V mch khng dng thm b nh ngoi).
* Bn ch , ic c 4 cng, l port 0 (p0), port 1 (p1), port 2 (p2) v port 3 (p3). Mi cng c
8 chn. Mi hot ng ca ic vi iu khin u c thc hin trn cc cng ny.
Ghi nhn: Bn thy ic AT89C51 ch cn mt t linh kin bn ngoi l c th chp hnh
cc cu lnh c trong b nh EEP-ROM, Bn dng cc cu lnh ny xc nh trng thi
in p cao thp trn cc cng v dng cc mc p cao thp ny cho vic iu khin cc dng
mch in, hay cc thit b.

2: Vit chng trnh Led trn chn s 1 (p1.0) lun nhp nhy.


M:
ORG 0000h ; Khi u t thanh ghi c a ch l 0000h

START: CLR P1.0 ; t chn p1.0 xung mc p thp, Led s sng.

LCALL DELAY ; Cho gi trnh lm tr (c tn nhn l delay).

SETB P1.0 ; t chn p1.0 ln mc p cao, Led s tt

LCALL DELAY ; Li cho gi trnh lm tr (c tn nhn l delay).

LJMP START ; Cho nhy v dng lnh vi tn nhn l start, cng vic s lp li.

DELAY: MOV R5,#20 ; Np tr 50 vo thanh nh r5.
D1: MOV R6,#20 ; Np tr 20 vo thanh nh r6.

D2: MOV R7,#248 ; Np tr 248 vo thanh nh r7.

DJNZ R7,$ ; Cho gim r7 theo bc -1 cho n 0.

DJNZ R6,D2 ; Cho gim r6 theo bc -1, cha bng 0 th nhy v D2.

DJNZ R5,D1 ; Cho gim r5 theo bc -1, cha bng 0 th nhy v D1.

RET ; Quay li dng lnh sau lnh lcall.

END ; dng bin dch.
Phn tch cch vit cc cu lnh:

Bn thy khi u lun dng cu khai bo gi lnh: org 0000h

Ngha l mi vic s bt u t thanh nh c a ch l 0000h. y cng l thanh m chng
trnh s nhy n mi khi Bn nhn nt Reset.

v kt thc vi khai bo gi lnh: end

Cc cu lnh sau khai bo bi gi lnh "end" s khng c bin dch.

Ni r hn v cch tnh thi gian tr ca on chng trnh con delay:

Trong hnh trn do dng thch anh 12MHz nn mt chu k my s l 1us.


Vy cu lnh:
mov r6,#20 s thc hin 2 ln. Bn phi cho nhn 2. T cch tnh nh sau:

MOV R6,#20 2ln 2
D1: MOV R7,#248 2 ln 2 22248498 20

DJNZ R7,$ 2 ln 2248 (498
DJNZ R6,D1 2 ln 22040 10002

Qua cc nhn thi gian tr ca on chng trnh delay ny l 10.002ms.
Nu Bn mov vo r6=10 th thi gian tr s l 5ms.
Nu Bn mov vo r6=20 th thi gian tr s l 10ms.
V c thi gian tr l 200ms. Bn dng thm thanh nh r5. Mov vo r5=20. V nh vy
on chng trnh tr delay 200ms nh sau:
M:
DELAY: MOV R5,#20 ; chuyn vo thanh ghi r5 s thp phn 20.

D1: MOV R6,#20 ; chuyn vo thanh ghi r6 s thp phn 20.

D2: MOV R7,#248 ; chuyn vo thanh ghi r7 s thp phn 248.

DJNZ R7,$ ; cho s trong r7 gim theo bc -1, ti ch v ch n khi bng 0.

DJNZ R6,D2 ; cho s trong r6 gim theo bc -1, v nhy v D2 nu cha bng 0.

DJNZ R5,D1 ; cho s trong r5 gim theo bc -1, v nhy v D1 nu cha bng 0.

RET ; quay tr li thc hin dng lnh sau lnh call.
3: Vit chng trnh dng Led trn chn 1 (p1.0) theo di kha in K1 trn chn 10
(p3.0).
* K1 ng li Led sng.
* K1 b ra Led tt.

M:
ORG 0000H ; Khi u t thanh ghi 0000h

START: JB P3.0, LIG ; Lnh nhy. Nu chn p3.0 bit 1 th nhy n tn nhn LIG, Led
tt

CLR P1.0 ; t p1.0 v bit 0, chn p1.0 mc p thp. Led s sng

SJMP START ; Nhy v tn nhn START.

LIG: SETB P1.0 ; t p1.0 v bit 1, chn p1.0 mc p cao, Led tt.

SJMP START ; Nhy v tn nhn START.

END ; Dng bin dch y.

Phn tch cch vit cc cu lnh:

y, Bn dng lnh nhy theo iu kin bit, tc lnh jb (jump bit) hay jnb (jump no bit).

JB P3.0, LIG
Lnh ny c ngha l s nhy theo trng thi bit trn chn p3.0.
Nu xt chn p3.0 mc p cao (nt nhn K1 h) th nhy n tn nhn LIG, v
Nu xt chn p3.0 mc p thp (nt nhn K1 kn) th thc hin cu lnh k tip bn di.
Bn nh, khi chn p3.0 mc p cao th Led tt v khi chn p3.0 mc p thp th Led s sng.

4: Vit chng trnh dng 4 led trn cc chn 1 (p0.0), 2 (p0.1), 3 (p0.2), 4
(p0.3) cho bit trng thi ca 4 kha in trn cc chn 5 (p0.4), 6 (p0.5),
7(p0.6), 8 (p0.7).
* Khi kha in ng li Led tng ng sng.
* Khi kha in nh ra, Led tng tng tt.

M:
ORG 0000H ; Bt u t thanh ghi 0000h

START: MOV A,P1 ; Ly trang thi trn cng port 1 np vo thanh ghi tch ly a.

ANL A,#0F0H ; dng logic AND che 4 bit thp, gi nguyn trng thi 4 bit cao.

RR A ; cho ni dung trong thanh ghi a quay qua phi 1 bit.

RR A ; cho ni dung trong thanh ghi a quay qua phi 2 bit.

RR A ; cho ni dung trong thanh ghi a quay qua phi 3 bit.

RR A ; cho ni dung trong thanh ghi a quay qua phi 4 bit.

XOR A,#0F0H ; dng logic Ex-OR pht hin s khc bit trn 4 bit thp.
; nh vy Led ng vi v tr c bit 0 s pht sng.

MOV P1,A ; Chuyn trng thi ca thanh ghi a ra trn port 1 lm sng Led.

SJMP START ; nhy v tn nhn start tip tc lm nh trn.

END ; ngng bin dch dng lnh ny.
Phn tch cch vit cc cu lnh:

a- Dng 4 phm tt m 4 Led trn port 1



Bn cho chuyn trng thi ca port 1 vo thanh ghi tch ly a, ch trng thi ca 4 bit cao.
N phn nh nt nhn K1, K2, K3, K4.

b- Dng logic And vi hng 11110000b cho che 4 bit thp.


Bn ly logic AND gia thanh a v hng 0f0h (hay l 11110000b), cch lm ny l bo ton
trng thi ca 4 bit cao, cn 4 bit thp u ha ra bit 0. Ngi ta quen gi l cho che 4 bit
thp.
c- Dng lnh quay phi 4 ln di 4 bit cao xung 4 bit thp.


Dng lnh rr a cho quay bit qua phi, nu cho quay 4 ln th 4 bit thp s ln nm vng 4
bit cao v 4 bit cao s xung nm vng 4 bit thp. Chng ta ni cho chuyn trng thi ca 4
bit cao xung vng 4 bit thp. Cng c th dng lnh swap.
d- Dng logic Ex-Or pht hin cc bit khc nhau.

Ly logic D-OR pht hin cc bit ging nhau hay khc nhau:
Nu cc bit ging nhau, kt qu s l bit 0.
Nu cc bit khc nhau, kt qu s l bit 1.
T ng ra, Bn s thy Led nm trn bit 0 s pht sng. Cc Led nm trn bit 1 s tt.
5: Vit chng trnh cho 8 Led trn port 1 ln lt nhp nhy, nhy qua tri ri nhy
qua phi.

M:
ORG 0000h
START: MOV R2,#8 ; t tr 8 (s ln m) vo thanh ghi r2
MOV A,#0FEH ; t tr 0feh tc 11111110b v thanh ghi a.
SETB C ; t bit Cary ln mc 1.
LOOP: MOV P1,A ; Chuyn ni dung trong thanh ghi a vo cng port 1.
LCALL DELAY ; Cho gi chng trnh lm tr
RLC A ; Cho ni dung trong thanh ghi a quay qua tri c cho quay qua bit c C.
DJNZ R2,LOOP ; m li tr trong thanh ghi r2. Nu cha bng 0 th lm tip lnh
LOOP.
MOV R2,#8 ; Np li tr 8 vo thanh ghi r2.
LOOP1: MOV P1,A ; Chuyn ni dung trong thanh ghi a vo cng port 1.
LCALL DELAY ; Cho gi chng trnh lm tr
RRC A ; Cho ni dung trong thanh ghi a quay qua phi c cho quay qua bit c C.
DJNZ R2,LOOP1 ; m li tr trong thanh ghi r2. Nu cha bng 0 th lm tip lnh
LOOP1.
LJMP START ; Nhy khng iu kin v tn nhn start li tip tc.
DELAY: MOV R5,#20 ; Chng trnh dng lm tr (xem li phn th d 1)
D1: MOV R6,#20
D2: MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
END ; Dng bin dch.

Phn tch cch vit cc cu lnh:
Bi ny dng lnh quay bit qua phi v ri cho quay bit qua tri di bit 0 ln lt i qua 8
chn ca port 1, chng ta bit bit 0 s lm sng Led. Nh vy Bn s thy cc Led trn port 1 s
ln lt sng v nhy qua phi ri i chiu nhy qua tri. bit 0 c th i trn 8 chn ca
port 1, chng ta dng lnh quay c quay qua bit c C (rrl v rlc), d nhin trc phi nh set
bit c C ln mc 1.
Trnh by lnh quay rrc v rlc bng hnh minh ha (Bn xem hnh):
a- Bn dng lnh quay c qua c C, vy qua 8 nhp bit 0 s vo nm trong c C, lc ny 8 bit
port 1 u mc 1 v nh vy 8 Led trn port 1 u s tt. Vi lnh rlc a (rotate left Carry). Bn s
thy tng Led sng ln v nhy qua bn tri.


b- Bn dng lnh quay c qua c C, vy qua 8 nhp bit 0 s vo nm trong c C, lc ny 8 bit
port 1 u mc 1 v nh vy 8 Led trn port 1 u s tt. Vi lnh rrc a (rotate right Carry). Bn
s thy tng Led sng ln v nhy qua bn phi.


c- Lnh quay (rotate) ch c tc dng vi thanh ghi a, do Bn mun th hin kt qu ra 8 Led
trn port 1, Bn phi chuyn ni dung c trong a ra port 1. Bn dng lnh mov p1, a.


Tm li, trong bi ny Bn lm quen vi cch dng lnh quay c cho qua c C. Vi cch vit
ny, Bn thy chng ta dng rt t cu lnh m vn khin cho cc Led sng nhy (nhy qua nhy
li) trn port 1.

6: Vit chng trnh mch pht ra ting cnh bo.
Tn hiu 1KHz v 500Hz pht ra trn chn 1 (p1.0), thi gian pht tn hiu 1KHz l 100ms v
thi gian pht tn hiu 500Hz l 200ms.

Kha in trn chn 8 (p1.7) dng tt m tn hiu cnh bo.

M:
FLAG BIT 00h ; nh ngh Flag dng lm bit c, hin c tr l 0.
ORG 0000H
START: JB P1.7,START ; Ch t nt K1 t xung mc 0.
JNB FLAG,NEXT ; Nu bit c Flag l 0 th nhy n tn nhn NEXT.
MOV R2,#200 ; Np s thp phn 200 vo thanh ghi r2.
DV: CPL P1.0 ; Ly b chn p1.0, lnh b bit c chc nng t o.
LCALL DELY500 ; Cho gi chng trnh lm tr 500us.
LCALL DELY500 ; gi ln na chng trnh dely500.
DJNZ R2,DV ; Cho m li v thc hin lnh b cpl p1.0 n 200 ln.
CPL FLAG ; o bit trong c Flag.
NEXT: MOV R2,#200 ; Np li s thp phn 200 vo thanh ghi r2.
DV1: CPL P1.0 ; Ly b chn p1.0, c chc nng t o.
LCALL DELY500 ; Cho gi chng trnh lm tr 500us.
DJNZ R2,DV1 ; Cho m li v thc hin b cpl p1.0 n 200 ln.
CPL FLAG ; Li cho o bit trong c Flag.
SJMP START ; Lp li lnh t tn nhn START.
DELY500: MOV R7,#250 ; Vit chng trnh con lm tr 500us. Np s 250 v thanh ghi
r7.
LOOP: NOP ; Lnh trng, dng n lm tng thi gian tr ln gp i.
DJNZ R7,LOOP ; m li r7 lm tr.
RET ; Cho quay li thc hin dng lnh sau lnh call.

END ; Dng bin dch

Phn tch cch vit cc cu lnh:

Trong bi ny, Bn thy dng khai bo bit nh ngha tn t t ca Bn, nh:

flag BIT 0 ; Ch flag do Bn t t l mt BIT, hin c gi tr l bit 0.

Bn dng lnh nhy theo bit kim tra kha in K1.

start: jb p1.7, start ; Lnh ny s ch chn p1.7 xung bit 0, nu khng n s lun dng li
y.

cpl p1.0 ; Lnh ly b trn chn p1.0, ngha l n ang mc 0 th cho chuyn ln 1 v ngc
li.

Phn tch cc cu lnh trn Bn thy:

Loa s h vi tn hiu 1000us (do 2 ln gi dely500) v ko di 200 ln ri chuyn qua h vi
tn hiu 500us (do ch gi dely500 c 1 ln) cng thc hin 200 ln. Vi cch to ra tn hiu
h 2 nhp ny, Bn s nghe ting h t Loa pht ra, tn hiu nghe nh ting ci h cnh bo..

7: Vit chng trnh dng cch ly d liu khai bo trong bng, tt m 8 Led
trn port 1.
* Nhy nhy qua tri 2 ln.

* Nhy nhy qua phi 2 ln.

* Ton phn nhp nhy 2 ln.
(Thi gian tr 0.2 giy).

PHP:
ORG 0000h [/LEFT]
START: MOV DPTR,#TABLE ; Lnh cho t a ch bng vo thanh ghi con tr.
LOOP: CLR A ; cho xa ni dung trong thanh ghi a, lc ny a = 00000000b
MOVC A,@A+DPTR ; Cho ly ni dung trong bng theo tr trong a, v cho ct kt
qu vo a.
CJNE A,#01H,LOOP1 ; Nu a cha bng 01h th nhy qua tn nhn LOOP1.
JMP START ; Nu trong a bng 01h th nhy v tn nhn START.
LOOP1: MOV P1,A ; Chuyn ni dung trong a ra trn cng port 1.
MOV R3,#20 ; Np s thp phn 20 vo thanh ghi r3.
LCALL DELAY ; Gi chng trnh lm tr, tn nhn l delay.
INC DPTR ; cho tng a ch bng ln +1.
JMP LOOP ; Nhy v tn nhn LOOP.
DELAY: MOV R4,#20 ; Vit chng trnh con dng lm tr, tn nhn l delay
D1: MOV R5,#248 ; Np tr thp phn 248 vo r5.
DJNZ R5,$ ; Cho gim theo bc -1, ch r5 bng 0.
DJNZ R4,D1 ; Cho r4 gim theo bc -1, cha bng 0, nhy v D1.
DJNZ R3,DELAY ; Cho r3 gim theo bc -1, cha bng 0, nhy v DELAY.
RET ; Quay li chy cu lnh nm sau lnh call.

TABLE: DB 0FEH,0FDH,0FBH,0F7H ; Khai bo cc d liu t trong bng, tn bng
l TABLE.
DB 0EFH,0DFH,0BFH,07FH ; cc d liu ln lt sp trong bng.
DB 0FEH,0FDH,0FBH,0F7H ; cc d liu ln lt sp trong bng.
DB 0EFH,0DFH,0BFH,07FH ; cc d liu ln lt sp trong bng.
DB 07FH,0BFH,0DFH,0EFH ; cc d liu ln lt sp trong bng.
DB 0F7H,0FBH,0FDH,0FEH ; cc d liu ln lt sp trong bng.
DB 07FH,0BFH,0DFH,0EFH ; cc d liu ln lt sp trong bng.
DB 0F7H,0FBH,0FDH,0FEH ; cc d liu ln lt sp trong bng.
DB 00H, 0FFH,00H, 0FFH ; cc d liu ln lt sp trong bng.
DB 01H ; D liu dng soa snh nhy (Xem cu lnh trn).
[LEFT]END ; Dng bin dch ti y.
Phn tch cch vit cc cu lnh:

Trong bi ny, chng ta cho ly d liu lit k trong bng lm sng cc Led trn port 1.
Trnh t lm nh sau:

Trc ht Bn chn cch lm sng tt cho 8 Led trn port 1 vi m 0/1. Chng ta nh bit 0
lm Led sng v bit 1 s lm Led tt. Th d: Mun Led sng nhy qua tri, chng ta s chn
m iu khin nh sau:

11111110b i ra dng m h 16 s l 0FEH.

11111101b i ra dng m h 16 s l 0FDH.
11111011b i ra dng m h 16 s l 0FBH.
11110111b i ra dng m h 16 s l 0F7H.
11101111b i ra dng m h 16 s l 0EFH.

11011111b i ra dng m h 16 s l 0DFH.
10111111b i ra dng m h 16 s l 0BFH.
01111111b i ra dng m h 16 s l 07FH.

Bn c lit k ra trong bng. Sau ny s dng lnh: movc a, @a + dptr. ly cc m ny
ct vo a. ngha ca cu lnh ny nh sau:

Nu khi u a=0 th n s ly m d liu u trong bng v ri ct vo thanh ghia.
Bn dng lnh inc dptr d cho tr trong a tng ln +1.
Vy khi dng cu lnh: movc a, @a +dptr, Bn s cho ly m d liu tip theo...

Sau mi ln ly d liu t bng ra, Bn dng cu lnh nhy theo php so snh: cjne a, #01h,
loop1 xem ly n m d liu cui cng cha, v Bn t m 01H cui bng.

Ghi nhn: Dng cch vit ny, Bn rt d chn cc kiu nhp nhy cho cc Led trn port 1.
Bn ch cn khai bo cc m iu khin trong bng l c. bn c th khai bo theo dng m
nh phn cho d nhn thy s sng tt ca cc Led.

8: Vit chng trnh trn n s dng Led 7 on ln lt xut hin cc con s
0, 1, 2, 3...
Vit chng trnh trn n s dng Led 7 on ln lt xut hin cc con s 0, 1, 2,
3...Thi gian thay i s l 0.2s.

Ch : Dng loi n s Led 7 on c Cathode chung, vy Led sng vi mc 1.


Phn tch cch vit cc cu lnh:
hin cc s thp lc phn trn n s 7 on vi chn cathode (K) m cc s s nh sau:
PHP:
0 hay 3 FH[/LEFT]
1 hay 06H
2 hay 5BH
3 hay 4FH
4 hay 66H
5 hay 6DH
6 hay 7DH
7 hay 07H
8 hay 7FH
9 hay 6FH
A hay 77H
b hay 7CH
C hay 39H
d hay 5EH
E hay 79H
F hay 71H
[LEFT]
Do vy to ra bng hin th cc s thp phn, chng ta s vit nh sau:
TABLE DB 3FH06H5BH4FH66H6DH7DH07H7FH6FH
PHP:
ORG 0000h [/LEFT]
START: MOV R1,#00H ; t tr khi u 0 cho thanh ghi r1
NEXT: MOV A,R1 ; Cho chuyn ni dung trong r1 vo a.
MOV DPTR,#TABLE ; t a ch ca bng vo thanh ghi con tr dptr.
MOVC A,@A+DPTR ; Ly cc m d liu trong bng theo tr ca a v d liu ct
vo a.
MOV P2,A ; Xut d liu trong a ra port 2 cho hin s.
LCALL DELAY ; Cho gi chng trnh lm tr, tn nhn l delay.
INC R1 ; Cho tng tr trong r1 theo kiu +1.
CJNE R1,#10,NEXT ; So snh tr trong r1, xem bng 10 cha? cha, nhy v NEXT
.
LJMP START ; Lnh nhy khng iu kin v cu lnh c tn nhn l START.
DELAY: MOV R5,#20 ; Vit chng trnh lm tr. Bn xem li cc phn th d tr
n.
D2: MOV R6,#20
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
DJNZ R5,D2
RET
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ; Bng m cho hin cc s t
hp phn.
END ; Dng bin dch.
[LEFT]
Ni r hn v loi n hin s dng Led 7 on (Bn xem hnh):

Khi chn trn port 2 mc p cao, th Led tng ng s pht sng. Vy chng ta c th t
m trn n Led 7 on ln lt hin ra cc con s thp phn.



Hnh cho thy cc m tng ng vi cc con s thp phn hin trn bng n s dng Led 7
on.

9: Vit mch m s hin thi theo h c 2 vi 4 Led trn cc chn 1 (p1.0), 2
(p1.1), 3 (p1.2), 4 (p1.3)
Vit mch m s hin thi theo h c 2 vi 4 Led trn cc chn 1 (p1.0), 2 (p1.1), 3 (p1.2), 4
(p1.3). Mi ln nhn kha in SP1 trn chn 17 (p3.7) th s tng ln +1.


PHP:
ORG 0000h [/LEFT]
START: MOV R1,#00H ; Cho khi u vi tr 0 trong thanh ghi r1.
MOV A,R1 ; chuyn ni dung trong r1 vo a.
CPL A ; Ly b 8 bit trong thanh ghi a.
MOV P1,A ; Xut ni dung trong a ra cng port 1.
REL: JNB P3.7,REL ; Ch bun phm nhn chn p3.7.
LCALL DELAY10MS ; Gi chng trnh con lm tr 10ms.
JNB P3.7,REL ; Trnh nh hng ca rung phm.
INC R1 ; Cho tng tr trong thanh ghi r1
MOV A,R1 ; Cho chuyn ni dung trong r1 vo a.
CPL A ; Ly b 8 bit trong thanh ghi a
MOV P1,A ; Xut ni dung trong a ra cng port 1.
JNB P3.7,$ ; Ch bung phm SP1
SJMP REL ; Nhy khng iu kin v dng lnh tn nhn l REL
DELAY10MS: MOV R6,#20 ; Vit chng trnh lm tr 10ms
L1: MOV R7,#248
DJNZ R7,$
DJNZ R6,L1
RET

END ; Dng bin dch ti dng ny.
[LEFT]
Phn tch cch vit cc cu lnh:

Ni dung bi vit l c nhn mt ln phm SP1, mch m s h c 2 s nhy ln 1 s (Bn
xem hnh).

y c 2 cu hi, ti hi Bn:


(1) Vn rung phm l g?

(2) Ti sao phi ly b a ri mi cho xut trn cng port1?


Vn rung phm l do phn tip xc xu, khi Bn nhn xung, phm s b rung, n ngt m
nhiu ln v to ra kt qu sai. Do vy Bn phi vit on chng trnh ch 10ms ri mi xc
lp trng hi ca phm, iu ny s tng n nh khi dng loi phm c kh. Cch vit nh
sau:


REL: JNB P3.7,REL

; Khi bn nhn xung, nu phm tt, n s bit 0 v s trng thi ch bung phm. Nu c
rung phm, n s nhy xung cu lnh di l cho gi chng trnh tr 10ms.


LCALL DELAY10MS ; Gi chng trnh con lm tr 10ms.

; Sau chng trnh tr n s quay li li kim tra phm vi cu lnh: JNB P3.7,REL

Nu n bit 0 th quay li REL v li ch bung phm. Ch khi n Bit 1 th mi cho tng
tr trong r1.


..... .


JNB P3.7,$

; Cu lnh ny l nhy tai ch khi Bn cha b phm nhn SP1 ra.


Tr li cu hi th 2: Ti sao phi ly b a (cpl a) ri mi cho xut ra trn cng port1.

y chng ta kch Led bng mc p thp, do khi tng 1, n s l:

00000000b --> 00000001b Vy phi ly b ca n s l 11111110b iu ny s ch c Led
p1.0 sng m thi n ng vi 1 ln nhn phm.

Nu 2 ln nhn phm kt qu l:

00000010b --> ly b l 11111101b. Vy Led p1.1 s sng. Bn c l lun tip tc s thy
mch ny dng m h c 2, kt qu cho hin th trn cc Led ca port 1.

v nu Bn thy thch, Bn c th gn 8 Led trn port 1 v s thy hin tng trng s.
Thanh ghi 8 bit ch m c 256 nhp s trang s, quay v 0 v bt u m tip...


10: Vit chng trnh , mi ln nhn kha in SP1 trn chn 17 (p3.7) th Led
D1 trn chn 1 (p1.0), nhp nhy
Vit chng trnh , mi ln nhn kha in SP1 trn chn 17 (p3.7) th Led D1
trn chn 1 (p1.0), nhp nhy. Khi nhn SP1 ln na n Led D2 trn chn 2
nhp nhy, nhn SP1 ln na n Led D3 trn chn 3 nhp nhy v nhn SP1 ln
na th n Led D4 trn chn 4 nhp nhy, v qui trnh tip tc lp li nh trn.



PHP:
ID EQU 30H ; Ly thanh nh c a ch 30h nh ngha l thanh ID.[/LEFT]
K1 BIT P3.7 ; Chn p3.7 nh ngha vi tn l K1
L1 BIT P1.0 ; Chn p1.0 nh ngha vi tn l L1.
L2 BIT P1.1 ; Chn p1.1 nh ngha vi tn l L2.
L3 BIT P1.2 ; Chn p1.2 nh ngha vi tn l L3.
L4 BIT P1.3 ; Chn p1.3 nh ngha vi tn l L4.
ORG 0000h
MOV ID,#00H ; Tr khi u ca ID l 0.
START: JB K1,REL ; Cha nhn phm th nhy n tn nhn REL.
LCALL DELAY10MS ; Gi chng trnh lm tr 10ms (trnh rung phm).
JB K1,REL ; Cha nhn phm th nhy n tn nhn REL.
INC ID ; Tng tr trong ID.
MOV A,ID ; Cho chuyn ni dung trong ID v thanh ghi a.
CJNE A,#04,REL ; Cho so snh a vi #04 pht hin s ln nhn K1
MOV ID,#00H ; Tr tr trong ID v tr o.
REL: JNB K1,$ ; Ch bung phm K1
MOV A,ID ; Cho chuyn ni dung trong ID v thanh ghi a.
CJNE A,#00H,IS0 ; Cho so snh a vi #00 pht hin s ln nhn K1
CPL L1 ; Ly b L1 tt/m Led D1
LCALL DELAY ; Gi chng trnh lm tr vi tn nhn l delay.
SJMP START ; Nhy khng iu kin v tn nhn START
IS0: CJNE A,#01H,IS1 ; Cho so snh a vi #01 pht hin s ln nhn K1
CPL L2 ; Ly b L2 tt/m Led D2
LCALL DELAY ; Gi chng trnh lm tr vi tn nhn l delay.
SJMP START ; Nhy khng iu kin v tn nhn START
IS1: CJNE A,#02H,IS2 ; Cho so snh a vi #02 pht hin s ln nhn K1
CPL L3 ; Ly b L3 tt/m Led D3
LCALL DELAY ; Gi chng trnh lm tr vi tn nhn l delay.
SJMP START ; Nhy khng iu kin v tn nhn START
IS2: CJNE A,#03H,IS3 ; Cho so snh a vi #03 pht hin s ln nhn K1
CPL L4 ; Ly b L4 tt/m Led D4
LCALL DELAY ; Gi chng trnh lm tr vi tn nhn l delay.
SJMP START ; Nhy khng iu kin v tn nhn START
IS3: LJMP START ; Nhy khng iu kin v tn nhn START

DELAY10MS: MOV R6,#20 ; Chng trnh lm tr
LOOP1: MOV R7,#248
DJNZ R7,$
DJNZ R6,LOOP1
RET
DELAY: MOV R5,#20
LOOP2: LCALL DELAY10MS
DJNZ R5,LOOP2
RET
END ; Dng bin dch ti y.
[LEFT]
Phn tch cch vit cc cu lnh:

Bn hy ch n lnh so snh c iu kin, dng pht hin cc m trng nhau hay khc
nhau v t a ra hng s l vn . Th d:

CJNE A,#00H,IS0

; Cho so snh a vi s #00, nu khc th nhy n tn nhn IS0, nu ng th xung thi hnh
dng lnh bn di.

CPL L1 ; Ly b L1 tt/m Led D1.

LCALL DELAY ; Gi chng trnh lm tr vi tn nhn l delay.

SJMP START ; Nhy khng iu kin v tn nhn START.

Vous aimerez peut-être aussi