MPASM 02.30.07 Intermediate   DIMMER2.ASM   9-14-2000  16:34:32         PAGE  1


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00001 ;  PIC 16C84 compiler [V1.00 18 September 1999]
                      00002 ;  Source file - C:\uP\PICcompiler\dimmer2.psf
                      00003 ;  File compiled - Thursday 9/14/00 4:34:23 PM
                      00004 ;
                      00005 ;                     16C84
                      00006 ;         ONOFF  1  | i   i | 18  KEYDOWN     
                      00007 ;    ZERODETECT  2  | i   i | 17  KEYUP       
                      00008 ;      FEEDBACK  3  | i   i | 16  osc2        
                      00009 ;          mclr  4  | i   i | 15  osc1        
                      00010 ;           Vss  5  | p   p | 14  Vdd         
                      00011 ;           RB0  6  | i   o | 13  OUTON       
                      00012 ;       OUTPULS  7  | o   o | 12  OUTUP       
                      00013 ;           RB2  8  | i   o | 11  OUTDOWN     
                      00014 ;           RB3  9  | i   i | 10  RB4         
                      00015 ;
                      00016 ;  PIC clock frequency = 4000 kHz
                      00017 ;
                      00018 ;  No compiler errors.
                      00019 
  00000002            00020 _PCL    EQU H'02'
  00000003            00021 _STATUS EQU H'03'
  00000000            00022 _C      EQU H'00'
  00000002            00023 _Z      EQU H'02'
  00000005            00024 _RP0    EQU H'05'
  00000005            00025 PORTA   EQU H'05'
  00000006            00026 PORTB   EQU H'06'
  00000008            00027 _EEDATA EQU H'08'
  00000009            00028 _EEADR  EQU H'09'
  0000000A            00029 _PCLATH EQU H'0A'
  0000000B            00030 _INTCON EQU H'0B'
  00000007            00031 IRQ_ENABLE      EQU H'07'
  00000008            00032 _EECON1 EQU H'08'
  00000009            00033 _EECON2 EQU H'09'
  00000000            00034 _RD     EQU H'00'
  00000001            00035 _WR     EQU H'01'
  00000002            00036 _WREN   EQU H'02'
  0000000C            00037 _STACK0 EQU H'0C'
  0000000D            00038 _STACK1 EQU H'0D'
  0000000E            00039 _STACK2 EQU H'0E'
  0000000F            00040 _STACK3 EQU H'0F'
  00000010            00041 _STACK4 EQU H'10'
  00000011            00042 _STACK5 EQU H'11'
  00000012            00043 _STACK6 EQU H'12'
  00000013            00044 _STACK7 EQU H'13'
  00000014            00045 _STACK8 EQU H'14'
  00000015            00046 _STACK9 EQU H'15'
  00000016            00047 X       EQU H'16'
  00000017            00048 Y       EQU H'17'
  00000018            00049 YH      EQU H'18'
  00000019            00050 ON      EQU H'19'
  0000001A            00051 RESO    EQU H'1A'
  0000001B            00052 RESOH   EQU H'1B'
  0000001C            00053 RESK    EQU H'1C'
MPASM 02.30.07 Intermediate   DIMMER2.ASM   9-14-2000  16:34:32         PAGE  2


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

  0000001D            00054 RESKH   EQU H'1D'
  00000000            00055 KEYUP   EQU H'00'
  00000001            00056 KEYDOWN EQU H'01'
  00000002            00057 ONOFF   EQU H'02'
  00000003            00058 ZERODETECT      EQU H'03'
  00000004            00059 FEEDBACK        EQU H'04'
  00000007            00060 OUTON   EQU H'07'
  00000006            00061 OUTUP   EQU H'06'
  00000005            00062 OUTDOWN EQU H'05'
  00000001            00063 OUTPULS EQU H'01'
                      00064 
0000                  00065         ORG 0
                      00066 
