#include "p18F4520.inc" CONFIG OSC = HS CONFIG PWRT = OFF CONFIG WDT = OFF CONFIG PBADEN = OFF CONFIG LVP = OFF org 0x000000 PORST GOTO MAIN ;---------DELAY 80 ms------------------------ IDSHORT equ 0x07D IDLONG equ 0x07E ED80MS CLRF IDSHORT CLRF IDLONG LDLOOP DECFSZ IDSHORT GOTO LDLOOP DECFSZ IDLONG GOTO LDLOOP RETURN ;----END OF DELAY SUBROUTINE----------------- org 0x000020 MAIN BSF TRISA, 0 ; RA0 = input for analog BCF TRISA, 1 ; RA1 = output for LED CLRF TRISD ; Port D I/O = out BSF PORTA, RA1 ; kolumn 1 på CLRF PORTD ; alla rader av MOVLW 0x01 MOVWF ADCON0 MOVLW 0x0E MOVWF ADCON1 MOVLW 0x12 OVER CALL ED80MS BSF ADCON0,GO BACK BTFSC ADCON0,DONE BRA BACK CALL COMVAL ;Anropa subrutiner som jämnför vilket intervall CALL ED80MS NOP NOP BRA OVER ;*******VÄRST SUBRUTINEN!********* COMVAL CLRF PORTD MOVLW 0xE0 ; Intervall 224-255 CPFSLT ADRESH ; Om mindre.. BSF PORTD, 7 ; ..släck! MOVLW 0xC0 ; Intervall 192 CPFSLT ADRESH ; Om mindre.. BSF PORTD, 6 ; ..tänd! MOVLW 0xDF ; till 223 CPFSLT ADRESH ; Om större.. BCF PORTD, 6 ; ..släck! MOVLW 0xA0 ; Intervall 160 CPFSLT ADRESH ; Om mindre.. BSF PORTD, 5 ; ..tänd! MOVLW 0xBF ; till 191 CPFSLT ADRESH ; Om större.. BCF PORTD, 5 ; ..släck! MOVLW 0x80 ; Intervall 128 CPFSLT ADRESH ; Om mindre.. BSF PORTD, 4 ; ..tänd! MOVLW 0x9F ; till 159 CPFSLT ADRESH ; Om större.. BCF PORTD, 4 ; ..släck! MOVLW 0x60 ; Intervall 96 CPFSLT ADRESH ; Om mindre.. BSF PORTD, 3 ; ..tänd! MOVLW 0x7F ; till 127 CPFSLT ADRESH ; Om större.. BCF PORTD, 3 ; ..släck! MOVLW 0x40 ; Intervall 64 CPFSLT ADRESH ; Om mindre.. BSF PORTD, 2 ; ..tänd! MOVLW 0x5F ; till 95 CPFSLT ADRESH ; Om större.. BCF PORTD, 2 ; ..släck! MOVLW 0x20 ; Intervall 32 CPFSLT ADRESH ; Om mindre.. BSF PORTD, 1 ; ..tänd! MOVLW 0x3F ; till 63 CPFSLT ADRESH ; Om större.. BCF PORTD, 1 ; ..släck! MOVLW 0x1F CPFSGT ADRESH ; Om större hoppa.. BSF PORTD, 0 ; ..annars tänd! RETURN ;*********SLUT PÅ ELÄNDET************ end