Hardware
Testprint K4 monteres med resetknap
og en lysdiode.
Note: RA4 (pin 3) har såkaldt 'open drain output'. Det betyder, at udgangen ikke selv kan levere spænding - den må tilføres udefra. Hvis RA4 skal bruges til at tænde for lysdioden, skal denne og 470 ohms modstanden forbindes mellem pin 3 og +5V. LED katode forbindes til pin 3, LED anode forbindes til modstanden. Lysdioden vil så tænde, når RA4 = low.
Testprint K4 konfigureret til
628LED.asm
Software i assembler
;************************************************************
; Processor: PIC16F628
at 4 MHz using internal RC oscillator
; Function: Flash
a LED connected to RA2
; Hardware: Testboard
K4
; Filename: 628LED.asm
; Author: Lars Petersen, oz1bxm@pobox.com
; Website:
www.oz1bxm.dk/PIC/pic.htm
; Credit:
Tony Nixon's LED flasher
;************************************************************
LIST P=16F628, R=DEC ; Use the PIC16F628 and decimal system
#include "P16F628.INC" ; Include header file
__config _INTRC_OSC_NOCLKOUT & _LVP_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_ON
CBLOCK 0x20
; Declare variable addresses starting at 0x20
Loop1,Loop2
ENDC
;
; -----------
; INITIALIZE
; -----------
;
ORG 0x000
; Program starts at 0x000
CLRF PORTA
; Initialize port A
CLRF PORTB
; Initialize port B
BSF STATUS,RP0 ; RAM bank 1
CLRF TRISA
; All pins port A output
CLRF TRISB
; All pins port B output
BCF STATUS,RP0 ; RAM bank
0
;
; ------------------------
; FUNCTION OF PORT A
PINS
; ------------------------
;
MOVLW 7
MOVWF CMCON
; Comparators off, all pins digital I/O
;
; ----------
; MAIN LOOP
; ----------
;
Main
BSF PORTA,2
; Turn on LED connected to RA2
CALL delay
BCF PORTA,2
; Turn off LED connected to RA2
CALL delay
GOTO Main
;
; ---------------
; DELAY 250 MSEC
; ---------------
;
delay MOVLW
250
MOVWF Loop1
Outer MOVLW
200
MOVWF Loop2
Inner NOP
NOP
DECFSZ Loop2,F
GOTO Inner
; Inner loop = 5 usec.
DECFSZ Loop1,F
GOTO Outer
RETURN
END
Noter
Direktivet _INTRC_OSC_NOCLKOUT
bevirker,
at 16F628 bruger den interne 4 MHz RC oscillator. Så kan RA6 og RA7
bruges til I/O. Disse ben bruges ellers ofte til krystaloscillator.
Hvis alle ben på portA skal fungere som digitale indgange eller udgange, skal man skrive værdien 7 til registeret CMCON. Så frakobles komperatorerne. Det sker under FUNCTION OF PORT A PINS.
Man kan godt undlade ekstern reset på ben 4 (RA5) og i stedet konfigurere benet som input. Dette gøres med parameteren _MCLRE_OFF i linien med __config.
Alle porte kan testes ved at udskifte
hovedløkken MAIN
LOOP med følgende
linier:
;
; ----------
; MAIN LOOP
; ----------
; Apply 2 Hz to all
ports
Main
MOVLW b'01010101'
MOVWF portA
MOVWF portB
CALL delay
MOVLW b'10101010'
MOVWF portA
MOVWF portB
CALL delay
GOTO Main
Download
Download 628led.zip
som indeholder kildekode i assembler samt hexfilen.
Tak
Jeg blev inspireret af Tony Nixon's
LED flasher på http://www.piclist.com/techref/microchip/16F877/flashled.htm