0000   2801           00067         goto MAIN
                      00068 
                      00069 ; Dimmer
                      00070 ; Paul Goossens
                      00071 
                      00072  list p=16F84
                      00073 ; #FUSE CP_OFF + PWRTE_ON + WDT_OFF + XT_OSC
2007   3FF9           00074         __config H'3FF9'
                      00075 
                      00076 ; var x : byte; x geeft aan hoelang de puls vertraagd wordt na de zerodetectie
                      00077 ; var y : word;   y is een kopie van x, gebruikt in de lus van de vertraging
                      00078 ; var on : byte;
                      00079 ; var reso : word; geeft de resolutie van de vertraging aan
                      00080 ; var resk : word; kopie van res.
                      00081 
                      00082 
                      00083 ; PROCEDURE(MAIN)
0001                  00084 MAIN
                      00085 ; alias(RA0,keyup);
                      00086 ; alias(RA1,keydown);
                      00087 ; alias(RA2,onoff);
                      00088 ; alias(RA3,zerodetect);
                      00089 ; alias(RA4,feedback);
                      00090 ; alias(RB7,outon);
                      00091 ; alias(RB6,outup);
                      00092 ; alias(RB5,outdown);
                      00093 ; alias(RB1,outpuls);
                      00094 ; output(outon);
0001   1683           00095         BSF     _STATUS,_RP0
0002   1386           00096         BCF     PORTB,OUTON
                      00097 ; output(outpuls);
0003   1086           00098         BCF     PORTB,OUTPULS
                      00099 ; output(outup);
0004   1306           00100         BCF     PORTB,OUTUP
                      00101 ; output(outdown);
0005   1286           00102         BCF     PORTB,OUTDOWN
                      00103 
                      00104 ; clr(outon);
0006   1283           00105         BCF     _STATUS,_RP0
0007   1386           00106         BCF     PORTB,OUTON
MPASM 02.30.07 Intermediate   DIMMER2.ASM   9-14-2000  16:34:32         PAGE  3


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00107 ; clr(outpuls);
0008   1086           00108         BCF     PORTB,OUTPULS
                      00109 ; clr(on);      standaard uit;
0009   0199           00110         CLRF    ON
                      00111 ; clr(x);               dimmer vol open;
000A   0196           00112         CLRF    X
                      00113 ; reso := 20;
000B   3014           00114         MOVLW   H'14'
000C   008C           00115         MOVWF   _STACK0
000D   3000           00116         MOVLW   H'00'
000E   008D           00117         MOVWF   _STACK1
000F   080C           00118         MOVF    _STACK0,W
0010   009A           00119         MOVWF   RESO
0011   080D           00120         MOVF    _STACK1,W
0012   009B           00121         MOVWF   RESOH
                      00122 
                      00123 ; while true
0013                  00124 _WHILE0
                      00125 ;   if (keyup = 1)
0013                  00126 _IF1
0013   1C05           00127         BTFSS   PORTA,KEYUP
0014   2825           00128         GOTO    _ELSE1
                      00129 ;   begin 
                      00130 ;     outup=1;
0015   1706           00131         BSF     PORTB,OUTUP
                      00132 ;     outdown=0;
0016   1286           00133         BCF     PORTB,OUTDOWN
                      00134 ;     if x>=1 then
0017                  00135 _IF2
0017   0816           00136         MOVF    X,W
0018   008C           00137         MOVWF   _STACK0
0019   3001           00138         MOVLW   H'01'
001A   020C           00139         SUBWF   _STACK0,W
001B   0103           00140         CLRW
001C   1803           00141         BTFSC   _STATUS,_C
001D   3EFF           00142         ADDLW   H'FF'
001E   1903           00143         BTFSC   _STATUS,_Z
001F   2825           00144         GOTO    _ELSE2
                      00145 ;     begin
                      00146 ;       x:=x-1;
0020   0816           00147         MOVF    X,W
0021   008C           00148         MOVWF   _STACK0
0022   3001           00149         MOVLW   H'01'
0023   020C           00150         SUBWF   _STACK0,W
0024   0096           00151         MOVWF   X
                      00152 ;     end
                      00153 ;   end
