HomeArticlesProjectsBlogContact
Articles
Stress Meter P2
Colin Mitchell
Colin Mitchell
Make sure to subscribe to our newsletter and be the first to know the news.

This project uses the “18 LED Display-1”

Page 1


    ;18LED12F629.asm
    ;STRESS with secret program when touching touch pads on start-up
    ;This program creates a display on 18 LEDs  1-1-2006
    ;LED pattern corresponds to PC board


    list    p=12F629
    radix   dec
    include "p12f629.inc"

    __CONFIG    _MCLRE_OFF & _CP_OFF & _WDT_OFF
        & _INTRC_OSC_NOCLKOUT  ;Internal osc.


                ; globals

soundhigh       equ     20h ;this is the first available file
soundlow        equ     21h


fileA           equ 26h ;delay fileA
fileB           equ 27h ;delay fileB
fileC           equ 28h ;delay fileC

delA            equ 36h
delB            equ 37h
long_delC       equ 38h
short_delD  equ 39h



beeplength  equ 3Ah ;length of beep
beephigh        equ 3Bh ;HIGH time
beeplow         equ 3Ch ;LOW time

tmr0            equ 01h

randomNo        equ 3Dh

temp              equ   3Eh ;temporary file for decrementing
tempRand        equ 3Fh

status        equ   03h
OPTION_REG  equ 81h
osccal        equ   90h


                ; bits on GPIO

lineA           equ 0   ;GP0
lineB           equ 1   ;GP1
lineC           equ 2   ;GP2
input           equ 3   ;GP3
lineD           equ 4   ;GP4
lineE           equ 5   ;GP5


                ;bits
rp0     equ 5



Start   org 0x00        ;program starts at location 000
    nop
    nop
    nop
    nop                 ;NOPs to get past reset vector address
    nop
    nop


SetUp   clrf    GPIO        ;clear port of junk
    movlw   0x24
    movwf   osccal      ;calibrate oscillator
    movlw   2Fh         ;put 0010 1111 into W
    andwf   tmr0,0      ;mask bits to get max 0010 1111 for table jump
    movwf   randomNo    ;move number to Random Number file
    movlw   b'11111111' ;This will make GP3 input
    tris    05h
    btfss   GPIO,3
    goto    Main1
    goto    New

            ;Random Number Table

Table1  addwf   02,1
    retlw   05
    retlw   07
    retlw   06
    retlw   04
    retlw   02
    retlw   0Bh
    retlw   01
    retlw   12h
    retlw   0Ch
    retlw   10h
    retlw   11h
    retlw   09h
    retlw   0Ah
    retlw   06h
    retlw   0Bh
    retlw   0Dh
    retlw   12h
    retlw   01
    retlw   12h
    retlw   09
    retlw   08
    retlw   07
    retlw   0Dh
    retlw   06
    retlw   0Fh
    retlw   08
    retlw   0Bh
    retlw   05
    retlw   07
    retlw   0Ah
    retlw   11h
    retlw   0Ah
    retlw   11h
    retlw   02
    retlw   0Dh
    retlw   06
    retlw   02
    retlw   01
    retlw   0Bh
    retlw   12h
    retlw   06
    retlw   07
    retlw   0Eh
    retlw   05
    retlw   0Eh
    retlw   0Ch
    retlw   04
    retlw   09
    retlw   0Eh
    retlw   10h
    retlw   0Bh
    retlw   11h
    retlw   03
    retlw   04
    retlw   0Eh
    retlw   07
    retlw   0Ah
    retlw   03
    retlw   11h
    retlw   05
    retlw   0Fh
    retlw   02
    retlw   0Dh
    retlw   0Dh
    retlw   02
    retlw   08
    retlw   0Fh
    retlw   01
    retlw   0Fh
    retlw   0Ch
    retlw   12h
    retlw   04
    retlw   05
    retlw   0Fh
    retlw   08
    retlw   09
    retlw   10h
    retlw   01
    retlw   03
    retlw   10h
    retlw   04
    retlw   03
    retlw   0Eh
    retlw   03
    retlw   0Ch
    retlw   10h
    retlw   0FFh


