[Menu]>[Circuits Gallery]>[LED flasher]


Source code file of LED flasher

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
;********************************************************
;
;            The LED flash control processing
;
;                                 Author : Seiichi Inoue
;********************************************************

        list            p=pic16f84a
        include         p16f84a.inc
        __config _hs_osc & _wdt_off & _pwrte_on & _cp_off
        errorlevel      -302    ;Eliminate bank warning

;****************  Label Definition  ********************
ra0     equ     00              ;RA0 bit
ra1     equ     01              ;RA1 bit
ra2     equ     02              ;RA2 bit
ra3     equ     03              ;RA3 bit
ra4     equ     04              ;RA4 bit
cnt500u equ     0c              ;500usec counter Address
cnt1m   equ     0d              ;1msec counter Address
cnt100m equ     0e              ;100msec counter Address
cnt500m equ     0f              ;500msec counter Address
cnt1s   equ     10              ;1sec counter Address

;*************  Pattern Data Definition  ****************
;                 '1':OFF   '0':ON

;******  Pattern 0  ******
p00     equ     b'11111110'
p01     equ     b'11111101'
p02     equ     b'11111011'
p03     equ     b'11110111'
p04     equ     b'11101111'
p05     equ     b'11011111'
p06     equ     b'10111111'
p07     equ     b'01111111'

;******  Pattern 1  ******
p10     equ     b'01111111'
p11     equ     b'10111111'
p12     equ     b'11011111'
p13     equ     b'11101111'
p14     equ     b'11110111'
p15     equ     b'11111011'
p16     equ     b'11111101'
p17     equ     b'11111110'

;******  Pattern 2  ******
p20     equ     b'01111110'
p21     equ     b'10111101'
p22     equ     b'11011011'
p23     equ     b'11100111'
p24     equ     b'11011011'
p25     equ     b'10111101'
p26     equ     b'01111110'

;******  Pattern 3  ******
p30     equ     b'11111110'
p31     equ     b'11111101'
p32     equ     b'11111010'
p33     equ     b'11110101'
p34     equ     b'11101010'
p35     equ     b'11010101'
p36     equ     b'10101010'
p37     equ     b'01010101'
p38     equ     b'10101011'
p39     equ     b'01010111'
p3a     equ     b'10101111'
p3b     equ     b'01011111'
p3c     equ     b'10111111'
p3d     equ     b'01111111'

;******  Pattern 4  ******
p40     equ     b'00000000'
p41     equ     b'11111111'
p42     equ     b'00000000'
p43     equ     b'11111111'
p44     equ     b'00000000'
p45     equ     b'11111111'
p46     equ     b'00000000'
p47     equ     b'11111111'
p48     equ     b'00000000'


;****************  Program Start  ***********************
        org     0               ;Reset Vector
        goto    init
        org     4               ;Interrupt Vector
        goto    init

;****************  Initial Process  *********************
        org     5
init    bsf     status,rp0      ;Change to Bank1 
        movlw   h'ff'           ;Set input mode data
        movwf   trisa           ;Set PORTA to Input mode
        clrf    trisb           ;Set PORTB to Output mode
        bcf     status,rp0      ;Change to Bank0
        movlw   h'ff'           ;Set LED off data
        movwf   portb           ;Output data

;****************  Key Scan Process  ********************
keyscan btfss   porta,ra0       ;RA0 ON(Low lebel) ?
        call    ptn0            ;Yes. Call Pattern 0
        btfss   porta,ra1       ;RA1 ON ?
        call    ptn1            ;Yes. Call Pattern 1
        btfss   porta,ra2       ;RA2 ON ?
        call    ptn2            ;Yes. Call Pattern 2
        btfss   porta,ra3       ;RA3 ON ?
        call    ptn3            ;Yes. Call Pattern 3
        btfss   porta,ra4       ;RA4 ON ?
        call    ptn4            ;Yes. Call Pattern 4
        goto    keyscan         ;Retry

;***********  Pattern 0 Output Subroutine ***************
ptn0    movlw   p00             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p01             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p02             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p03             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p04             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p05             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p06             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p07             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   h'ff'           ;Set LED off data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        return

;***********  Pattern 1 Output Subroutine ***************
ptn1    movlw   p10             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p11             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p12             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p13             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p14             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p15             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p16             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p17             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   h'ff'           ;Set LED off data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        return