0025                  00154 _ELSE2
                      00155 ;   if (keydown = 1)
0025                  00156 _ELSE1
0025                  00157 _IF3
0025   1C85           00158         BTFSS   PORTA,KEYDOWN
0026   2833           00159         GOTO    _ELSE3
MPASM 02.30.07 Intermediate   DIMMER2.ASM   9-14-2000  16:34:32         PAGE  4


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00160 ;   begin
                      00161 ;     outdown=1;
0027   1686           00162         BSF     PORTB,OUTDOWN
                      00163 ;     outup=0;
0028   1306           00164         BCF     PORTB,OUTUP
                      00165 ;     if x<=100 then
0029                  00166 _IF4
0029   0816           00167         MOVF    X,W
002A   3C64           00168         SUBLW   H'64'
002B   0103           00169         CLRW
002C   1803           00170         BTFSC   _STATUS,_C
002D   3EFF           00171         ADDLW   H'FF'
002E   1903           00172         BTFSC   _STATUS,_Z
002F   2833           00173         GOTO    _ELSE4
                      00174 ;     begin
                      00175 ;       x:=x+1;
0030   0816           00176         MOVF    X,W
0031   3E01           00177         ADDLW   H'01'
0032   0096           00178         MOVWF   X
                      00179 ;     end
                      00180 ;   end
0033                  00181 _ELSE4
                      00182 
                      00183 ;   if (onoff = 1) then
0033                  00184 _ELSE3
0033                  00185 _IF5
0033   1D05           00186         BTFSS   PORTA,ONOFF
0034   2864           00187         GOTO    _ELSE5
                      00188 ;   begin
                      00189 ;     on:= 1 - on;   Toggle bits.
0035   3001           00190         MOVLW   H'01'
0036   008C           00191         MOVWF   _STACK0
0037   0819           00192         MOVF    ON,W
0038   020C           00193         SUBWF   _STACK0,W
0039   0099           00194         MOVWF   ON
                      00195 ;     outon:=on;
003A   0819           00196         MOVF    ON,W
003B   1D03           00197         BTFSS   _STATUS,_Z
003C   1786           00198         BSF     PORTB,OUTON
003D   1903           00199         BTFSC   _STATUS,_Z
003E   1386           00200         BCF     PORTB,OUTON
                      00201 ;     while (onoff =1)
003F                  00202 _WHILE6
003F   1D05           00203         BTFSS   PORTA,ONOFF
0040   2864           00204         GOTO    _LOOP6
                      00205 ;       y=100
0041   3064           00206         MOVLW   H'64'
0042   008C           00207         MOVWF   _STACK0
0043   3000           00208         MOVLW   H'00'
0044   008D           00209         MOVWF   _STACK1
0045   080C           00210         MOVF    _STACK0,W
0046   0097           00211         MOVWF   Y
0047   080D           00212         MOVF    _STACK1,W
MPASM 02.30.07 Intermediate   DIMMER2.ASM   9-14-2000  16:34:32         PAGE  5


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0048   0098           00213         MOVWF   YH
                      00214 ;       while (y>0)
0049                  00215 _WHILE7
0049   0817           00216         MOVF    Y,W
004A   008C           00217         MOVWF   _STACK0
004B   0818           00218         MOVF    YH,W
004C   008D           00219         MOVWF   _STACK1
004D   3000           00220         MOVLW   H'00'
004E   008E           00221         MOVWF   _STACK2
004F   3000           00222         MOVLW   H'00'
0050   008F           00223         MOVWF   _STACK3
0051   20CC           00224         CALL    _GREAT16
0052   1903           00225         BTFSC   _STATUS,_Z
0053   2863           00226         GOTO    _LOOP7
                      00227 ;         y:=y-1;