Around1 call    Beep
    call    LED1
    call    Del_1

    call    Beep
    call    LED2
    call    Del_1


    call    Beep
    call    LED3
    call    Del_1


    call    Beep
    call    LED4
    call    Del_1



    call    Beep
    call    LED5
    call    Del_1

    call    Beep
    call    LED6
    call    Del_1


    call    Beep
    call    LED7
    call    Del_1


    call    Beep
    call    LED8
    call    Del_1

    call    Beep
    call    LED9
    call    Del_1


    call    Beep
    call    LED10
    call    Del_1


    call    Beep
    call    LED11
    call    Del_1

    call    Beep
    call    LED12
    call    Del_1

    call    Beep
    call    LED13
    call    Del_1

    call    Beep
    call    LED14
    call    Del_1

    call    Beep
    call    LED15
    call    Del_1


    call    Beep
    call    LED16
    call    Del_1

    call    Beep
    call    LED17
    call    Del_1

    call    Beep
    call    LED18
    call    Del_1



    retlw   00


Around2 nop
Around3 call    Beep
    call    LED1
    call    Del_2

    call    Beep
    call    LED2
    call    Del_2

    call    Beep
    call    LED3
    call    Del_2

    call    Beep
    call    LED4
    call    Del_2

    call    Beep
    call    LED5
    call    Del_2

    call    Beep
    call    LED6
    call    Del_2

    call    Beep
    call    LED7
    call    Del_2

    call    Beep
    call    LED8
    call    Del_2

    call    Beep
    call    LED9
    call    Del_2

    call    Beep
    call    LED10
    call    Del_2

    call    Beep
    call    LED11
    call    Del_2

    call    Beep
    call    LED12
    call    Del_2

    call    Beep
    call    LED13
    call    Del_2

    call    Beep
    call    LED14
    call    Del_2

    call    Beep
    call    LED15
    call    Del_2

    call    Beep
    call    LED16
    call    Del_2

    call    Beep
    call    LED17
    call    Del_2

    call    Beep
    call    LED18
    call    Del_2

    retlw   00


Around4 call    Beep
    call    LED1
    call    Del_3
    decfsz  tempRand,1
    goto    A2
    goto    show

A2  call    Beep
    call    LED2
    call    Del_3
    decfsz  tempRand,1
    goto    A3
    goto    show

A3  call    Beep
    call    LED3
    call    Del_3
    decfsz  tempRand,1
    goto    A4
    goto    show

A4  call    Beep
    call    LED4
    call    Del_3
    decfsz  tempRand,1
    goto    A5
    goto    show

A5  call    Beep
    call    LED5
    call    Del_3
    decfsz  tempRand,1
    goto    A6
    goto    show

A6  call    Beep
    call    LED6
    call    Del_3
    goto    show

A7  call    Beep
    call    LED7
    call    Del_3
    decfsz  tempRand,1
    goto    A8
    goto    show

A8  call    Beep
    call    LED8
    call    Del_3
    decfsz  tempRand,1
    goto    A9
    goto    show

A9  call    Beep
    call    LED9
    call    Del_3
    decfsz  tempRand,1
    goto    A10
    goto    show

A10 call    Beep
    call    LED10
    call    Del_3
    decfsz  tempRand,1
    goto    A11
    goto    show

A11 call    Beep
    call    LED11
    call    Del_3
    decfsz  tempRand,1
    goto    A12
    goto    show

A12 call    Beep
    call    LED12
    call    Del_3
    decfsz  tempRand,1
    goto    A13
    goto    show

A13 call    Beep
    call    LED13
    call    Del_3
    decfsz  tempRand,1
    goto    A14
    goto    show