;***********  Pattern 2 Output Subroutine ***************
ptn2    movlw   p20             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p21             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p22             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p23             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p24             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p25             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p26             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   h'ff'           ;Set LED off data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        return

;***********  Pattern 3 Output Subroutine ***************
ptn3    movlw   p30             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p31             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p32             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p33             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p34             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p35             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p36             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p37             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p38             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p39             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p3a             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p3b             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p3c             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   p3d             ;Set pattern data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        movlw   h'ff'           ;Set LED off data
        movwf   portb           ;Output data
        call    t100m           ;Wait 100msec
        return

;***********  Pattern 4 Output Subroutine ***************
ptn4    movlw   p40             ;Set pattern data
        movwf   portb           ;Output data
        call    t1s             ;Wait 1sec
        movlw   p41             ;Set pattern data
        movwf   portb           ;Output data
        call    t1s             ;Wait 1sec
        movlw   p42             ;Set pattern data
        movwf   portb           ;Output data
        call    t1s             ;Wait 1sec
        movlw   p43             ;Set pattern data
        movwf   portb           ;Output data
        call    t1s             ;Wait 1sec
        movlw   p44             ;Set pattern data
        movwf   portb           ;Output data
        call    t1s             ;Wait 1sec
        movlw   p45             ;Set pattern data
        movwf   portb           ;Output data
        call    t1s             ;Wait 1sec
        movlw   p46             ;Set pattern data
        movwf   portb           ;Output data
        call    t1s             ;Wait 1sec
        movlw   p47             ;Set pattern data
        movwf   portb           ;Output data
        call    t1s             ;Wait 1sec
        movlw   p48             ;Set pattern data
        movwf   portb           ;Output data
        call    t1s             ;Wait 1sec
        movlw   h'ff'           ;Set LED off data
        movwf   portb           ;Output data
        call    t1s             ;Wait 1sec
        return

;********************************************************
;          Timer  Subroutine for 10MHz clock
;********************************************************

;*************  1msec Timer Subroutine  *****************
t1m     movlw   d'2'            ;(1)       Set loop cnt1
        movwf   cnt1m           ;(1)       Save loop cnt1
tm1lp1  movlw   d'249'          ;(1)*2     Set loop cnt2
        movwf   cnt500u         ;(1)*2     Save loop cnt2
tm1lp2  nop                     ;(1)*249*2 Time adjust
        nop                     ;(1)*249*2 Time adjust
        decfsz  cnt500u,f       ;(1)*249*2 cnt500u-1=0 ?
        goto    tm1lp2          ;(2)*248*2 No, continue
        decfsz  cnt1m,f         ;(1)*2     cnt1m-1=0 ?
        goto    tm1lp1          ;(2)       No. Continue
        return                  ;(2)       Yes. Cnt end
                                ;Total 2501*0.4usec=1msec

;*************  100msec Timer Subroutine  ***************
t100m   movlw   d'100'          ;Set loop counter
        movwf   cnt100m         ;Save loop counter
tm2lp   call    t1m             ;1msec subroutine
        decfsz  cnt100m,f       ;cnt100m - 1 = 0 ?
        goto    tm2lp           ;No. Continue
        return                  ;Yes. Count end


;*************  500msec Timer Subroutine  ***************
t500m   movlw   d'5'            ;Set loop counter
        movwf   cnt500m         ;Save loop counter
tm3lp   call    t100m           ;100msec subroutine
        decfsz  cnt500m,f       ;cnt500m - 1 = 0 ?
        goto    tm3lp           ;No. Continue
        return                  ;Yes. Count end

;**************  1sec Timer Subroutine  *****************
t1s     movlw   d'2'            ;Set loop counter
        movwf   cnt1s           ;Save loop counter
tm4lp   call    t500m           ;500msec subroutine
        decfsz  cnt1s,f         ;cnt1s - 1 = 0 ?
        goto    tm4lp           ;No. Continue
        return                  ;Yes. Count end


;********************************************************
;          END of LED flash control processing
;********************************************************

        end