0054   0817           00228         MOVF    Y,W
0055   008C           00229         MOVWF   _STACK0
0056   0818           00230         MOVF    YH,W
0057   008D           00231         MOVWF   _STACK1
0058   3001           00232         MOVLW   H'01'
0059   028C           00233         SUBWF   _STACK0,F
005A   1C03           00234         BTFSS   _STATUS,_C
005B   038D           00235         DECF    _STACK1,F
005C   3000           00236         MOVLW   H'00'
005D   028D           00237         SUBWF   _STACK1,F
005E   080C           00238         MOVF    _STACK0,W
005F   0097           00239         MOVWF   Y
0060   080D           00240         MOVF    _STACK1,W
0061   0098           00241         MOVWF   YH
                      00242 ;       loop   
0062   2849           00243         GOTO    _WHILE7
0063                  00244 _LOOP7
                      00245 ;     loop
0063   283F           00246         GOTO    _WHILE6
0064                  00247 _LOOP6
                      00248 ;   end
                      00249 ;   
                      00250 ;   while (zerodetect = 0)
0064                  00251 _ELSE5
0064                  00252 _WHILE8
0064   1985           00253         BTFSC   PORTA,ZERODETECT
0065   2867           00254         GOTO    _LOOP8
                      00255 ;   loop
0066   2864           00256         GOTO    _WHILE8
0067                  00257 _LOOP8
                      00258 ;   
                      00259 ;
                      00260 ;   TEST TEST TESTING......
                      00261 ;
                      00262 
                      00263 
                      00264 
                      00265 ;   y :=(x*2);
MPASM 02.30.07 Intermediate   DIMMER2.ASM   9-14-2000  16:34:32         PAGE  6


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0067   0816           00266         MOVF    X,W
0068   008C           00267         MOVWF   _STACK0
0069   018D           00268         CLRF    _STACK1
006A   3002           00269         MOVLW   H'02'
006B   008E           00270         MOVWF   _STACK2
006C   3000           00271         MOVLW   H'00'
006D   008F           00272         MOVWF   _STACK3
006E   20B3           00273         CALL    _MUL16
006F   080C           00274         MOVF    _STACK0,W
0070   0097           00275         MOVWF   Y
0071   080D           00276         MOVF    _STACK1,W
0072   0098           00277         MOVWF   YH
                      00278 ;   while (y>0) 
0073                  00279 _WHILE9
0073   0817           00280         MOVF    Y,W
0074   008C           00281         MOVWF   _STACK0
0075   0818           00282         MOVF    YH,W
0076   008D           00283         MOVWF   _STACK1
0077   3000           00284         MOVLW   H'00'
0078   008E           00285         MOVWF   _STACK2
0079   3000           00286         MOVLW   H'00'
007A   008F           00287         MOVWF   _STACK3
007B   20CC           00288         CALL    _GREAT16
007C   1903           00289         BTFSC   _STATUS,_Z
007D   288D           00290         GOTO    _LOOP9
                      00291 ;     y:=y-1;
007E   0817           00292         MOVF    Y,W
007F   008C           00293         MOVWF   _STACK0
0080   0818           00294         MOVF    YH,W
0081   008D           00295         MOVWF   _STACK1
0082   3001           00296         MOVLW   H'01'
0083   028C           00297         SUBWF   _STACK0,F
0084   1C03           00298         BTFSS   _STATUS,_C
0085   038D           00299         DECF    _STACK1,F
0086   3000           00300         MOVLW   H'00'
0087   028D           00301         SUBWF   _STACK1,F
0088   080C           00302         MOVF    _STACK0,W
0089   0097           00303         MOVWF   Y
008A   080D           00304         MOVF    _STACK1,W
008B   0098           00305         MOVWF   YH
                      00306 ;   loop
008C   2873           00307         GOTO    _WHILE9
008D                  00308 _LOOP9
                      00309 
                      00310 ;   outpuls=1 ;
008D   1486           00311         BSF     PORTB,OUTPULS
                      00312 ;   y:=30;
