Sie sind auf Seite 1von 5

PIC Assembly Language Program: Reading from the I/O ports

TASK 1

Write and execute an assembly language program to control the status of the four LEDs with four
corresponding switches.

Code:

PORTB EQU 06H


TRISB EQU 86H
TRISC EQU 87H
PORTC EQU 07H

;***************************

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.

PCL EQU 02H


PORTC EQU 07H
TRISC EQU 87H
TRISD EQU 08H
PORTD EQU 88H
COUNT1 EQU 20H
COUNT2 EQU 21H
COUNT3 EQU 22H
TEMP EQU 23H

;***************************

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

Das könnte Ihnen auch gefallen