Listing file of LED flasher
MPASM 02.40 Released              LED.ASM   5-19-2000  23:58:29         PAGE  1


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00001 ;********************************************************
                      00002 ;
                      00003 ;            The LED flash control processing
                      00004 ;
                      00005 ;                                 Author : Seiichi Inoue
                      00006 ;********************************************************
                      00007 
                      00008         LIST            P=PIC16F84A
                      00009         INCLUDE         P16F84A.INC
                      00001         LIST
                      00002 ; P16F84A.INC  Standard Header File, Version 2.00'(modify)
                      00134         LIST
2007   3FF2           00010         __CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
                      00011         ERRORLEVEL      -302    ;Suppress bank warning
                      00012 
                      00013 ;****************  Label Definition  ********************
  00000000            00014 RA0     EQU     00              ;RA0 bit
  00000001            00015 RA1     EQU     01              ;RA1 bit
  00000002            00016 RA2     EQU     02              ;RA2 bit
  00000003            00017 RA3     EQU     03              ;RA3 bit
  00000004            00018 RA4     EQU     04              ;RA4 bit
  0000000C            00019 CNT500U EQU     0C              ;500usec counter Address
  0000000D            00020 CNT1M   EQU     0D              ;1msec counter Address
  0000000E            00021 CNT100M EQU     0E              ;100msec counter Address
  0000000F            00022 CNT500M EQU     0F              ;500msec counter Address
  00000010            00023 CNT1S   EQU     10              ;1sec counter Address
                      00024 
                      00025 ;*************  Pattern Data Definition  ****************
                      00026 ;                 '1':OFF   '0':ON
                      00027 
                      00028 ;******  Pattern 0  ******
  000000FE            00029 P00     EQU     B'11111110'
  000000FD            00030 P01     EQU     B'11111101'
  000000FB            00031 P02     EQU     B'11111011'
  000000F7            00032 P03     EQU     B'11110111'
  000000EF            00033 P04     EQU     B'11101111'
  000000DF            00034 P05     EQU     B'11011111'
  000000BF            00035 P06     EQU     B'10111111'
  0000007F            00036 P07     EQU     B'01111111'
                      00037 
                      00038 ;******  Pattern 1  ******
  0000007F            00039 P10     EQU     B'01111111'
  000000BF            00040 P11     EQU     B'10111111'
  000000DF            00041 P12     EQU     B'11011111'
  000000EF            00042 P13     EQU     B'11101111'
  000000F7            00043 P14     EQU     B'11110111'
  000000FB            00044 P15     EQU     B'11111011'
  000000FD            00045 P16     EQU     B'11111101'
  000000FE            00046 P17     EQU     B'11111110'
                      00047 
                      00048 ;******  Pattern 2  ******
  0000007E            00049 P20     EQU     B'01111110'
  000000BD            00050 P21     EQU     B'10111101'
MPASM 02.40 Released              LED.ASM   5-19-2000  23:58:29         PAGE  2


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

  000000DB            00051 P22     EQU     B'11011011'
  000000E7            00052 P23     EQU     B'11100111'
  000000DB            00053 P24     EQU     B'11011011'
  000000BD            00054 P25     EQU     B'10111101'
  0000007E            00055 P26     EQU     B'01111110'
                      00056 
                      00057 ;******  Pattern 3  ******
  000000FE            00058 P30     EQU     B'11111110'
  000000FD            00059 P31     EQU     B'11111101'
  000000FA            00060 P32     EQU     B'11111010'
  000000F5            00061 P33     EQU     B'11110101'
  000000EA            00062 P34     EQU     B'11101010'
  000000D5            00063 P35     EQU     B'11010101'
  000000AA            00064 P36     EQU     B'10101010'
  00000055            00065 P37     EQU     B'01010101'
  000000AB            00066 P38     EQU     B'10101011'
  00000057            00067 P39     EQU     B'01010111'
  000000AF            00068 P3A     EQU     B'10101111'
  0000005F            00069 P3B     EQU     B'01011111'
  000000BF            00070 P3C     EQU     B'10111111'
  0000007F            00071 P3D     EQU     B'01111111'
                      00072 
                      00073 ;******  Pattern 4  ******
  00000000            00074 P40     EQU     B'00000000'
  000000FF            00075 P41     EQU     B'11111111'
  00000000            00076 P42     EQU     B'00000000'
  000000FF            00077 P43     EQU     B'11111111'
  00000000            00078 P44     EQU     B'00000000'
  000000FF            00079 P45     EQU     B'11111111'
  00000000            00080 P46     EQU     B'00000000'
  000000FF            00081 P47     EQU     B'11111111'
  00000000            00082 P48     EQU     B'00000000'
                      00083 
                      00084 
                      00085 ;****************  Program Start  ***********************