008E   301E           00313         MOVLW   H'1E'
008F   008C           00314         MOVWF   _STACK0
0090   3000           00315         MOVLW   H'00'
0091   008D           00316         MOVWF   _STACK1
0092   080C           00317         MOVF    _STACK0,W
0093   0097           00318         MOVWF   Y
MPASM 02.30.07 Intermediate   DIMMER2.ASM   9-14-2000  16:34:32         PAGE  7


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0094   080D           00319         MOVF    _STACK1,W
0095   0098           00320         MOVWF   YH
                      00321 ;   while (y>0)
0096                  00322 _WHILE10
0096   0817           00323         MOVF    Y,W
0097   008C           00324         MOVWF   _STACK0
0098   0818           00325         MOVF    YH,W
0099   008D           00326         MOVWF   _STACK1
009A   3000           00327         MOVLW   H'00'
009B   008E           00328         MOVWF   _STACK2
009C   3000           00329         MOVLW   H'00'
009D   008F           00330         MOVWF   _STACK3
009E   20CC           00331         CALL    _GREAT16
009F   1903           00332         BTFSC   _STATUS,_Z
00A0   28B0           00333         GOTO    _LOOP10
                      00334 ;     y:=y-1;
00A1   0817           00335         MOVF    Y,W
00A2   008C           00336         MOVWF   _STACK0
00A3   0818           00337         MOVF    YH,W
00A4   008D           00338         MOVWF   _STACK1
00A5   3001           00339         MOVLW   H'01'
00A6   028C           00340         SUBWF   _STACK0,F
00A7   1C03           00341         BTFSS   _STATUS,_C
00A8   038D           00342         DECF    _STACK1,F
00A9   3000           00343         MOVLW   H'00'
00AA   028D           00344         SUBWF   _STACK1,F
00AB   080C           00345         MOVF    _STACK0,W
00AC   0097           00346         MOVWF   Y
00AD   080D           00347         MOVF    _STACK1,W
00AE   0098           00348         MOVWF   YH
                      00349 ;   loop  
00AF   2896           00350         GOTO    _WHILE10
00B0                  00351 _LOOP10
                      00352 ;   outpuls :=0;
00B0   1086           00353         BCF     PORTB,OUTPULS
                      00354 
                      00355 ;   
                      00356 ; loop
00B1   2813           00357         GOTO    _WHILE0
00B2                  00358 _LOOP0
                      00359 
                      00360 
00B2   2801           00361         GOTO    MAIN
                      00362 ; 16 * 16 Multiply
00B3                  00363 _MUL16
00B3   0190           00364         CLRF    _STACK4
00B4   0191           00365         CLRF    _STACK5
00B5                  00366 _MUL161
00B5   1003           00367         BCF     3,0
00B6   0C8D           00368         RRF     _STACK1,f
00B7   0C8C           00369         RRF     _STACK0,f
00B8   1C03           00370         BTFSS   3,0
00B9   28C1           00371         GOTO    _MUL162
MPASM 02.30.07 Intermediate   DIMMER2.ASM   9-14-2000  16:34:32         PAGE  8


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

00BA   080E           00372         MOVF    _STACK2,w
00BB   0790           00373         ADDWF   _STACK4,f
00BC   1803           00374         BTFSC   3,0
00BD   0A91           00375         INCF    _STACK5,f
00BE   080F           00376         MOVF    _STACK3,W
00BF   0791           00377         ADDWF   _STACK5,f
00C0   1003           00378         BCF 3,0
00C1                  00379 _MUL162
00C1   0D8E           00380         RLF     _STACK2,f
00C2   0D8F           00381         RLF     _STACK3,f
00C3   080C           00382         MOVF    _STACK0,W
00C4   040D           00383         IORWF   _STACK1,W
00C5   1D03           00384         BTFSS   3,2
00C6   28B5           00385         GOTO    _MUL161
00C7   0810           00386         MOVF    _STACK4,W
00C8   008C           00387         MOVWF   _STACK0
00C9   0811           00388         MOVF    _STACK5,W
00CA   008D           00389         MOVWF   _STACK1
00CB   0008           00390         RETURN
                      00391 ; 16 bit Greater than
