Beruflich Dokumente
Kultur Dokumente
TASK 1
Write and execute an assembly language program to control the status of the four LEDs with four
corresponding switches.
Code:
;***************************
LIST P=16F877A
ORG 0
GOTO START
__CONFIG H'3F72'
;***************************
START
BANKSEL TRISB
MOVLW B'00000000'
MOVWF TRISB
MOVLW B'11111111'
MOVWF TRISC
BANKSEL PORTB
CLRF PORTB
BEGIN
MOVF PORTC,0
MOVWF PORTB
GOTO BEGIN
END
TASK 2
Take two four_ bit numbers from a single port add them and display the result on LEDs through another
port.
PORTC EQU 7H
PORTD EQU 8H
TRISC EQU 87H
TRISD EQU 88H
COUT1 EQU 23H
COUT2 EQU 24H
LIST P=16F877A
ORG 0
GOTO START
__CONFIG H'3F72'
START
BANKSEL TRISC
MOVLW B'11111111'
MOVWF TRISC
MOVLW B'00000000'
MOVWF TRISD
BANKSEL PORTD
CLRF PORTD
BEGIN
MOVF PORTC,0
MOVWF COUT1
MOVWF COUT2
MOVLW B'00001111'
ANDWF COUT1,1
MOVLW B'11110000'
ANDWF COUT2,1
SWAPF COUT2,0
ADDWF COUT1,0
MOVWF PORTD
GOTO BEGIN
END
TASK 3
Design a 4_bit counter that counts up with switch A and counts down with switch B. If both the switches
are high are low the counter should rest to zero.
;***************************
LIST P=16F877A
ORG 0
GOTO START
__CONFIG H'3F72'
;***************************
DELAY_1S
MOVLW .255
MOVWF COUNT1
MOVWF COUNT2
MOVLW .4
MOVWF COUNT3
LOOP
DECFSZ COUNT1,1
GOTO LOOP
DECFSZ COUNT2,1
GOTO LOOP
DECFSZ COUNT3,1
GOTO LOOP
RETLW 0
;**************************
START
BANKSEL TRISC
MOVLW .0
MOVWF TRISC
MOVLW B'11111111'
MOVFW TRISD
BANKSEL PORTC
CLRF PORTC
CLRF TEMP
BEGIN
MOVF TEMP,0
MOVWF PORTC
CALL DELAY_1S
BTFSS PORTD,0
GOTO G
GOTO H
G
BTFSS PORTD,1
GOTO CLR
GOTO DECR
H
BTFSS PORTD,1
GOTO INCR
GOTO CLR
CLR
CLRF TEMP
GOTO BEGIN
INCR
BTFSC TEMP,0
GOTO F
INCF TEMP,1
GOTO BEGIN
F
BTFSC TEMP,3
CLRF TEMP
BTFSC TEMP,0
INCF TEMP,1
GOTO BEGIN
DECR
BTFSS TEMP,0
GOTO A
DECF TEMP,1
GOTO BEGIN
A
BTFSS TEMP,1
GOTO C
DECF TEMP,1
GOTO BEGIN
C
BTFSS TEMP,2
GOTO D
DECF TEMP,1
GOTO BEGIN
D
BTFSS TEMP,3
GOTO E
DECF TEMP,1
GOTO BEGIN
E
BSF TEMP,0
BSF TEMP,3
GOTO BEGIN
END