0000                  00086         ORG     0               ;Reset Vector
0000   2805           00087         GOTO    INIT
0004                  00088         ORG     4               ;Interrupt Vector
0004   2805           00089         GOTO    INIT
                      00090 
                      00091 ;****************  Initial Process  *********************
0005                  00092         ORG     5
0005   1683           00093 INIT    BSF     STATUS,RP0      ;Change to Bank1 
0006   30FF           00094         MOVLW   H'ff'           ;Set input mode data
0007   0085           00095         MOVWF   TRISA           ;Set PORTA to Input mode
0008   0186           00096         CLRF    TRISB           ;Set PORTB to Output mode
0009   1283           00097         BCF     STATUS,RP0      ;Change to Bank0
000A   30FF           00098         MOVLW   H'ff'           ;Set LED off data
000B   0086           00099         MOVWF   PORTB           ;Output data
                      00100 
                      00101 ;****************  Key Scan Process  ********************
000C   1C05           00102 KEYSCAN BTFSS   PORTA,RA0       ;RA0 ON(Low lebel) ?
000D   2017           00103         CALL    PTN0            ;Yes. Call Pattern 0
MPASM 02.40 Released              LED.ASM   5-19-2000  23:58:29         PAGE  3


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

000E   1C85           00104         BTFSS   PORTA,RA1       ;RA1 ON ?
000F   2033           00105         CALL    PTN1            ;Yes. Call Pattern 1
0010   1D05           00106         BTFSS   PORTA,RA2       ;RA2 ON ?
0011   204F           00107         CALL    PTN2            ;Yes. Call Pattern 2
0012   1D85           00108         BTFSS   PORTA,RA3       ;RA3 ON ?
0013   2068           00109         CALL    PTN3            ;Yes. Call Pattern 3
0014   1E05           00110         BTFSS   PORTA,RA4       ;RA4 ON ?
0015   2096           00111         CALL    PTN4            ;Yes. Call Pattern 4
0016   280C           00112         GOTO    KEYSCAN         ;Retry
                      00113 
                      00114 ;***********  Pattern 0 Output Subroutine ***************
0017   30FE           00115 PTN0    MOVLW   P00             ;Set pattern data
0018   0086           00116         MOVWF   PORTB           ;Output data
0019   20C0           00117         CALL    T100M           ;Wait 100msec
001A   30FD           00118         MOVLW   P01             ;Set pattern data
001B   0086           00119         MOVWF   PORTB           ;Output data
001C   20C0           00120         CALL    T100M           ;Wait 100msec
001D   30FB           00121         MOVLW   P02             ;Set pattern data
001E   0086           00122         MOVWF   PORTB           ;Output data
001F   20C0           00123         CALL    T100M           ;Wait 100msec
0020   30F7           00124         MOVLW   P03             ;Set pattern data
0021   0086           00125         MOVWF   PORTB           ;Output data
0022   20C0           00126         CALL    T100M           ;Wait 100msec
0023   30EF           00127         MOVLW   P04             ;Set pattern data
0024   0086           00128         MOVWF   PORTB           ;Output data
0025   20C0           00129         CALL    T100M           ;Wait 100msec
0026   30DF           00130         MOVLW   P05             ;Set pattern data
0027   0086           00131         MOVWF   PORTB           ;Output data
0028   20C0           00132         CALL    T100M           ;Wait 100msec
0029   30BF           00133         MOVLW   P06             ;Set pattern data
002A   0086           00134         MOVWF   PORTB           ;Output data
002B   20C0           00135         CALL    T100M           ;Wait 100msec
002C   307F           00136         MOVLW   P07             ;Set pattern data
002D   0086           00137         MOVWF   PORTB           ;Output data
002E   20C0           00138         CALL    T100M           ;Wait 100msec
002F   30FF           00139         MOVLW   H'ff'           ;Set LED off data
0030   0086           00140         MOVWF   PORTB           ;Output data
0031   20C0           00141         CALL    T100M           ;Wait 100msec
0032   0008           00142         RETURN
                      00143 
                      00144 ;***********  Pattern 1 Output Subroutine ***************