A14 call    Beep
    call    LED14
    call    Del_3
    decfsz  tempRand,1
    goto    A15
    goto    show

A15 call    Beep
    call    LED15
    call    Del_3
    decfsz  tempRand,1
    goto    A16
    goto    show

A16 call    Beep
    call    LED16
    call    Del_3
    goto    show



Beep    movlw   b'11111110'
    tris    05h         ;make GPO output
    movlw   020h
    movwf   beeplength
Beep1   bsf GPIO,0      ;Piezo HIGH
    movlw   80h
    movwf   beephigh
Beep2   nop
    decfsz  beephigh,1
    goto    Beep2
    bcf GPIO,0
    movlw   80h
    movwf   beeplow     ;Piezo LOW
Beep3   nop
    decfsz  beeplow,1
    goto    Beep3
    decfsz  beeplength,1
    goto    Beep1
    retlw   00


    ;Delay 1

Del_1   movlw   20h
    movwf   fileB
DelX    decfsz  fileA,1     ; ,1 denotes the result of the decrement
    goto    DelX
    decfsz  fileB,1
    goto    DelX
    retlw   00

 ;Delay 2

Del_2   incf    fileC
    incf    fileC
    incf    fileC
    incf    fileC
    incf    fileC
    movf    fileC,0
    movwf   fileB
DelY    decfsz  fileA,1     ; ,1 denotes the result of the decrement
    goto    DelY
    decfsz  fileB,1
    goto    DelY
    retlw   00

    ;Delay 3

Del_3   incf    fileC
    incf    fileC
    incf    fileC
    incf    fileC
    movf    fileC,0
    movwf   fileB
DelZ    nop
    nop
    nop
    nop
    decfsz  fileA,1     ; ,1 denotes the result of the decrement
    goto    DelZ
    decfsz  fileB,1
    goto    DelZ
    retlw   00

 ;Activating the LEDs:

LED1    movlw   b'11111100' ;Put into W to turn on LED 1
    tris    05h
    movlw   b'00000001'
    movwf   05h     ;make GP0 HIGH  make GP1 LOW
    retlw   00

LED2    movlw   b'11111100' ;Put into W to turn on LED 2
    tris    05h
    movlw   b'00000010'
    movwf   05h     ;make GP0 LOW  make GP1 HIGH
    retlw   00

LED3    movlw   b'11011110' ;Put into W to turn on LED 3
    tris    05h
    movlw   b'00100000'
    movwf   05h     ;make GP1 LOW  make GP5 HIGH
    retlw       00

LED4    movlw   b'11011110' ;Put into W to turn on LED 4
    tris    05h
    movlw   b'00000001'
    movwf   05h     ;make GP1 LOW  make GP5 HIGH
    retlw       00

LED5    movlw   b'11011011' ;Put into W to turn on LED 5
    tris    05h
    movlw   b'00100000'
    movwf   05h     ;make GP2 LOW  make GP5 HIGH
    retlw       00

LED6    movlw   b'11011011' ;Put into W to turn on LED 6
    tris    05h
    movlw   b'00000100'
    movwf   05h     ;make GP2 HIGH  make GP5 LOW
    retlw       00

LED7    movlw   b'11101011' ;Put into W to turn on LED 7
    tris    05h
    movlw   b'00010000'
    movwf   05h     ;make GP2 LOW  make GP4 HIGH
    retlw       00

LED8    movlw   b'11101011' ;Put into W to turn on LED 8
    tris    05h
    movlw   b'00000100'
    movwf   05h     ;make GP2 HIGH  make GP4 LOW
    retlw       00

LED9    movlw   b'11101101' ;Put into W to turn on LED 9
    tris    05h
    movlw   b'00010000'
    movwf   05h     ;make GP1 LOW  make GP4 HIGH
    retlw       00

LED10   movlw   b'11101101' ;Put into W to turn on LED 10
    tris    05h
    movlw   b'00000010'
    movwf   05h     ;make GP1 LOW  make GP5 HIGH
    retlw       00

