gpasm-0.11.8 alpha brightnesstest.asm4-21-2004 22:42:38 PAGE 1 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00001 ; CPU configuration 00002 processor 16f84 00003 include 00001 LIST 00002 ; P16F84.INC Standard Header File, Version 2.00 Microchip Technology, Inc. 00136 LIST 002007 3FF2 00004 __config _HS_OSC & _WDT_OFF & _PWRTE_ON 00005 00006 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 00007 ; variables 00008 00000010 00009 tick EQU H'10' ; counter for pulsewidth (high freq) 00000011 00010 cycle EQU H'11' ; counter for the colour cycle (low freq) 00000012 00011 pw EQU H'12' ; pulsewidth for the LED 00012 00013 ; button stuff 00014 00000013 00015 incd EQU H'13' ; button down 00000014 00016 decd EQU H'14' 00000015 00017 resd EQU H'15' 00000016 00018 dbinc EQU H'16' ; debounce 00000017 00019 dbdec EQU H'17' 00000018 00020 dbres EQU H'18' 00021 00000019 00022 temp EQU H'19' 0000001A 00023 triin EQU H'1a' 00024 00025 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 00026 ;; i/o pins 00027 00028 ; port A 00000001 00029 outpin EQU H'01' ; led pin 00030 00031 ; port B 00000001 00032 incbpin EQU H'01' ; increment the brightness 00000002 00033 decbpin EQU H'02' ; decrement brightness 00000003 00034 resbpin EQU H'03' ; reset brightness 00035 00036 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 00037 0000 00038 main: 0000 3000 00039 movlw B'00000000' Warning [224] : Use of this instruction is not recommended. 0001 0065 00040 tris PORTA ; init port A as output 0002 30FF 00041 movlw B'11111111' Warning [224] : Use of this instruction is not recommended. 0003 0066 00042 tris PORTB ; init port B as input 00043 00044 ; init stuff 0004 0190 00045 clrf tick 0005 0191 00046 clrf cycle 0006 0192 00047 clrf pw 0007 0193 00048 clrf incd 0008 0194 00049 clrf decd gpasm-0.11.8 alpha brightnesstest.asm4-21-2004 22:42:38 PAGE 2 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0009 0195 00050 clrf resd 000A 0196 00051 clrf dbinc 000B 0197 00052 clrf dbdec 000C 0198 00053 clrf dbres 00054 000D 00055 begin: 00056 00057 ; do the red pulsewidth 000D 0810 00058 movf tick,w ; load tick to w 000E 0212 00059 subwf pw,w ; subtract tick from rpw 000F 1C03 00060 btfss STATUS,C ; if carry is set, skip 0010 2813 00061 goto redelse ; goto else 0011 1485 00062 bsf PORTA,outpin ; set rpin on 0012 2814 00063 goto redendif ; get out 0013 00064 redelse: 0013 1085 00065 bcf PORTA,outpin ; else, rpin is off 0014 00066 redendif: 00067 0014 0A90 00068 incf tick,f ; ++tick 0015 1903 00069 btfsc STATUS,Z 0016 2018 00070 call updatecycle ; update cycle once per pulse 0017 280D 00071 goto begin 00072 00073 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 00074 0018 00075 updatecycle: 0018 2026 00076 call checkinc ; check the increment button 0019 1813 00077 btfsc incd,0 ; if button has been pressed, increment 001A 0A91 00078 incf cycle,f 00079 001B 2033 00080 call checkdec ; check the decrement button 001C 1814 00081 btfsc decd,0 ; if button has been pressed, decrement 001D 0391 00082 decf cycle,f 00083 001E 2040 00084 call checkres ; check the reset button 001F 1815 00085 btfsc resd,0 ; if button has been pressed, reset 0020 0191 00086 clrf cycle 00087 00088 ; call maketriwave for red 0021 0811 00089 movf cycle,w ; load the cycle 0022 009A 00090 movwf triin ; into tryiin 0023 204D 00091 call maketriwave 0024 0092 00092 movwf pw ; move result into red pulse width 00093 0025 0008 00094 return 00095 00096 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 00097 ; turns pin on/off into momentry event when from off to on 0026 00098 checkinc: 0026 1886 00099 btfsc PORTB,incbpin ; if button is not pressed 0027 282B 00100 goto incbpressed 0028 0196 00101 clrf dbinc ; set debounce false 0029 0193 00102 clrf incd ; set button off 002A 2832 00103 goto endcheckinc gpasm-0.11.8 alpha brightnesstest.asm4-21-2004 22:42:38 PAGE 3 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002B 00104 incbpressed: ; else 002B 1816 00105 btfsc dbinc,0 ; if debounce is false 002C 2831 00106 goto incdbtrue 002D 3001 00107 movlw D'1' 002E 0096 00108 movwf dbinc ; set debounce true 002F 0093 00109 movwf incd ; set button on 0030 2832 00110 goto endcheckinc 0031 00111 incdbtrue: ; else 0031 0193 00112 clrf incd ; set button off 0032 00113 endcheckinc: 0032 0008 00114 return 00115 00116 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 00117 ; turns pin on/off into momentry event when from off to on 0033 00118 checkdec: 0033 1906 00119 btfsc PORTB,decbpin ; if button is not pressed 0034 2838 00120 goto decbpressed 0035 0197 00121 clrf dbdec ; set debounce false 0036 0194 00122 clrf decd ; set button off 0037 283F 00123 goto endcheckdec 0038 00124 decbpressed: ; else 0038 1817 00125 btfsc dbdec,0 ; if debounce is false 0039 283E 00126 goto decdbtrue 003A 3001 00127 movlw D'1' 003B 0097 00128 movwf dbdec ; set debounce true 003C 0094 00129 movwf decd ; set button on 003D 283F 00130 goto endcheckdec 003E 00131 decdbtrue: ; else 003E 0194 00132 clrf decd ; set button off 003F 00133 endcheckdec: 003F 0008 00134 return 00135 00136 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 00137 ; turns pin on/off into momentry event when from off to on 0040 00138 checkres: 0040 1986 00139 btfsc PORTB,resbpin ; if button is not pressed 0041 2845 00140 goto resbpressed 0042 0198 00141 clrf dbres ; set debounce false 0043 0195 00142 clrf resd ; set button off 0044 284C 00143 goto endcheckres 0045 00144 resbpressed: ; else 0045 1818 00145 btfsc dbres,0 ; if debounce is false 0046 284B 00146 goto resdbtrue 0047 3001 00147 movlw D'1' 0048 0098 00148 movwf dbres ; set debounce true 0049 0095 00149 movwf resd ; set button on 004A 284C 00150 goto endcheckres 004B 00151 resdbtrue: ; else 004B 0195 00152 clrf resd ; set button off 004C 00153 endcheckres: 004C 0008 00154 return 00155 00156 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 00157 ; converts contents of triin to wave on w gpasm-0.11.8 alpha brightnesstest.asm4-21-2004 22:42:38 PAGE 4 LOC OBJECT CODE LINE SOURCE TEXT VALUE 004D 00158 maketriwave: 004D 3080 00159 movlw D'128' 004E 0099 00160 movwf temp 004F 081A 00161 movf triin,w 0050 0219 00162 subwf temp,w 0051 1803 00163 btfsc STATUS,C ; if triin is less than 128 0052 2857 00164 goto triwaveup ; goin up! 0053 0099 00165 movwf temp 0054 3080 00166 movlw D'128' 0055 0219 00167 subwf temp,w 0056 0008 00168 return ; returns 128-triin 0057 00169 triwaveup: 00170 ;movlw D'128' 00171 ;subwf triin,w ; shift down 128 0057 081A 00172 movf triin,w ; returns triin 0058 0008 00173 return 00174 00175 gpasm-0.11.8 alpha brightnesstest.asm4-21-2004 22:42:38 PAGE 5 SYMBOL TABLE LABEL VALUE C 00000000 DC 00000001 EEADR 00000009 EECON1 00000088 EECON2 00000089 EEDATA 00000008 EEIE 00000006 EEIF 00000004 F 00000001 FSR 00000004 GIE 00000007 INDF 00000000 INTCON 0000000B INTE 00000004 INTEDG 00000006 INTF 00000001 IRP 00000007 NOT_PD 00000003 NOT_RBPU 00000007 NOT_TO 00000004 OPTION_REG 00000081 PCL 00000002 PCLATH 0000000A PORTA 00000005 PORTB 00000006 PS0 00000000 PS1 00000001 PS2 00000002 PSA 00000003 RBIE 00000003 RBIF 00000000 RD 00000000 RP0 00000005 RP1 00000006 STATUS 00000003 T0CS 00000005 T0IE 00000005 T0IF 00000002 T0SE 00000004 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 gpasm-0.11.8 alpha brightnesstest.asm4-21-2004 22:42:38 PAGE 6 LOC OBJECT CODE LINE SOURCE TEXT VALUE _RC_OSC 00003FFF _WDT_OFF 00003FFB _WDT_ON 00003FFF _XT_OSC 00003FFD __16F84 00000001 begin 0000000D checkdec 00000033 checkinc 00000026 checkres 00000040 cycle 00000011 dbdec 00000017 dbinc 00000016 dbres 00000018 decbpin 00000002 decbpressed 00000038 decd 00000014 decdbtrue 0000003E endcheckdec 0000003F endcheckinc 00000032 endcheckres 0000004C incbpin 00000001 incbpressed 0000002B incd 00000013 incdbtrue 00000031 main 00000000 maketriwave 0000004D outpin 00000001 pw 00000012 redelse 00000013 redendif 00000014 resbpin 00000003 resbpressed 00000045 resd 00000015 resdbtrue 0000004B temp 00000019 tick 00000010 triin 0000001A triwaveup 00000057 updatecycle 00000018 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0000 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0040 : XXXXXXXXXXXXXXXX XXXXXXXXX------- ---------------- ---------------- 2000 : -------X-------- ---------------- ---------------- ---------------- All other memory blocks unused. Program Memory Words Used: 90 Errors : 0 Warnings : 2 reported, 0 suppressed Messages : 0 reported, 0 suppressed