0033   307F           00145 PTN1    MOVLW   P10             ;Set pattern data
0034   0086           00146         MOVWF   PORTB           ;Output data
0035   20C0           00147         CALL    T100M           ;Wait 100msec
0036   30BF           00148         MOVLW   P11             ;Set pattern data
0037   0086           00149         MOVWF   PORTB           ;Output data
0038   20C0           00150         CALL    T100M           ;Wait 100msec
0039   30DF           00151         MOVLW   P12             ;Set pattern data
003A   0086           00152         MOVWF   PORTB           ;Output data
003B   20C0           00153         CALL    T100M           ;Wait 100msec
003C   30EF           00154         MOVLW   P13             ;Set pattern data
003D   0086           00155         MOVWF   PORTB           ;Output data
003E   20C0           00156         CALL    T100M           ;Wait 100msec
MPASM 02.40 Released              LED.ASM   5-19-2000  23:58:29         PAGE  4


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

003F   30F7           00157         MOVLW   P14             ;Set pattern data
0040   0086           00158         MOVWF   PORTB           ;Output data
0041   20C0           00159         CALL    T100M           ;Wait 100msec
0042   30FB           00160         MOVLW   P15             ;Set pattern data
0043   0086           00161         MOVWF   PORTB           ;Output data
0044   20C0           00162         CALL    T100M           ;Wait 100msec
0045   30FD           00163         MOVLW   P16             ;Set pattern data
0046   0086           00164         MOVWF   PORTB           ;Output data
0047   20C0           00165         CALL    T100M           ;Wait 100msec
0048   30FE           00166         MOVLW   P17             ;Set pattern data
0049   0086           00167         MOVWF   PORTB           ;Output data
004A   20C0           00168         CALL    T100M           ;Wait 100msec
004B   30FF           00169         MOVLW   H'ff'           ;Set LED off data
004C   0086           00170         MOVWF   PORTB           ;Output data
004D   20C0           00171         CALL    T100M           ;Wait 100msec
004E   0008           00172         RETURN
                      00173 
                      00174 ;***********  Pattern 2 Output Subroutine ***************
004F   307E           00175 PTN2    MOVLW   P20             ;Set pattern data
0050   0086           00176         MOVWF   PORTB           ;Output data
0051   20C0           00177         CALL    T100M           ;Wait 100msec
0052   30BD           00178         MOVLW   P21             ;Set pattern data
0053   0086           00179         MOVWF   PORTB           ;Output data
0054   20C0           00180         CALL    T100M           ;Wait 100msec
0055   30DB           00181         MOVLW   P22             ;Set pattern data
0056   0086           00182         MOVWF   PORTB           ;Output data
0057   20C0           00183         CALL    T100M           ;Wait 100msec
0058   30E7           00184         MOVLW   P23             ;Set pattern data
0059   0086           00185         MOVWF   PORTB           ;Output data
005A   20C0           00186         CALL    T100M           ;Wait 100msec
005B   30DB           00187         MOVLW   P24             ;Set pattern data
005C   0086           00188         MOVWF   PORTB           ;Output data
005D   20C0           00189         CALL    T100M           ;Wait 100msec
005E   30BD           00190         MOVLW   P25             ;Set pattern data
005F   0086           00191         MOVWF   PORTB           ;Output data
0060   20C0           00192         CALL    T100M           ;Wait 100msec
0061   307E           00193         MOVLW   P26             ;Set pattern data
0062   0086           00194         MOVWF   PORTB           ;Output data
0063   20C0           00195         CALL    T100M           ;Wait 100msec
0064   30FF           00196         MOVLW   H'ff'           ;Set LED off data
0065   0086           00197         MOVWF   PORTB           ;Output data
0066   20C0           00198         CALL    T100M           ;Wait 100msec
0067   0008           00199         RETURN
                      00200 
                      00201 ;***********  Pattern 3 Output Subroutine ***************