00CC                  00392 _GREAT16
00CC   080D           00393         MOVF    _STACK1,W
00CD   020F           00394         SUBWF   _STACK3,W
00CE   1D03           00395         BTFSS   3,2
00CF   28D2           00396         GOTO    _GREAT161
00D0   080C           00397         MOVF    _STACK0,W
00D1   020E           00398         SUBWF   _STACK2,W
00D2                  00399 _GREAT161
00D2   1C03           00400         BTFSS   3,0
00D3   28D7           00401         GOTO    _GREAT162
00D4   018C           00402         CLRF    _STACK0
00D5   018D           00403         CLRF    _STACK1
00D6   0008           00404         RETURN
00D7                  00405 _GREAT162
00D7   38FF           00406         IORLW   H'FF'
00D8   008C           00407         MOVWF   _STACK0
00D9   008D           00408         MOVWF   _STACK1
00DA   0008           00409         RETURN
                      00410         END
MPASM 02.30.07 Intermediate   DIMMER2.ASM   9-14-2000  16:34:32         PAGE  9


SYMBOL TABLE
  LABEL                             VALUE 

FEEDBACK                          00000004
IRQ_ENABLE                        00000007
KEYDOWN                           00000001
KEYUP                             00000000
MAIN                              00000001
ON                                00000019
ONOFF                             00000002
OUTDOWN                           00000005
OUTON                             00000007
OUTPULS                           00000001
OUTUP                             00000006
PORTA                             00000005
PORTB                             00000006
RESK                              0000001C
RESKH                             0000001D
RESO                              0000001A
RESOH                             0000001B
X                                 00000016
Y                                 00000017
YH                                00000018
ZERODETECT                        00000003
_C                                00000000
_EEADR                            00000009
_EECON1                           00000008
_EECON2                           00000009
_EEDATA                           00000008
_ELSE1                            00000025
_ELSE2                            00000025
_ELSE3                            00000033
_ELSE4                            00000033
_ELSE5                            00000064
_GREAT16                          000000CC
_GREAT161                         000000D2
_GREAT162                         000000D7
_IF1                              00000013
_IF2                              00000017
_IF3                              00000025
_IF4                              00000029
_IF5                              00000033
_INTCON                           0000000B
_LOOP0                            000000B2
_LOOP10                           000000B0
_LOOP6                            00000064
_LOOP7                            00000063
_LOOP8                            00000067
_LOOP9                            0000008D
_MUL16                            000000B3
_MUL161                           000000B5
_MUL162                           000000C1
_PCL                              00000002
_PCLATH                           0000000A
_RD                               00000000
_RP0                              00000005
MPASM 02.30.07 Intermediate   DIMMER2.ASM   9-14-2000  16:34:32         PAGE 10


SYMBOL TABLE
  LABEL                             VALUE 

_STACK0                           0000000C
_STACK1                           0000000D
_STACK2                           0000000E
_STACK3                           0000000F
_STACK4                           00000010
_STACK5                           00000011
_STACK6                           00000012
_STACK7                           00000013
_STACK8                           00000014
_STACK9                           00000015
_STATUS                           00000003
_WHILE0                           00000013
_WHILE10                          00000096
_WHILE6                           0000003F
_WHILE7                           00000049
_WHILE8                           00000064
_WHILE9                           00000073
_WR                               00000001
_WREN                             00000002
_Z                                00000002
__16F84                           00000001


MEMORY USAGE MAP ('X' = Used,  '-' = Unused)

0000 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXX----- ---------------- ----------------
2000 : -------X-------- ---------------- ---------------- ----------------

All other memory blocks unused.

Program Memory Words Used:   219
Program Memory Words Free:   805


Errors   :     0
Warnings :     0 reported,     0 suppressed
Messages :     0 reported,     0 suppressed