LED11   movlw   b'11001111' ;Put into W to turn on LED 11
    tris    05h
    movlw   b'00100000'
    movwf   05h     ;make GP4 LOW  make GP5 HIGH
    retlw       00

LED12   movlw   b'11001111' ;Put into W to turn on LED 12
    tris    05h
    movlw   b'00010000'
    movwf   05h     ;make GP4 HIGH  make GP5 LOW
    retlw       00

LED13   movlw   b'11011101' ;Put into W to turn on LED 13
    tris    05h
    movlw   b'00100000'
    movwf   05h     ;make GP1 LOW  make GP5 HIGH
    retlw       00

LED14   movlw   b'11011101' ;Put into W to turn on LED 14
    tris    05h
    movlw   b'00000010'
    movwf   05h     ;make GP1 HIGH  make GP5 LOW
    retlw       00

LED15   movlw   b'11111001' ;Put into W to turn on LED 15
    tris    05h
    movlw   b'00000010'
    movwf   05h     ;make GP1 HIGH  make GP2 LOW
    retlw       00

LED16   movlw   b'11111001' ;Put into W to turn on LED 16
    tris    05h
    movlw   b'00000100'
    movwf   05h     ;make GP1 LOW  make GP2 HIGH
    retlw       00

LED17   movlw   b'11111010' ;Put into W to turn on LED 17
    tris    05h
    movlw   b'00000001'
    movwf   05h     ;make GP0 HIGH  make GP2 LOW
    retlw       00

LED18   movlw   b'11111010' ;Put into W to turn on LED 18
    tris    05h
    movlw   b'00000100'
    movwf   05h     ;make GP0 LOW   make GP2 HIGH
    retlw       00



New call    sound       ;this is where your new program is placed
    call    Del_1
    goto    New

show    movlw   40h
    movwf   long_delC
show2   call    Del_1
    decfsz  long_delC
    goto    show2
    retlw   00


sound   movlw   b'11111110'
    tris    05h         ;make GPO output
    movlw   0F0h
    movwf   temp
sound1  bsf GPIO,0      ;Piezo HIGH
    movf    temp,0      ;
    movwf   soundhigh
sound2  nop
    nop
    nop
    nop
    nop
    decfsz  soundhigh,1
    goto    sound2
    bcf GPIO,0
    movf    temp,0
    movwf   soundlow        ;Piezo LOW
sound3  nop
    nop
    nop
    nop
    nop
    decfsz  soundlow,1
    goto    sound3
    decfsz  temp,1
    goto    sound1
    retlw   00



Main    incf    randomNo    ;
    call    sound
    call    sound
    call    Del_3
    movlw   b'11111111'     ;make all lines "input" to turn off LEDs
    tris    05h
Main1   call    Beep
    call    Del_3
    call    Beep
    call    Del_3
    call    Del_3
    movlw   b'11111111'     ;This will make GP3 input
    tris    05h
    btfss   GPIO,3
    goto    Main1
Main2   movf    randomNo,0  ;move random number to W
    call    Table1
    movwf   tempRand        ;put LED number into temp file for decrementing
    xorlw   0FFh            ;end of table?
    btfsc   03,2
    goto    Main3
    goto    Main4
Main3   clrf    randomNo
    incf    randomNo
    goto    Main2
Main4   call    Around1
    movlw   30h
    movwf   fileC
    call    Around2
    call    Around3
    movlw   50h             ;create delay for final loop of display
    movwf   fileC
    call    Around4

    call    sound
    goto    Main

        ;OSCCAL calibration value

    org 0x3ff
    movlw   0x24


    end

Colin Mitchell

Colin Mitchell

Expertise

electronics
writing
PIC-Chips

Social Media

instagramtwitterwebsite

Related Posts

TODO
Transistor Test
© 2021, All Rights Reserved.

Quick Links

Advertise with usAbout UsContact Us

Social Media