0068   30FE           00202 PTN3    MOVLW   P30             ;Set pattern data
0069   0086           00203         MOVWF   PORTB           ;Output data
006A   20C0           00204         CALL    T100M           ;Wait 100msec
006B   30FD           00205         MOVLW   P31             ;Set pattern data
006C   0086           00206         MOVWF   PORTB           ;Output data
006D   20C0           00207         CALL    T100M           ;Wait 100msec
006E   30FA           00208         MOVLW   P32             ;Set pattern data
006F   0086           00209         MOVWF   PORTB           ;Output data
MPASM 02.40 Released              LED.ASM   5-19-2000  23:58:29         PAGE  5


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0070   20C0           00210         CALL    T100M           ;Wait 100msec
0071   30F5           00211         MOVLW   P33             ;Set pattern data
0072   0086           00212         MOVWF   PORTB           ;Output data
0073   20C0           00213         CALL    T100M           ;Wait 100msec
0074   30EA           00214         MOVLW   P34             ;Set pattern data
0075   0086           00215         MOVWF   PORTB           ;Output data
0076   20C0           00216         CALL    T100M           ;Wait 100msec
0077   30D5           00217         MOVLW   P35             ;Set pattern data
0078   0086           00218         MOVWF   PORTB           ;Output data
0079   20C0           00219         CALL    T100M           ;Wait 100msec
007A   30AA           00220         MOVLW   P36             ;Set pattern data
007B   0086           00221         MOVWF   PORTB           ;Output data
007C   20C0           00222         CALL    T100M           ;Wait 100msec
007D   3055           00223         MOVLW   P37             ;Set pattern data
007E   0086           00224         MOVWF   PORTB           ;Output data
007F   20C0           00225         CALL    T100M           ;Wait 100msec
0080   30AB           00226         MOVLW   P38             ;Set pattern data
0081   0086           00227         MOVWF   PORTB           ;Output data
0082   20C0           00228         CALL    T100M           ;Wait 100msec
0083   3057           00229         MOVLW   P39             ;Set pattern data
0084   0086           00230         MOVWF   PORTB           ;Output data
0085   20C0           00231         CALL    T100M           ;Wait 100msec
0086   30AF           00232         MOVLW   P3A             ;Set pattern data
0087   0086           00233         MOVWF   PORTB           ;Output data
0088   20C0           00234         CALL    T100M           ;Wait 100msec
0089   305F           00235         MOVLW   P3B             ;Set pattern data
008A   0086           00236         MOVWF   PORTB           ;Output data
008B   20C0           00237         CALL    T100M           ;Wait 100msec
008C   30BF           00238         MOVLW   P3C             ;Set pattern data
008D   0086           00239         MOVWF   PORTB           ;Output data
008E   20C0           00240         CALL    T100M           ;Wait 100msec
008F   307F           00241         MOVLW   P3D             ;Set pattern data
0090   0086           00242         MOVWF   PORTB           ;Output data
0091   20C0           00243         CALL    T100M           ;Wait 100msec
0092   30FF           00244         MOVLW   H'ff'           ;Set LED off data
0093   0086           00245         MOVWF   PORTB           ;Output data
0094   20C0           00246         CALL    T100M           ;Wait 100msec
0095   0008           00247         RETURN
                      00248 
                      00249 ;***********  Pattern 4 Output Subroutine ***************
0096   3000           00250 PTN4    MOVLW   P40             ;Set pattern data
0097   0086           00251         MOVWF   PORTB           ;Output data
0098   20CC           00252         CALL    T1S             ;Wait 1sec
0099   30FF           00253         MOVLW   P41             ;Set pattern data
009A   0086           00254         MOVWF   PORTB           ;Output data
009B   20CC           00255         CALL    T1S             ;Wait 1sec
009C   3000           00256         MOVLW   P42             ;Set pattern data
009D   0086           00257         MOVWF   PORTB           ;Output data
009E   20CC           00258         CALL    T1S             ;Wait 1sec
009F   30FF           00259         MOVLW   P43             ;Set pattern data
00A0   0086           00260         MOVWF   PORTB           ;Output data
00A1   20CC           00261         CALL    T1S             ;Wait 1sec
00A2   3000           00262         MOVLW   P44             ;Set pattern data
MPASM 02.40 Released              LED.ASM   5-19-2000  23:58:29         PAGE  6


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

