0% found this document useful (0 votes)
15 views13 pages

HW7

SSC_HW7

Uploaded by

daniel20030411
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views13 pages

HW7

SSC_HW7

Uploaded by

daniel20030411
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 13

Experiment1: 50% High Level Width

Code:
ORG 0000H //student number is 41075043
MOV DPTR, #LOOK
MOV R0, #3 //so the cycle count is 3

LOOP:
MOV R5, #4 //first four digits
MOV R4, #1
MOV R3, #0
MOV R2, #7
ACALL UPDATE

MOV R5, #1 //shift left


MOV R4, #0
MOV R3, #7
MOV R2, #5
ACALL UPDATE

MOV R5, #0 //shift left


MOV R4, #7
MOV R3, #5
MOV R2, #0
ACALL UPDATE

MOV R5, #7 //shift left


MOV R4, #5
MOV R3, #0
MOV R2, #4
ACALL UPDATE

MOV R5, #5 //shift left


MOV R4, #0
MOV R3, #4
MOV R2, #3
ACALL UPDATE
DJNZ R0, CONTI //In order to show just until the
//last digit, a stop condition is
SETB P2.3 //added here
SETB P2.2
SETB P2.1
SETB P2.0
STOP: SJMP STOP

CONTI: //continue if haven’t cycle 3 time


MOV R5, #0 //shift left
MOV R4, #4
MOV R3, #3
MOV R2, #4
ACALL UPDATE

MOV R5, #4 //shift left


MOV R4, #3
MOV R3, #4
MOV R2, #1
ACALL UPDATE

MOV R5, #3 //shift left


MOV R4, #4
MOV R3, #1
MOV R2, #0
ACALL UPDATE

LJMP LOOP

UPDATE: //update the 7-segment display


MOV 40H, #1 //use 40H, 41H to set delay time
MEDIUM: MOV 41H, #200
AGAIN:
CPL P2.4
CLR P2.3 //set first digit
SETB P2.2
SETB P2.1
SETB P2.0
MOV A, R5
MOVC A, @A+DPTR
MOV P1, A
ACALL SHORT
SETB P2.3 //set second digit
CLR P2.2
SETB P2.1
SETB P2.0
MOV A, R4
MOVC A, @A+DPTR
MOV P1, A
ACALL SHORT

SETB P2.3 //set third digit


SETB P2.2
CLR P2.1
SETB P2.0
MOV A, R3
MOVC A, @A+DPTR
MOV P1, A
ACALL SHORT

SETB P2.3 //set last digit


SETB P2.2
SETB P2.1
CLR P2.0
MOV A, R2
MOVC A, @A+DPTR
MOV P1, A
ACALL SHORT

CPL P2.4
ACALL SHORT

DJNZ 41H, AGAIN


DJNZ 40H, MEDIUM
RET

SHORT: //1264 cycles


MOV R6, #42
SHERE: MOV R7, #13
SHERE2: DJNZ R7, SHERE2
DJNZ R6, SHERE
RET

LOOK: //decimal 0~9 of 7-segment display


DB 11000000B, 11111001B, 10100100B, 10110000B,
10011001B, 10010010B, 10000010B, 11111000B, 10000000B,
10010000B
END //end program

Waveform: 101.317Hz

Video:

https://www.youtube.com/watch?v=0MLOokAuRfA
Experiment 2: 80% High Level Width

Code:
ORG 0000H //student number is 41075043
MOV DPTR, #LOOK
MOV R0, #3 //so the cycle count is 3

LOOP:
MOV R5, #4 //first four digits
MOV R4, #1
MOV R3, #0
MOV R2, #7
ACALL UPDATE

MOV R5, #1 //shift left


MOV R4, #0
MOV R3, #7
MOV R2, #5
ACALL UPDATE

MOV R5, #0 //shift left


MOV R4, #7
MOV R3, #5
MOV R2, #0
ACALL UPDATE

MOV R5, #7 //shift left


MOV R4, #5
MOV R3, #0
MOV R2, #4
ACALL UPDATE

MOV R5, #5 //shift left


MOV R4, #0
MOV R3, #4
MOV R2, #3
ACALL UPDATE
DJNZ R0, CONTI //In order to show just until the
last digit, a stop condition is
SETB P2.3 added here
SETB P2.2
SETB P2.1
SETB P2.0
STOP: SJMP STOP

CONTI: //continue if haven’t cycle 3 time


MOV R5, #0 //shift left
MOV R4, #4
MOV R3, #3
MOV R2, #4
ACALL UPDATE

MOV R5, #4 //shift left


MOV R4, #3
MOV R3, #4
MOV R2, #1
ACALL UPDATE

MOV R5, #3 //shift left


MOV R4, #4
MOV R3, #1
MOV R2, #0
ACALL UPDATE

LJMP LOOP

UPDATE: //update the 7-segment display


MOV 40H, #1 //use 40H, 41H to set delay time
MEDIUM: MOV 41H, #200
AGAIN:
CPL P2.4
CLR P2.3 //set first digit
SETB P2.2
SETB P2.1
SETB P2.0
MOV A, R5
MOVC A, @A+DPTR
MOV P1, A
ACALL SHORT

SETB P2.3 //set second digit


CLR P2.2
SETB P2.1
SETB P2.0
MOV A, R4
MOVC A, @A+DPTR
MOV P1, A
ACALL SHORT

SETB P2.3 //set third digit


SETB P2.2
CLR P2.1
SETB P2.0
MOV A, R3
MOVC A, @A+DPTR
MOV P1, A
ACALL SHORT

SETB P2.3 //set last digit


SETB P2.2
SETB P2.1
CLR P2.0
MOV A, R2
MOVC A, @A+DPTR
MOV P1, A
ACALL SHORT

CPL P2.4
ACALL SHORT

DJNZ 41H, AGAIN


DJNZ 40H, MEDIUM
RET

SHORT: //2020 cycles


MOV R6, #42
SHERE: MOV R7, #22
SHERE2: DJNZ R7, SHERE2
DJNZ R6, SHERE
RET

LOOK: //decimal 0~9 of 7-segment display


DB 11000000B, 11111001B, 10100100B, 10110000B,
10011001B, 10010010B, 10000010B, 11111000B, 10000000B,
10010000B
END //end program

Waveform: 100.654Hz

Video:

https://www.youtube.com/watch?v=ijmuMXLw8aI
Breadboard Circuit Layout:

You might also like