00A3   0086           00263         MOVWF   PORTB           ;Output data
00A4   20CC           00264         CALL    T1S             ;Wait 1sec
00A5   30FF           00265         MOVLW   P45             ;Set pattern data
00A6   0086           00266         MOVWF   PORTB           ;Output data
00A7   20CC           00267         CALL    T1S             ;Wait 1sec
00A8   3000           00268         MOVLW   P46             ;Set pattern data
00A9   0086           00269         MOVWF   PORTB           ;Output data
00AA   20CC           00270         CALL    T1S             ;Wait 1sec
00AB   30FF           00271         MOVLW   P47             ;Set pattern data
00AC   0086           00272         MOVWF   PORTB           ;Output data
00AD   20CC           00273         CALL    T1S             ;Wait 1sec
00AE   3000           00274         MOVLW   P48             ;Set pattern data
00AF   0086           00275         MOVWF   PORTB           ;Output data
00B0   20CC           00276         CALL    T1S             ;Wait 1sec
00B1   30FF           00277         MOVLW   H'ff'           ;Set LED off data
00B2   0086           00278         MOVWF   PORTB           ;Output data
00B3   20CC           00279         CALL    T1S             ;Wait 1sec
00B4   0008           00280         RETURN
                      00281 
                      00282 ;********************************************************
                      00283 ;          Timer  Subroutine for 10MHz clock
                      00284 ;********************************************************
                      00285 
                      00286 ;*************  1msec Timer Subroutine  *****************
00B5   3002           00287 T1M     MOVLW   D'2'            ;(1)       Set loop cnt1
00B6   008D           00288         MOVWF   CNT1M           ;(1)       Save loop cnt1
00B7   30F9           00289 TM1LP1  MOVLW   D'249'          ;(1)*2     Set loop cnt2
00B8   008C           00290         MOVWF   CNT500U         ;(1)*2     Save loop cnt2
00B9   0000           00291 TM1LP2  NOP                     ;(1)*249*2 Time adjust
00BA   0000           00292         NOP                     ;(1)*249*2 Time adjust
00BB   0B8C           00293         DECFSZ  CNT500U,F       ;(1)*249*2 cnt500u-1=0 ?
00BC   28B9           00294         GOTO    TM1LP2          ;(2)*248*2 No, continue
00BD   0B8D           00295         DECFSZ  CNT1M,F         ;(1)*2     cnt1m-1=0 ?
00BE   28B7           00296         GOTO    TM1LP1          ;(2)       No. Continue
00BF   0008           00297         RETURN                  ;(2)       Yes. Cnt end
                      00298                                 ;Total 2501*0.4usec=1msec
                      00299 
                      00300 ;*************  100msec Timer Subroutine  ***************
00C0   3064           00301 T100M   MOVLW   D'100'          ;Set loop counter
00C1   008E           00302         MOVWF   CNT100M         ;Save loop counter
00C2   20B5           00303 TM2LP   CALL    T1M             ;1msec subroutine
00C3   0B8E           00304         DECFSZ  CNT100M,F       ;cnt100m - 1 = 0 ?
00C4   28C2           00305         GOTO    TM2LP           ;No. Continue
00C5   0008           00306         RETURN                  ;Yes. Count end
                      00307 
                      00308 
                      00309 ;*************  500msec Timer Subroutine  ***************
00C6   3005           00310 T500M   MOVLW   D'5'            ;Set loop counter
00C7   008F           00311         MOVWF   CNT500M         ;Save loop counter
00C8   20C0           00312 TM3LP   CALL    T100M           ;100msec subroutine
00C9   0B8F           00313         DECFSZ  CNT500M,F       ;cnt500m - 1 = 0 ?
00CA   28C8           00314         GOTO    TM3LP           ;No. Continue
00CB   0008           00315         RETURN                  ;Yes. Count end
MPASM 02.40 Released              LED.ASM   5-19-2000  23:58:29         PAGE  7


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00316 
                      00317 ;**************  1sec Timer Subroutine  *****************
00CC   3002           00318 T1S     MOVLW   D'2'            ;Set loop counter
00CD   0090           00319         MOVWF   CNT1S           ;Save loop counter
00CE   20C6           00320 TM4LP   CALL    T500M           ;500msec subroutine
00CF   0B90           00321         DECFSZ  CNT1S,F         ;cnt1s - 1 = 0 ?
00D0   28CE           00322         GOTO    TM4LP           ;No. Continue
00D1   0008           00323         RETURN                  ;Yes. Count end
                      00324 
                      00325 
                      00326 ;********************************************************
                      00327 ;          END of LED flash control processing
                      00328 ;********************************************************
                      00329 
                      00330         END
MPASM 02.40 Released              LED.ASM   5-19-2000  23:58:29         PAGE  8


SYMBOL TABLE
  LABEL                             VALUE 

C                                 00000000
CNT100M                           0000000E
CNT1M                             0000000D
CNT1S                             00000010
CNT500M                           0000000F
CNT500U                           0000000C
DC                                00000001
EEADR                             00000009
EECON1                            00000088
EECON2                            00000089
EEDATA                            00000008
EEIE                              00000006
EEIF                              00000004
F                                 00000001
FSR                               00000004
GIE                               00000007
INDF                              00000000
INIT                              00000005
INTCON                            0000000B
INTE                              00000004
INTEDG                            00000006
INTF                              00000001
IRP                               00000007
KEYSCAN                           0000000C
NOT_PD                            00000003
NOT_RBPU                          00000007
NOT_TO                            00000004
OPTION_REG                        00000081
P00                               000000FE
P01                               000000FD
P02                               000000FB
P03                               000000F7
P04                               000000EF
P05                               000000DF
P06                               000000BF
P07                               0000007F
P10                               0000007F
P11                               000000BF
P12                               000000DF
P13                               000000EF
P14                               000000F7
P15                               000000FB
P16                               000000FD
P17                               000000FE
P20                               0000007E
P21                               000000BD
P22                               000000DB
P23                               000000E7
P24                               000000DB
P25                               000000BD
P26                               0000007E
P30                               000000FE
P31                               000000FD
MPASM 02.40 Released              LED.ASM   5-19-2000  23:58:29         PAGE  9


SYMBOL TABLE
  LABEL                             VALUE 

P32                               000000FA
P33                               000000F5
P34                               000000EA
P35                               000000D5
P36                               000000AA
P37                               00000055
P38                               000000AB
P39                               00000057
P3A                               000000AF
P3B                               0000005F
P3C                               000000BF
P3D                               0000007F
P40                               00000000
P41                               000000FF
P42                               00000000
P43                               000000FF
P44                               00000000
P45                               000000FF
P46                               00000000
P47                               000000FF
P48                               00000000
PCL                               00000002
PCLATH                            0000000A
PORTA                             00000005
PORTB                             00000006
PS0                               00000000
PS1                               00000001
PS2                               00000002
PSA                               00000003
PTN0                              00000017
PTN1                              00000033
PTN2                              0000004F
PTN3                              00000068
PTN4                              00000096
RA0                               00000000
RA1                               00000001
RA2                               00000002
RA3                               00000003
RA4                               00000004
RBIE                              00000003
RBIF                              00000000
RD                                00000000
RP0                               00000005
RP1                               00000006
STATUS                            00000003
T0CS                              00000005
T0IE                              00000005
T0IF                              00000002
T0SE                              00000004
T100M                             000000C0
T1M                               000000B5
T1S                               000000CC
T500M                             000000C6
MPASM 02.40 Released              LED.ASM   5-19-2000  23:58:29         PAGE 10


SYMBOL TABLE
  LABEL                             VALUE 

TM1LP1                            000000B7
TM1LP2                            000000B9
TM2LP                             000000C2
TM3LP                             000000C8
TM4LP                             000000CE
TMR0                              00000001
TRISA                             00000085
TRISB                             00000086
W                                 00000000
WR                                00000001
WREN                              00000002
WRERR                             00000003
Z                                 00000002
_CP_OFF                           00003FFF
_CP_ON                            0000000F
_HS_OSC                           00003FFE
_LP_OSC                           00003FFC
_PWRTE_OFF                        00003FFF
_PWRTE_ON                         00003FF7
_RC_OSC                           00003FFF
_WDT_OFF                          00003FFB
_WDT_ON                           00003FFF
_XT_OSC                           00003FFD
__16F84A                          00000001


MEMORY USAGE MAP ('X' = Used,  '-' = Unused)

0000 : X---XXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00C0 : XXXXXXXXXXXXXXXX XX-------------- ---------------- ----------------
2000 : -------X-------- ---------------- ---------------- ----------------

All other memory blocks unused.

Program Memory Words Used:   207
Program Memory Words Free:   817


Errors   :     0
Warnings :     0 reported,     0 suppressed
Messages :     0 reported,     2 suppressed



led_source.zip
led_hex.zip