MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 1
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00001 ; CONTROLADOR DE TEMPERATURA GRAUS CELSIUS
00002 ; 3 digitos
00003 ; por
00004 ; outubro 2004 versao swi
00005 ; julho 2005 versao swi02
00006 ;===================================
Warning[205]: Found directive in column 1. (nolist)
Warning[205]: Found directive in column 1. (include)
00001 LIST
00002 ; P12F675.INC Standard Header File, Version 1.04 Microchip Technology, Inc.
00284 LIST
Warning[205]: Found directive in column 1. (include)
00009 include "alvi6.mac"
00001 ; Macros e Definições Alvaro Luiz Stendardi Fontes
00002 ; set 2004 mod maio 2005
00003 ;
00004 ;#define c STATUS,C
00005 ;#define z STATUS,Z
00006 ;#define f F
00007 ;#define w W
00008 ;===============================
00009 ; retz
00010 ;===============================
00011 retz macro
00012 btfsc status,z
00013 return
00014 endm
00015 ;===============================
00016 ; retnz
00017 ;===============================
00018 retnz macro
00019 btfss status,z
00020 return
00021 endm
00022 ;===============================
00023 ; brbs byte,bit,label
00024 ;===============================
00025 brbs macro byte,bit,label
00026 btfsc byte,bit
00027 goto label
00028 endm
00029 ;===============================
00030 ; brbc byte,bit,label
00031 ;===============================
00032 brbc macro byte,bit,label
00033 btfss byte,bit
00034 goto label
00035 endm
00036 ;===============================
00037 ; breq label
00038 ;===============================
00039 breq macro addr
00040 btfsc STATUS,Z
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 2
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00041 goto addr
00042 endm
00043 ;
00044 ;===============================
00045 ; brne label
00046 ;===============================
00047 brne macro addr
00048 btfss STATUS,Z
00049 goto addr
00050 endm
00051 ;
00052 ;===============================
00053 ; brcs label
00054 ;===============================
00055 brcs macro addr
00056 btfsc STATUS,C
00057 goto addr
00058 endm
00059 ;
00060 ;===============================
00061 ; brcc label
00062 ;===============================
00063 brcc macro addr
00064 btfss STATUS,C
00065 goto addr
00066 endm
00067 ;
00068 ;===============================
00069 ; ldi reg1,value
00070 ;===============================
00071 ldi macro reg1,value
00072 movlw value
00073 movwf reg1
00074 endm
00075 ;===============================
00076 ; movlf reg1,value
00077 ;===============================
00078 movlf macro reg1,value
00079 movlw value
00080 movwf reg1
00081 endm
00082 ;===============================
00083 ; cpi reg1,value
00084 ; {r1=n->c,z} {r1>n->_,_} {r1c,_}
00085 ;===============================
00086 cpi macro reg1,value
00087 movf reg1,W
00088 sublw value
00089 endm
00090 ;
00091 ;===============================
00092 ; cp reg1,reg2 (reg1:reg2)
00093 ;===============================
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 3
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00094 cp macro reg1,reg2
00095 movf reg1,W
00096 subwf reg2,W
00097 endm
00098 ;
00099 ;===============================
00100 ; mov reg1,reg2 (reg1=reg2)
00101 ;===============================
00102 mov macro rx1,rx2
00103 movf rx2,W
00104 movwf rx1
00105 endm
00106
00107 ;===============================
00108 ; addi reg,value (reg=reg+value)
00109 ;===============================
00110 addi macro reg,value
00111 movf reg,W
00112 addlw value
00113 movwf reg
00114 endm
00115 ;
00116 ;===============================
00117 ; add r1,r2 (r1=r1+r2)
00118 ;===============================
00119 add macro reg1,reg2
00120 movf reg2,W
00121 addwf reg1,F
00122 endm
00123 ;;
00124 ;===============================
00125 ; subi r1,value (r1=r1-value)
00126 ;===============================
00127 subi macro reg1,value
00128 movlw value
00129 subwf reg1,F
00130 endm
00131 ;;
00132 ;===============================
00133 ; sub r1,r2 (r1=r1-r2)
00134 ;===============================
00135 sub macro reg1,reg2
00136 movf reg2,W
00137 subwf reg1,F
00138 endm
00139 ;;
00140 ;===============================
00141 ; andi r1,value (r1=r1 & value)
00142 ;===============================
00143 andi macro reg1,value
00144 movlw value
00145 andwf reg1,F
00146 endm
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 4
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00147 ;
00148 ;===============================
00149 ; and r1,r2 (r1=r1 & r2)
00150 ;===============================
00151 and macro reg1,reg2
00152 movf reg2,W
00153 andwf reg1,F
00154 endm
00155 ;
00156 ;===============================
00157 ; ori r1,value
00158 ;===============================
00159 ori macro reg1,value
00160 movlw value
00161 iorwf reg1,F
00162 endm
00163 ;;
00164 ;===============================
00165 ; or r1,r2 (r1=r1|r2)
00166 ;===============================
00167 or macro reg1,reg2
00168 movf reg2,W
00169 iorwf reg1,F
00170 endm
00171 ;===============================
00172 ; bank0
00173 ;===============================
00174 bank0 macro
00175 bcf STATUS,RP0
00176 endm
00177 ;;
00178 ;===============================
00179 ; bank1
00180 ;===============================
00181 bank1 macro
00182 bsf STATUS,RP0
00183 endm
00184
00185 ;
00186 ;===============================
00187 ; TROCA RA,RB COM RC,RD, usa re
00188 ;===============================
00189 rabXrcd macro
00190 mov re,ra
00191 mov ra,rc
00192 mov rc,re
00193 mov re,rb
00194 mov rb,rd
00195 mov rd,re
00196 endm
00197 ;
00198 ;===============================
00199 ; soma 16 bits rab=rab+rcd AN526
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 5
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00200 ;===============================
00201 add16 macro
00202 add rb,rd
00203 btfsc STATUS,C
00204 incf ra,F
00205 add ra,rc
00206 endm
00207 ;
00208 ;
00209 ;===============================
00210 ; sub 16 bits rab=rab-rcd
00211 ;===============================
00212 sub16 macro
00213 comf rd,F
00214 incf rd,F
00215 btfsc STATUS,Z
00216 decf rc,F
00217 comf rc,F
00218 add16
00219 endm
Warning[205]: Found directive in column 1. (list)
00010 list P=PIC12F675
00011
Warning[205]: Found directive in column 1. (__CONFIG)
2007 3F6C 00012 __CONFIG _CP_ON & _WDT_ON & _BODEN_ON & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _MCLRE_ON & _CPD_OFF
00013 ;====================================================
00000003 00014 status equ STATUS
00015 ;====================================================
00016 #define dis_data GPIO,0
00017 #define bit_tx GPIO,1
00018 #define ana GPIO,2
00019 #define dis_key GPIO,3
00020 #define dis_clk GPIO,4
00021 #define dis_lt GPIO,5
00022
00023 #define led_pt1 led,7
00024 #define led_pt2 led,6
00025 #define led_sp led,0
00026
00027 #define rele_pt1 rele,1
00028 #define rele_pt2 rele,0
00029 #define rele_sp rele,2
00030
00031 #define letra_P 0xae
00032 #define letra_t 0x1e
00033 #define letra_o 0x5c
00034 #define letra_r 0x0c
00035 #define letra_m 0x04
00036 #define letra_S 0x76
00037 #define letra_1 0xc0
00038 #define letra_2 0xbc
00039 #define letra_n 0x4c
00040 #define letra_F 0x2e
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 6
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00041 #define letra_A 0xee
00042 #define letra_H 0xce
00043 #define letra_C 0x3a
00044 ;=======================================================
00000020 00045 dg0 equ 0x20
00000021 00046 dg1 equ 0x21
00000022 00047 dg2 equ 0x22
00000023 00048 led equ 0x23
00000024 00049 extra equ 0x24
00000025 00050 rele equ 0x25
00000026 00051 cdig equ 0x26
00052 ;------------------
00000027 00053 flip equ 0x27
00054 #define k1a flip,0 ;sem tecla=0
00055 #define MM flip,1 ;
00056 #define poder flip,2 ;
00057 #define tipo flip,3
00058 #define limite flip,4 ;ajuda limite + e -
00059 #define bnanf flip,5
00060 #define freekey flip,6 ;espera free key
00061 #define gravar flip,7 ;dado dif gravar em e2prom
00062 ;------------------
00000028 00063 flop equ 0x28
00064 #define ponto flop,0 ;=1 acende ponto de dg0
00065 #define opr flop,1 ;=0 hab operaçao controle
00066 #define pisca flip,2 ;=1 piscar display
00067 ;------------------
00000029 00068 rkey equ 0x29
0000002A 00069 rkey2 equ 0x2a
00070
0000002B 00071 ra equ 0x2b
0000002C 00072 rb equ 0x2c
0000002D 00073 rc equ 0x2d
0000002E 00074 rd equ 0x2e
00075
0000002F 00076 re equ 0x2f
00000030 00077 rf equ 0x30
00000031 00078 rg equ 0x31
00000032 00079 ria equ 0x32
00000033 00080 rib equ 0x33
00000034 00081 ric equ 0x34
00000035 00082 rid equ 0x35
00083
00000036 00084 wr equ 0x36
00000037 00085 st equ 0x37
00000038 00086 fsrr equ 0x38
00087
00000039 00088 count equ 0x39
0000003A 00089 temp equ 0x3a
0000003B 00090 presc5 equ 0x3b
0000003C 00091 presc1s equ 0x3c
0000003D 00092 tdesiste equ 0x3d ;tempo desiste
0000003E 00093 twk equ 0x3e ;tempo wait key
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 7
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00094
0000003F 00095 tini equ 0x3f ;tempo start
00000040 00096 ton equ 0x40
00000041 00097 toff equ 0x41
00000042 00098 vh equ 0x42
00000043 00099 vl equ 0x43
00000044 00100 setp equ 0x44
00000045 00101 temp_H equ 0x45
00000046 00102 temp_L equ 0x46
00103
00000047 00104 adr_e2pr equ 0x47
00000048 00105 adr_e2pw equ 0x48
00000049 00106 data_e2p equ 0x49
00107
0000004A 00108 VPMh equ 0x4a
0000004B 00109 VPMl equ 0x4b
0000004C 00110 VPmh equ 0x4c
0000004D 00111 VPml equ 0x4d
0000004E 00112 DIF equ 0x4e
00113
0000004F 00114 BW equ 0x4f
00000050 00115 presc10 equ 0x50
00000051 00116 last equ 0x51
00000052 00117 tpro equ 0x52 ;tempo proporcional
00000053 00118 timerx equ 0x53
00000054 00119 debaucing equ 0x54
00000055 00120 delay equ 0x55
00000056 00121 ropr equ 0x56 ;0x56/57 2 bytes tempo de opr qdo dif de zero na e2prom
00000058 00122 presc8 equ 0x58
00123
00124 ; ============================
0000 00125 org 0
0000 281E 00126 goto inicio ;start
00127
0004 00128 org 4
0004 2B27 00129 goto int_timer0
00130
00131 ; ============================
00132 ; ======== T A B U A S ======
00133 ; ============================
00134
Warning[207]: Found label after column 1. (tabua7seg)
0005 00135 tabua7seg:
0005 390F 00136 andlw 0x0f
0006 0782 00137 addwf PCL,F
0007 34FA 00138 retlw 0xfa ;0
0008 34C0 00139 retlw 0xc0 ;1
0009 34BC 00140 retlw 0xbc ;2
000A 34F4 00141 retlw 0xf4 ;3
000B 34C6 00142 retlw 0xc6 ;4
000C 3476 00143 retlw 0x76 ;5
000D 347E 00144 retlw 0x7e ;6
000E 34E0 00145 retlw 0xe0 ;7
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 8
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
000F 34FE 00146 retlw 0xfe ;8
0010 34F6 00147 retlw 0xf6 ;9
0011 34EE 00148 retlw 0xee ;A
0012 345E 00149 retlw 0x5e ;B
0013 343A 00150 retlw 0x3a ;C
0014 34DC 00151 retlw 0xdc ;D
0015 343E 00152 retlw 0x3e ;E
0016 342E 00153 retlw 0x2e ;F
0017 3907 00154 tabpos: andlw 0x07
0018 0782 00155 addwf PCL,F
0019 34B8 00156 retlw b'10111000' ;dy0 cdig=0
001A 34D8 00157 retlw b'11011000' ;dy1 cdig=1
001B 34E8 00158 retlw b'11101000' ;dy2 cdig=2
001C 3478 00159 retlw b'01111000' ;dy3 cdig=3
001D 34F0 00160 retlw b'11110000' ;dy4 = ledcdig=4
00161 ;====================================================
00162 ; valores de set na eeprom
00163 ;------------------------------------------------------------
00164 ; 00/01 COMUM Set Point (SP_) de 1 a 900
00165 ; se a soma de PRO e PR- forem < 5 atua como ON/OFF
00166 ; ON qdo VPRO
00167 ;-------------------------------------------------------------
00168 ; 02/03 Pro de 0 a 32
00169 ; 04/05 Pr- de 0 a 32
00170 ; 06/07 tPr de 10 a 50 seg
00171 ;---------------------------------------------------------------
00172 ; 08/09 Pt1 1 a 900 bit7 0/1 NA/NF
00173 ; 0a/0b Pt2 1 a 900 "
00174 ; 0c/0d ttr 0 a 900 seg RS232 TX se =0 OFF
00175 ; 0e/0f ton 0 a 900 minutos
00176 ; ----------------------------------------------------------------
00177 #define sp 0x00
00178 #define pro 0x02
00179 #define prm 0x04
00180 #define tpr 0x06
00181
00182 #define pt1 0x08
00183 #define pt2 0x0a
00184
00185 #define tonz 0x0c
00186 #define ttr 0x0e
00187 ; =========================================
00188 ; ========== S T A R T P R O G =========
00189 ; =========================================
001E 00190 inicio ;start
001E 0183 00191 clrf STATUS
001F 0064 00192 clrwdt
00193
00194 movlf FSR,0x020
0020 3020 M movlw 0x020
0021 0084 M movwf FSR
0022 00195 zeram1:
00196
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 9
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0022 0180 00197 clrf INDF
0023 0A84 00198 incf FSR,F
00199 cpi FSR,0x60
0024 0804 M movf FSR,W
0025 3C60 M sublw 0x60
00200 brne zeram1
0026 1D03 M btfss STATUS,Z
0027 2822 M goto zeram1
00201
0028 3007 00202 movlw 0x07 ;comparador off
0029 0099 00203 movwf CMCON
00204
002A 3089 00205 movlw b'10001001';hab ana2
002B 009F 00206 movwf ADCON0
002C 149F 00207 bsf ADCON0,1
00208
00209 bank1
002D 1683 M bsf STATUS,RP0
002E 3064 00210 movlw b'01100100';fosc/64 e analogic inp ans2
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
002F 009F 00211 movwf ANSEL
00212
0030 300D 00213 movlw b'00001101'
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0031 0085 00214 movwf TRISIO
00215
0032 3001 00216 movlw b'00000001' ;pull up
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0033 0095 00217 movwf WPU
00218
0034 308F 00219 movlw b'10001111' ;$81 pullup gpio,
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0035 0081 00220 movwf OPTION_REG
00221
0036 0183 00222 clrf STATUS ;bank0
0037 30E0 00223 movlw b'11100000'
0038 008B 00224 movwf INTCON ;hab int 0
00225
00226 movlf presc1s,.10
0039 300A M movlw .10
003A 00BC M movwf presc1s
00227 movlf presc8,4
003B 3004 M movlw 4
003C 00D8 M movwf presc8
003D 1485 00228 bsf bit_tx
00229 ; ================================
00230 ; teste carga e2prom
00231 movlf adr_e2pw,0x02 ;pro+ h
003E 3002 M movlw 0x02
003F 00C8 M movwf adr_e2pw
0040 21CF 00232 call e2pr
Message[305]: Using default destination of 1 (file).
0041 08C9 00233 movf data_e2p
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 10
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00234 breq loop0
0042 1903 M btfsc STATUS,Z
0043 2866 M goto loop0
00235 ; -----------------------------------
0044 00236 setep:
00237 ;SP 0x00/01
00238 movlf adr_e2pw,sp
0044 3000 M movlw 0x00
0045 00C8 M movwf adr_e2pw
0046 01C9 00239 clrf data_e2p ;movlw high(.100)
0047 21DC 00240 call e2pw
0048 3064 00241 movlw low (.100)
0049 00C9 00242 movwf data_e2p
004A 21DC 00243 call e2pw
00244
00245 ;pro 0x02/03
004B 01C9 00246 clrf data_e2p
004C 21DC 00247 call e2pw
004D 3014 00248 movlw .20
004E 00C9 00249 movwf data_e2p
004F 21DC 00250 call e2pw
00251
00252 ;pr- 0x04/05
0050 01C9 00253 clrf data_e2p
0051 21DC 00254 call e2pw
0052 3014 00255 movlw .20
0053 00C9 00256 movwf data_e2p
0054 21DC 00257 call e2pw
00258
00259 ;tpr h 0x06/07
0055 01C9 00260 clrf data_e2p
0056 21DC 00261 call e2pw
0057 300A 00262 movlw .10
0058 00C9 00263 movwf data_e2p
0059 21DC 00264 call e2pw
00265
00266 ;pt1 0x08/09
005A 3080 00267 movlw 0x80
005B 00C9 00268 movwf data_e2p
005C 21DC 00269 call e2pw
005D 3050 00270 movlw .80
005E 00C9 00271 movwf data_e2p
005F 21DC 00272 call e2pw
00273
00274 ;pt2 0x0a/0b
0060 3000 00275 movlw high(.120)
0061 00C9 00276 movwf data_e2p
0062 21DC 00277 call e2pw
0063 3078 00278 movlw low (.120)
0064 00C9 00279 movwf data_e2p
0065 21DC 00280 call e2pw
00281
00282 ; =========================================
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 11
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00283 ; ======== I N I C I A L I Z A D O R ======
00284 ; =========================================
0066 00285 loop0:
0066 01A5 00286 clrf rele
0067 01A3 00287 clrf led
00288 movlf tini,.3 ;5
0068 3003 M movlw .3
0069 00BF M movwf tini
006A 00289 loop:
00290
006A 23A2 00291 call set_dog ;clrwdt
00292
00293
006B 08BE 00294 movf twk,F
006C 1D03 00295 btfss STATUS,Z
006D 2898 00296 goto loop1
00297 ; ---------- amostras -------
00298 movlf twk,0x10
006E 3010 M movlw 0x10
006F 00BE M movwf twk
0070 2222 00299 call get_ana
0071 08BF 00300 movf tini,f
00301 brne loop5
0072 1D03 M btfss STATUS,Z
0073 2879 M goto loop5
00302
0074 1085 00303 bcf bit_tx
0075 228D 00304 call calc
0076 21F3 00305 call control12
0077 2251 00306 call controle
0078 2883 00307 goto loop6
00308 ;----------- nao venceu tini ------
0079 00309 loop5:
00310 movlf dg0,0xff
0079 30FF M movlw 0xff
007A 00A0 M movwf dg0
00311 movlf dg1,0xff
007B 30FF M movlw 0xff
007C 00A1 M movwf dg1
00312 movlf dg2,0xff
007D 30FF M movlw 0xff
007E 00A2 M movwf dg2
00313 movlf led,0xff
007F 30FF M movlw 0xff
0080 00A3 M movwf led
0081 01A5 00314 clrf rele
0082 286A 00315 goto loop
00316 ; ---------- sensor aberto ? -----
0083 00317 loop6:
00318 movlf ra,high(.900)
0083 3003 M movlw high(.900)
0084 00AB M movwf ra
00319 movlf rb,low (.900)
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 12
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0085 3084 M movlw low (.900)
0086 00AC M movwf rb
00320 mov rc,vh
0087 0842 M movf vh,W
0088 00AD M movwf rc
00321 mov rd,vl
0089 0843 M movf vl,W
008A 00AE M movwf rd
008B 22EB 00322 call comp2by ;compara
00323 brcc loop4 ; 900 > valor lido
008C 1C03 M btfss STATUS,C
008D 2896 M goto loop4
00324 movlf dg0,0xa6
008E 30A6 M movlw 0xa6
008F 00A0 M movwf dg0
00325 movlf dg1,0xa6
0090 30A6 M movlw 0xa6
0091 00A1 M movwf dg1
00326 movlf dg2,0xa6
0092 30A6 M movlw 0xa6
0093 00A2 M movwf dg2
0094 1527 00327 bsf pisca
0095 2898 00328 goto loop1
00329 ; ---------- controles ------
0096 00330 loop4:
0096 223D 00331 call show_ana
0097 1127 00332 bcf pisca
00333 ; -----------------------------------
0098 00334 loop1:
0098 08D5 00335 movf delay,F
0099 1D03 00336 btfss STATUS,Z
009A 289D 00337 goto loop3
00338 ; call send_asc
00339 movlf delay,.5
009B 3005 M movlw .5
009C 00D5 M movwf delay
00340
009D 00341 loop3:
009D 21A2 00342 call get_key
00343 cpi rkey2,4
009E 082A M movf rkey2,W
009F 3C04 M sublw 4
00344 brne loop
00A0 1D03 M btfss STATUS,Z
00A1 286A M goto loop
00345 ; =========================================
00346 ; ====== S E T P R O G R A M A =========
00347 ; =========================================
00348 ; SP (0-900) flip5=0
00349 ;
00350 ; Pro (proporcional mais (0-50) flip5=1
00351 ; Pr- (proporcional menos) (0-50) flip5=1
00352 ; tPr (tempo PWM proporcional)(0-50)seg flip5=1
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 13
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00353 ;
00354 ; Pt1 (ponto PT1 de 0 a 900) bit7 Pt1H NA/NF flip5=0
00355 ; Pt2 (ponto PT2 de 0 a 900) " " flip5=0
00356 ;
00357 ; ttr (tempo entre rs232 de 0 a 900 seg) flip5=0
00358 ;
00359 ; ton (tempo ligado apos atingir SP) (0-900)min flip5=0
00360 ;
00361 ;==========================
00362 ;sp
00A2 01A5 00363 clrf rele
00A3 01C0 00364 clrf ton
00A4 01A3 00365 clrf led
00A5 11A7 00366 bcf tipo
00A6 1227 00367 bcf limite
00A7 01C7 00368 clrf adr_e2pr ;movlf adr_e2p,sp ; sp
00A8 01C4 00369 clrf setp ;setp=0
00370 movlf dg2,letra_S ;S
00A9 3076 M movlw 0x76
00AA 00A2 M movwf dg2
00371 movlf dg1,letra_P ;P
00AB 30AE M movlw 0xae
00AC 00A1 M movwf dg1
00372 movlf dg0,0x00 ;
00AD 3000 M movlw 0x00
00AE 00A0 M movwf dg0
00AF 20F6 00373 call comum
00374
00375 ;==========================
00376 ;pro adr_e2p sempre que chamado faz ++ em si adr_e2p=pro
00B0 1627 00377 bsf limite
00378 movlf dg2,letra_P
00B1 30AE M movlw 0xae
00B2 00A2 M movwf dg2
00379 movlf dg1,letra_r
00B3 300C M movlw 0x0c
00B4 00A1 M movwf dg1
00380 movlf dg0,letra_o
00B5 305C M movlw 0x5c
00B6 00A0 M movwf dg0
00B7 20F6 00381 call comum
00382 ;==========================
00383 ;pr- adr_e2p sempre que chamado faz ++ em si adr_e2p=pr-
00384 movlf dg2,letra_P
00B8 30AE M movlw 0xae
00B9 00A2 M movwf dg2
00385 movlf dg1,letra_r
00BA 300C M movlw 0x0c
00BB 00A1 M movwf dg1
00386 movlf dg0,letra_m
00BC 3004 M movlw 0x04
00BD 00A0 M movwf dg0
00BE 20F6 00387 call comum
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 14
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00388
00389 ;==========================
00390 ;tpr adr_e2p sempre que chamado faz ++ em si adr_e2p=tpro
00391 movlf dg2,letra_t
00BF 301E M movlw 0x1e
00C0 00A2 M movwf dg2
00392 movlf dg1,letra_P
00C1 30AE M movlw 0xae
00C2 00A1 M movwf dg1
00393 movlf dg0,letra_r
00C3 300C M movlw 0x0c
00C4 00A0 M movwf dg0
00C5 20F6 00394 call comum
00395 ;==========================
00396 ;pt1: qdo setp=4 e 6 adr_e2p continua o mesmo ; adr_e2p=pt1
00C6 1227 00397 bcf limite
00398 movlf dg2,letra_P
00C7 30AE M movlw 0xae
00C8 00A2 M movwf dg2
00399 movlf dg1,letra_t
00C9 301E M movlw 0x1e
00CA 00A1 M movwf dg1
00400 movlf dg0,letra_1
00CB 30C0 M movlw 0xc0
00CC 00A0 M movwf dg0
00CD 20F6 00401 call comum
00402 ;==========================
00403 ;pt1 na.nf setp=5 quando sair daqui adr_e2p=pt2
00CE 15A7 00404 bsf tipo
00405 movlf dg2,letra_C
00CF 303A M movlw 0x3a
00D0 00A2 M movwf dg2
00406 movlf dg1,letra_H
00D1 30CE M movlw 0xce
00D2 00A1 M movwf dg1
00407 movlf dg0,letra_1
00D3 30C0 M movlw 0xc0
00D4 00A0 M movwf dg0
00D5 20F6 00408 call comum
00409 ;==========================
00410 ;pt2: qdo setp=4 e 6 adr_e2p continua o mesmo ; adr_e2p=pt2
00D6 11A7 00411 bcf tipo
00412 movlf dg2,letra_P
00D7 30AE M movlw 0xae
00D8 00A2 M movwf dg2
00413 movlf dg1,letra_t
00D9 301E M movlw 0x1e
00DA 00A1 M movwf dg1
00414 movlf dg0,letra_2
00DB 30BC M movlw 0xbc
00DC 00A0 M movwf dg0
00DD 20F6 00415 call comum
00416 ;==========================
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 15
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00417 ;pt2 na.nf setp=5 quando sair daqui adr_e2p=ttr
00DE 15A7 00418 bsf tipo
00419 movlf dg2,letra_C
00DF 303A M movlw 0x3a
00E0 00A2 M movwf dg2
00420 movlf dg1,letra_H
00E1 30CE M movlw 0xce
00E2 00A1 M movwf dg1
00421 movlf dg0,letra_2
00E3 30BC M movlw 0xbc
00E4 00A0 M movwf dg0
00E5 20F6 00422 call comum
00423 ;==========================
00424 movlf dg2,4
00E6 3004 M movlw 4
00E7 00A2 M movwf dg2
00425 movlf dg1,4
00E8 3004 M movlw 4
00E9 00A1 M movwf dg1
00426 movlf dg0,4
00EA 3004 M movlw 4
00EB 00A0 M movwf dg0
00427
00428 movlf twk,.100
00EC 3064 M movlw .100
00ED 00BE M movwf twk
00EE 00429 esper1:
00430 ; call get_key
00EE 08BE 00431 movf twk,F
00432 brne esper1
00EF 1D03 M btfss STATUS,Z
00F0 28EE M goto esper1
00433
00F1 1727 00434 bsf freekey
00F2 00435 esper:
00F2 21A2 00436 call get_key
00437 brbs freekey,esper
00F3 1B27 M btfsc flip,6
00F4 28F2 M goto esper
00F5 2866 00438 goto loop0
00439 ;==================
00440 ; down1 usado como tempo sem tecla abandono
00441 ; down2 15seg escrita e 5 seg u/d
00442 ;
00F6 00443 comum:
00F6 21A2 00444 call get_key
00445 cpi rkey,0
00F7 0829 M movf rkey,W
00F8 3C00 M sublw 0
00446 brne comum
00F9 1D03 M btfss STATUS,Z
00FA 28F6 M goto comum
00FB 14A7 00447 bsf MM
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 16
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00448 movlf twk,.50
00FC 3032 M movlw .50
00FD 00BE M movwf twk
00FE 00449 com0a:
00FE 21B7 00450 call getk1
00451 cpi twk,.20
00FF 083E M movf twk,W
0100 3C14 M sublw .20
00452 brcc com0a
0101 1C03 M btfss STATUS,C
0102 28FE M goto com0a
00453
00454 mov adr_e2pw,adr_e2pr
0103 0847 M movf adr_e2pr,W
0104 00C8 M movwf adr_e2pw
0105 1527 00455 bsf pisca
0106 21BA 00456 call get_e2p
0107 13A7 00457 bcf gravar
0108 1727 00458 bsf freekey ;flip,6
00459 brbs tipo,chave
0109 19A7 M btfsc flip,3
010A 2945 M goto chave
010B 00460 com0:
010B 21A2 00461 call get_key
010C 08BE 00462 movf twk,f
00463 brne com0
010D 1D03 M btfss STATUS,Z
010E 290B M goto com0
010F 00464 com1:
010F 21EE 00465 call expo_by
0110 08BD 00466 movf tdesiste,f
00467 breq loop0
0111 1903 M btfsc STATUS,Z
0112 2866 M goto loop0
0113 00468 com3:
0113 21A2 00469 call get_key
00470 brbs rkey2,2,save
0114 192A M btfsc rkey2,2
0115 295E M goto save
00471 brbs k1a,com4
0116 1827 M btfsc flip,0
0117 291E M goto com4
0118 08BE 00472 movf twk,f
00473 brne com1
0119 1D03 M btfss STATUS,Z
011A 290F M goto com1
00474 movlf twk,.5
011B 3005 M movlw .5
011C 00BE M movwf twk
011D 2921 00475 goto com5
011E 00476 com4:
011E 1027 00477 bcf k1a
00478 movlf twk,.125 ;base 10ms
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 17
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
011F 307D M movlw .125
0120 00BE M movwf twk
0121 00479 com5:
00480 cpi rkey2,3
0121 082A M movf rkey2,W
0122 3C03 M sublw 3
00481 breq com7
0123 1903 M btfsc STATUS,Z
0124 2930 M goto com7
00482
0125 1127 00483 bcf poder
00484 brbs rkey2,1,com6
0126 18AA M btfsc rkey2,1
0127 292D M goto com6
00485 brbc rkey2,0,com1
0128 1C2A M btfss rkey2,0
0129 290F M goto com1
012A 2195 00486 call decre
012B 14A7 00487 bsf MM
012C 290F 00488 goto com1
012D 00489 com6:
012D 2176 00490 call incre
012E 10A7 00491 bcf MM
012F 290F 00492 goto com1
0130 00493 com7:
00494 brbs limite,com1
0130 1A27 M btfsc flip,4
0131 290F M goto com1
00495 brbs poder,com1
0132 1927 M btfsc flip,2
0133 290F M goto com1
0134 1527 00496 bsf poder
00497 movlf twk,.50
0135 3032 M movlw .50
0136 00BE M movwf twk
0137 17A7 00498 bsf gravar
00499 brbs MM,com7a
0138 18A7 M btfsc flip,1
0139 2940 M goto com7a
00500
00501 addi temp_L,.99
013A 0846 M movf temp_L,W
013B 3E63 M addlw .99
013C 00C6 M movwf temp_L
013D 1803 00502 btfsc STATUS,C
Message[305]: Using default destination of 1 (file).
013E 0AC5 00503 incf temp_H
00504
00505 ; call expo_by
00506 ;com7b:
00507 ; call get_key
00508 ; cpi rkey2,0
00509 ; brne com7b
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 18
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
013F 290F 00510 goto com1
0140 00511 com7a:
0140 01C5 00512 clrf temp_H
0141 01C6 00513 clrf temp_L
0142 290F 00514 goto com1
00515 ;
0143 00516 tn3:
0143 12A7 00517 bcf bnanf
0144 2958 00518 goto tn5
0145 00519 chave:
0145 21A2 00520 call get_key
0146 08BD 00521 movf tdesiste,f
00522 breq loop0
0147 1903 M btfsc STATUS,Z
0148 2866 M goto loop0
00523 movlf dg1,letra_n
0149 304C M movlw 0x4c
014A 00A1 M movwf dg1
014B 01A2 00524 clrf dg2
00525 brbc bnanf,tn1
014C 1EA7 M btfss flip,5
014D 2951 M goto tn1
00526 movlf dg0,letra_F
014E 302E M movlw 0x2e
014F 00A0 M movwf dg0
0150 2953 00527 goto tn2
0151 00528 tn1:
00529 movlf dg0,letra_A
0151 30EE M movlw 0xee
0152 00A0 M movwf dg0
0153 00530 tn2:
00531 brbs rkey2,0,tn3
0153 182A M btfsc rkey2,0
0154 2943 M goto tn3
00532 brbc rkey2,1,tn4
0155 1CAA M btfss rkey2,1
0156 295A M goto tn4
0157 16A7 00533 bsf bnanf
0158 00534 tn5:
0158 17A7 00535 bsf gravar
0159 2945 00536 goto chave
015A 00537 tn4:
00538 brbs freekey,chave ;flip,6,chave
015A 1B27 M btfsc flip,6
015B 2945 M goto chave
00539 brbc rkey2,2,chave
015C 1D2A M btfss rkey2,2
015D 2945 M goto chave
00540
015E 00541 save:
015E 1127 00542 bcf pisca
00543 cpi setp,4
015F 0844 M movf setp,W
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 19
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0160 3C04 M sublw 4
00544 breq save1
0161 1903 M btfsc STATUS,Z
0162 2967 M goto save1
00545 cpi setp,6
0163 0844 M movf setp,W
0164 3C06 M sublw 6
00546 brne save2
0165 1D03 M btfss STATUS,Z
0166 296A M goto save2
0167 00547 save1:
00548 mov adr_e2pr,adr_e2pw
0167 0848 M movf adr_e2pw,W
0168 00C7 M movwf adr_e2pr
0169 296C 00549 goto save3
016A 00550 save2:
00551 brbc gravar,savef
016A 1FA7 M btfss flip,7
016B 2974 M goto savef
016C 00552 save3:
00553 mov data_e2p,temp_H
016C 0845 M movf temp_H,W
016D 00C9 M movwf data_e2p
016E 1AA7 00554 btfsc bnanf
016F 17C9 00555 bsf data_e2p,7
0170 21DC 00556 call e2pw
00557
00558 mov data_e2p,temp_L
0171 0846 M movf temp_L,W
0172 00C9 M movwf data_e2p
0173 21DC 00559 call e2pw
0174 00560 savef:
0174 0AC4 00561 incf setp,F
0175 0008 00562 return
00563
0176 00564 incre:
0176 17A7 00565 bsf gravar
0177 0AC6 00566 incf temp_L,F
0178 1903 00567 btfsc STATUS,Z
0179 0AC5 00568 incf temp_H,F
017A 1A27 00569 btfsc limite
017B 298D 00570 goto incre2
00571 cpi temp_H,2
017C 0845 M movf temp_H,W
017D 3C02 M sublw 2
017E 1803 00572 btfsc STATUS,C
017F 0008 00573 return
00574 cpi temp_H,3 ;900 = 0x0384
0180 0845 M movf temp_H,W
0181 3C03 M sublw 3
0182 1C03 00575 btfss STATUS,C
0183 2988 00576 goto incre3
00577 cpi temp_L,0x84
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 20
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0184 0846 M movf temp_L,W
0185 3C84 M sublw 0x84
0186 1803 00578 btfsc STATUS,C
0187 0008 00579 return
0188 00580 incre3:
00581 movlf temp_H,0x03
0188 3003 M movlw 0x03
0189 00C5 M movwf temp_H
00582 movlf temp_L,0x84
018A 3084 M movlw 0x84
018B 00C6 M movwf temp_L
018C 0008 00583 return
018D 00584 incre2:
018D 01C5 00585 clrf temp_H
00586 andi temp_L,0x3f
018E 303F M movlw 0x3f
018F 05C6 M andwf temp_L,F
0190 1D03 00587 btfss STATUS,Z
0191 0008 00588 return
00589 movlf temp_L,0x3f
0192 303F M movlw 0x3f
0193 00C6 M movwf temp_L
0194 0008 00590 return
00591
0195 00592 decre:
0195 17A7 00593 bsf gravar
0196 08C5 00594 movf temp_H,F
00595 brne decre1
0197 1D03 M btfss STATUS,Z
0198 299E M goto decre1
0199 08C6 00596 movf temp_L,F
019A 1903 00597 btfsc STATUS,Z
019B 0008 00598 return
019C 03C6 00599 decf temp_L,F
019D 0008 00600 return
019E 00601 decre1:
019E 03C6 00602 decf temp_L,F
019F 1903 00603 btfsc STATUS,Z
01A0 03C5 00604 decf temp_H,F
01A1 0008 00605 return
00606 ;======================================================
00607 ; ;flip0=0 aviso sem ,flip1=1 tecla rep 2a leitura...
00608 ;======================================================
01A2 00609 get_key:
01A2 23A2 00610 call set_dog ; clrwdt
00611
01A3 0829 00612 movf rkey,W ;ver se tem tecla, dif de zero
01A4 3907 00613 andlw 0x07 ;eliminar a 4a tecla
01A5 00AB 00614 movwf ra
00615 cp ra,rkey2
01A6 082B M movf ra,W
01A7 022A M subwf rkey2,W
00616 brne getk2 ;é igual a anterior pode ser branco
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 21
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
01A8 1D03 M btfss STATUS,Z
01A9 29AF M goto getk2
01AA 08AB 00617 movf ra,F
01AB 1D03 00618 btfss STATUS,Z
01AC 29B7 00619 goto getk1
00620
01AD 1327 00621 bcf freekey ;flip,6 ;free key
01AE 0008 00622 return
00623
01AF 00624 getk2:
01AF 0BD4 00625 decfsz debaucing,F
01B0 0008 00626 return
00627
00628 mov rkey2,ra
01B1 082B M movf ra,W
01B2 00AA M movwf rkey2
01B3 1427 00629 bsf k1a ;nao é rep vai ser da prox vez
01B4 00630 getk3:
00631 movlf debaucing,.10
01B4 300A M movlw .10
01B5 00D4 M movwf debaucing
01B6 0008 00632 return
01B7 00633 getk1:
00634 ; clrwdt
00635 movlf tdesiste,.50
01B7 3032 M movlw .50
01B8 00BD M movwf tdesiste
01B9 29B4 00636 goto getk3
00637
01BA 00638 get_e2p:
01BA 12A7 00639 bcf bnanf
00640
00641 mov 0x5a,adr_e2pr
01BB 0847 M movf adr_e2pr,W
01BC 00DA M movwf 0x5a
00642
01BD 21CF 00643 call e2pr
00644 mov temp_H,data_e2p
01BE 0849 M movf data_e2p,W
01BF 00C5 M movwf temp_H
00645
00646 mov 0x5b,adr_e2pr
01C0 0847 M movf adr_e2pr,W
01C1 00DB M movwf 0x5b
00647
01C2 21CF 00648 call e2pr
00649 mov temp_L,data_e2p
01C3 0849 M movf data_e2p,W
01C4 00C6 M movwf temp_L
01C5 1BC5 00650 btfsc temp_H,7
01C6 16A7 00651 bsf bnanf
01C7 13C5 00652 bcf temp_H,7
01C8 0008 00653 return
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 22
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00654
01C9 00655 get_e2pab:
01C9 21BA 00656 call get_e2p
00657 mov ra,temp_H
01CA 0845 M movf temp_H,W
01CB 00AB M movwf ra
00658 mov rb,temp_L
01CC 0846 M movf temp_L,W
01CD 00AC M movwf rb
01CE 0008 00659 return
00660
01CF 00661 e2pr:;;em adr_e2p=EEADR o endereço retorna dado em data_e2p=EEDATA
01CF 138B 00662 bcf INTCON,GIE
00663 bank1
01D0 1683 M bsf STATUS,RP0
01D1 00664 e2prr:
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
01D1 181C 00665 btfsc EECON1,RD
01D2 29D1 00666 goto e2prr
00667 mov EEADR,adr_e2pr
01D3 0847 M movf adr_e2pr,W
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
01D4 009B M movwf EEADR
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
01D5 141C 00668 bsf EECON1,RD
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
01D6 081A 00669 movf EEDATA,W
01D7 00C9 00670 movwf data_e2p
00671 bank0
01D8 1283 M bcf STATUS,RP0
01D9 178B 00672 bsf INTCON,GIE
01DA 0AC7 00673 incf adr_e2pr,F
01DB 0008 00674 return
00675
01DC 00676 e2pw: ;em rb=EEADR o endereço e ra=EEDATA dado ser gravado
00677 ; clrwdt
01DC 138B 00678 bcf INTCON,GIE
00679 bank1
01DD 1683 M bsf STATUS,RP0
01DE 00680 e2pww:
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
01DE 189C 00681 btfsc EECON1,WR
01DF 29DE 00682 goto e2pww
00683 mov EEADR,adr_e2pw
01E0 0848 M movf adr_e2pw,W
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
01E1 009B M movwf EEADR
00684 mov EEDATA,data_e2p
01E2 0849 M movf data_e2p,W
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
01E3 009A M movwf EEDATA
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
01E4 151C 00685 bsf EECON1,WREN
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 23
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00686 movlf EECON2,0x55
01E5 3055 M movlw 0x55
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
01E6 009D M movwf EECON2
00687 movlf EECON2,0xAA
01E7 30AA M movlw 0xAA
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
01E8 009D M movwf EECON2
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
01E9 149C 00688 bsf EECON1,WR
00689 bank0
01EA 1283 M bcf STATUS,RP0
01EB 178B 00690 bsf INTCON,GIE
01EC 0AC8 00691 incf adr_e2pw,F
01ED 0008 00692 return
00693
01EE 00694 expo_by:
00695 mov rd,temp_H
01EE 0845 M movf temp_H,W
01EF 00AE M movwf rd
00696 mov re,temp_L
01F0 0846 M movf temp_L,W
01F1 00AF M movwf re
01F2 2A41 00697 goto show_c
00698 ;******************************************
01F3 00699 control12:
00700 movlf adr_e2pr,pt1 ;local e2prom
01F3 3008 M movlw 0x08
01F4 00C7 M movwf adr_e2pr
01F5 2208 00701 call cpx ;pegar e comparar
00702 breq crt1
01F6 1903 M btfsc STATUS,Z
01F7 29FE M goto crt1
00703
01F8 10A5 00704 bcf rele_pt1
01F9 13A3 00705 bcf led_pt1
01FA 1C2F 00706 btfss re,0 ;ver se é on/off?
01FB 29FE 00707 goto crt1
01FC 14A5 00708 bsf rele_pt1
01FD 17A3 00709 bsf led_pt1
01FE 00710 crt1:
01FE 2208 00711 call cpx
00712 breq crt2
01FF 1903 M btfsc STATUS,Z
0200 2A07 M goto crt2
00713
0201 1025 00714 bcf rele_pt2
0202 1323 00715 bcf led_pt2
0203 1C2F 00716 btfss re,0
0204 2A07 00717 goto crt2
0205 1425 00718 bsf rele_pt2
0206 1723 00719 bsf led_pt2
0207 00720 crt2:
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 24
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0207 0008 00721 return
00722
0208 00723 cpx:
0208 01AF 00724 clrf re
0209 01B0 00725 clrf rf ;local aviso na=0, nf=1
020A 21BA 00726 call get_e2p
00727 mov ra,temp_H
020B 0845 M movf temp_H,W
020C 00AB M movwf ra
00728 mov rb,temp_L
020D 0846 M movf temp_L,W
020E 00AC M movwf rb
020F 1AA7 00729 btfsc bnanf ;test bit na/nf
0210 1430 00730 bsf rf,0 ;é nf
00731 mov rc,vh
0211 0842 M movf vh,W
0212 00AD M movwf rc
00732 mov rd,vl
0213 0843 M movf vl,W
0214 00AE M movwf rd
00733
0215 13AB 00734 bcf ra,7 ;tirar bit na/nf
0216 22EB 00735 call comp2by ;compara
00736 breq cpx3
0217 1903 M btfsc STATUS,Z
0218 2A21 M goto cpx3
00737 brcc cpx2 ;set > valor lido (re=0)
0219 1C03 M btfss STATUS,C
021A 2A1C M goto cpx2
021B 142F 00738 bsf re,0 ;aviso set <= valor lido (re=1)
021C 00739 cpx2:
021C 0830 00740 movf rf,W
021D 062F 00741 xorwf re,W
021E 3901 00742 andlw 1
021F 00AF 00743 movwf re
0220 1103 00744 bcf STATUS,Z
0221 00745 cpx3:
0221 0008 00746 return
00747
00748 ;******************************************
00749
0222 00750 get_ana:
Warning[206]: Found call to macro in column 1. (brbs)
00751 brbs ADCON0,GO_DONE,geta1;(adcó nzero) if bit=1 wait
0222 189F M btfsc ADCON0,GO_DONE
0223 2A3B M goto geta1
0224 138B 00752 bcf INTCON,GIE ;off interrupt
00753 mov ra,ADRESH
0225 081E M movf ADRESH,W
0226 00AB M movwf ra
00754 bank1
0227 1683 M bsf STATUS,RP0
00755 mov rb,ADRESL
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 25
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0228 081E M movf ADRESL,W
0229 00AC M movwf rb
00756 bank0
022A 1283 M bcf STATUS,RP0
022B 178B 00757 bsf INTCON,GIE ;on interrupt
022C 149F 00758 bsf ADCON0,GO_DONE
00759 add rb,vl
022D 0843 M movf vl,W
022E 07AC M addwf rb,F
022F 1803 00760 btfsc STATUS,C
0230 0AAB 00761 incf ra,F
00762 add ra,vh
0231 0842 M movf vh,W
0232 07AB M addwf ra,F
0233 0CAB 00763 rrf ra,F
0234 0CAC 00764 rrf rb,F
00765 mov vl,rb
0235 082C M movf rb,W
0236 00C3 M movwf vl
00766 mov vh,ra
0237 082B M movf ra,W
0238 00C2 M movwf vh
0239 3001 00767 movlw 1
023A 0008 00768 return
023B 00769 geta1:
023B 0103 00770 clrw
023C 0008 00771 return
00772 ;===== mostrar no display o valor analogico lido====================
023D 00773 show_ana:
00774 mov rd,vh
023D 0842 M movf vh,W
023E 00AE M movwf rd
00775 mov re,vl
023F 0843 M movf vl,W
0240 00AF M movwf re
0241 00776 show_c:
0241 2304 00777 call b2_bcd
0242 082C 00778 movf rb,W
0243 390F 00779 andlw 0x0f
00780 breq show1
0244 1903 M btfsc STATUS,Z
0245 2A49 M goto show1
00781
0246 2005 00782 call tabua7seg
0247 00A2 00783 movwf dg2
0248 2A4A 00784 goto show2
0249 00785 show1:
0249 01A2 00786 clrf dg2
024A 00787 show2:
024A 0E2D 00788 swapf rc,W
024B 2005 00789 call tabua7seg
024C 00A1 00790 movwf dg1
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 26
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
024D 082D 00791 movf rc,W
024E 2005 00792 call tabua7seg
024F 00A0 00793 movwf dg0
0250 0008 00794 return
00795 ;============== aquecimento control
0251 00796 controle:
00797 mov rc,vh
0251 0842 M movf vh,W
0252 00AD M movwf rc
00798 mov rd,vl
0253 0843 M movf vl,W
0254 00AE M movwf rd
00799 mov ra,VPMh
0255 084A M movf VPMh,W
0256 00AB M movwf ra
00800 mov rb,VPMl
0257 084B M movf VPMl,W
0258 00AC M movwf rb
0259 22EB 00801 call comp2by
00802 brcs cont7 ;VPM < V
025A 1803 M btfsc STATUS,C
025B 2A6F M goto cont7
00803
00804 mov ra,VPmh
025C 084C M movf VPmh,W
025D 00AB M movwf ra
00805 mov rb,VPml
025E 084D M movf VPml,W
025F 00AC M movwf rb
0260 22EB 00806 call comp2by
00807 brcc cont8 ;VPm > V
0261 1C03 M btfss STATUS,C
0262 2A73 M goto cont8
00808
0263 08C1 00809 movf toff,F
0264 1903 00810 btfsc STATUS,Z
0265 2A75 00811 goto proporcional
00812
0266 08C0 00813 movf ton,F
00814 breq cont5
0267 1903 M btfsc STATUS,Z
0268 2A6C M goto cont5
0269 00815 cont6:
0269 1525 00816 bsf rele_sp
026A 1423 00817 bsf led_sp
00818
00819 ; movlf led,0xff
00820
026B 0008 00821 return
026C 00822 cont5:
026C 1125 00823 bcf rele_sp
026D 1023 00824 bcf led_sp
026E 0008 00825 return
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 27
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
026F 00826 cont7:
00827 mov toff,tpro
026F 0852 M movf tpro,W
0270 00C1 M movwf toff
0271 01C0 00828 clrf ton
0272 2A6C 00829 goto cont5
0273 00830 cont8:
0273 01C1 00831 clrf toff
0274 2A69 00832 goto cont6
00833
0275 00834 proporcional:
00835 mov ra,VPMh
0275 084A M movf VPMh,W
0276 00AB M movwf ra
00836 mov rb,VPMl ;fazer D=VPM-Vlido
0277 084B M movf VPMl,W
0278 00AC M movwf rb
00837 mov rc,vh
0279 0842 M movf vh,W
027A 00AD M movwf rc
00838 mov rd,vl
027B 0843 M movf vl,W
027C 00AE M movwf rd
00839
027D 22BC 00840 call sub2by
00841 mov DIF,rb
027E 082C M movf rb,W
027F 00CE M movwf DIF
00842
00843 mov ra,tpro ;.20 ;DIFx20
0280 0852 M movf tpro,W
0281 00AB M movwf ra
0282 22F2 00844 call mul8x8
00845
0283 01AD 00846 clrf rc
00847 mov rd,BW
0284 084F M movf BW,W
0285 00AE M movwf rd
0286 22D5 00848 call div16 ;DIFx20/BW
0287 1003 00849 bcf STATUS,C
00850 ; rrf rb,F
00851 mov ton,rb
0288 082C M movf rb,W
0289 00C0 M movwf ton
00852
00853 mov toff,tpro
028A 0852 M movf tpro,W
028B 00C1 M movwf toff
028C 0008 00854 return
00855 ; ======================================================
00856 ; ========== CALCULO DOS VALORES PRA CONTROLE ==========
00857 ; ======================================================
028D 00858 calc:
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 28
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00859 movlf adr_e2pr,sp ;pegar o valor bcd de VSET
028D 3000 M movlw 0x00
028E 00C7 M movwf adr_e2pr
028F 21C9 00860 call get_e2pab
00861
00862 mov VPmh,ra ;para usar SET logo mais
0290 082B M movf ra,W
0291 00CC M movwf VPmh
00863 mov VPml,rb
0292 082C M movf rb,W
0293 00CD M movwf VPml
00864
00865 movlf adr_e2pr,pro ;pegar PRO+
0294 3002 M movlw 0x02
0295 00C7 M movwf adr_e2pr
0296 21C9 00866 call get_e2pab
00867 mov DIF,rb ;usar depois PRO+
0297 082C M movf rb,W
0298 00CE M movwf DIF
00868
00869 mov rc,VPmh ;calculando VP+
0299 084C M movf VPmh,W
029A 00AD M movwf rc
00870 mov rd,VPml
029B 084D M movf VPml,W
029C 00AE M movwf rd
029D 22B5 00871 call add2by ;Vset+Vpro=VP+
00872 mov VPMh,ra
029E 082B M movf ra,W
029F 00CA M movwf VPMh
00873 mov VPMl,rb
02A0 082C M movf rb,W
02A1 00CB M movwf VPMl
00874
00875 ; movlf adr_e2pr,prm ;pegar PRO-
02A2 21C9 00876 call get_e2pab
00877 mov BW,rb ;usar depois PRO+
02A3 082C M movf rb,W
02A4 00CF M movwf BW
00878
00879 mov rc,VPmh ;calculando VP-
02A5 084C M movf VPmh,W
02A6 00AD M movwf rc
00880 mov rd,VPml
02A7 084D M movf VPml,W
02A8 00AE M movwf rd
02A9 22C8 00881 call abXcd
02AA 22BC 00882 call sub2by ;VPm=Vset-Vpro
00883 mov VPmh,ra
02AB 082B M movf ra,W
02AC 00CC M movwf VPmh
00884 mov VPml,rb
02AD 082C M movf rb,W
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 29
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
02AE 00CD M movwf VPml
02AF 084E 00885 movf DIF,W
02B0 07CF 00886 addwf BW,F ;calc BW = (PRO+) + (PRO-)
00887
00888 ; movlf adr_e2p,tpr ;pegar PRO-
02B1 21C9 00889 call get_e2pab
00890 mov tpro,rb ;usar depois PRO+
02B2 082C M movf rb,W
02B3 00D2 M movwf tpro
00891
02B4 0008 00892 return
00893 ;=============================
00894
02B5 00895 add2by:
00896 add16
M add rb,rd
02B5 082E M movf rd,W
02B6 07AC M addwf rb,F
02B7 1803 M btfsc STATUS,C
02B8 0AAB M incf ra,F
M add ra,rc
02B9 082D M movf rc,W
02BA 07AB M addwf ra,F
02BB 0008 00897 return
02BC 00898 sub2by:
00899 sub16
02BC 09AE M comf rd,F
02BD 0AAE M incf rd,F
02BE 1903 M btfsc STATUS,Z
02BF 03AD M decf rc,F
02C0 09AD M comf rc,F
M add16
M add rb,rd
02C1 082E M movf rd,W
02C2 07AC M addwf rb,F
02C3 1803 M btfsc STATUS,C
02C4 0AAB M incf ra,F
M add ra,rc
02C5 082D M movf rc,W
02C6 07AB M addwf ra,F
02C7 0008 00900 return
00901
02C8 00902 abXcd: ;trocas ra<->rc e rb<->rd
00903 rabXrcd
M mov re,ra
02C8 082B M movf ra,W
02C9 00AF M movwf re
M mov ra,rc
02CA 082D M movf rc,W
02CB 00AB M movwf ra
M mov rc,re
02CC 082F M movf re,W
02CD 00AD M movwf rc
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 30
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
M mov re,rb
02CE 082C M movf rb,W
02CF 00AF M movwf re
M mov rb,rd
02D0 082E M movf rd,W
02D1 00AC M movwf rb
M mov rd,re
02D2 082F M movf re,W
02D3 00AE M movwf rd
02D4 0008 00904 return
02D5 01B9 00905 div16: clrf count
02D6 00906 div16a:
02D6 22EB 00907 call comp2by
02D7 1903 00908 btfsc STATUS,Z
02D8 2AE0 00909 goto div16b
02D9 1C03 00910 btfss STATUS,C
02DA 2AE0 00911 goto div16b
02DB 22C8 00912 call abXcd
02DC 01AB 00913 clrf ra
00914 mov rb,count
02DD 0839 M movf count,W
02DE 00AC M movwf rb
02DF 0008 00915 return
00916 div16b: mov re,rc
02E0 082D M movf rc,W
02E1 00AF M movwf re
00917 mov rf,rd
02E2 082E M movf rd,W
02E3 00B0 M movwf rf
02E4 22BC 00918 call sub2by
00919 mov rc,re
02E5 082F M movf re,W
02E6 00AD M movwf rc
00920 mov rd,rf
02E7 0830 M movf rf,W
02E8 00AE M movwf rd
02E9 0AB9 00921 incf count,F
02EA 2AD6 00922 goto div16a
02EB 00923 comp2by:
00924 cp ra,rc
02EB 082B M movf ra,W
02EC 022D M subwf rc,W
02ED 1D03 00925 btfss STATUS,Z
02EE 0008 00926 return
00927 cp rb,rd
02EF 082C M movf rb,W
02F0 022E M subwf rd,W
02F1 0008 00928 return
00929
02F2 00930 mul8x8: ;ra,rb = ra X rb
02F2 01AD 00931 clrf rc
02F3 01AE 00932 clrf rd
00933 movlf count,8
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 31
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
02F4 3008 M movlw 8
02F5 00B9 M movwf count
02F6 082B 00934 movf ra,w
02F7 1003 00935 bcf STATUS,C
02F8 00936 m8x8a:
02F8 0CAC 00937 rrf rb,F
02F9 1803 00938 btfsc STATUS,C
02FA 07AD 00939 addwf rc,F
02FB 0CAD 00940 rrf rc,F
02FC 0CAE 00941 rrf rd,F
02FD 0BB9 00942 decfsz count,F
02FE 2AF8 00943 goto m8x8a
00944 mov ra,rc
02FF 082D M movf rc,W
0300 00AB M movwf ra
00945 mov rb,rd
0301 082E M movf rd,W
0302 00AC M movwf rb
0303 0008 00946 return
00947
00948 ;=========================
00949 ; movlw 0FF
00950 ; movwf rd
00951 ; movwf re ; The 16 bit binary number = FFFF
00952 ; call B2_BCD ; After conversion the Decimal Number
00953 ;main2 goto main2
00954 ; in R0,R1,R2 = 06,55,35
0304 00955 b2_bcd:
0304 1003 00956 bcf STATUS,C ; clear the carry bit
0305 3010 00957 movlw .16
0306 00B9 00958 movwf count
0307 01AB 00959 clrf ra ;R0
0308 01AC 00960 clrf rb ;R1
0309 01AD 00961 clrf rc ;R2
Warning[207]: Found label after column 1. (loop16)
030A 0DAF 00962 loop16: rlf re, F
030B 0DAE 00963 rlf rd, F
030C 0DAD 00964 rlf rc, F
030D 0DAC 00965 rlf rb, F
030E 0DAB 00966 rlf ra, F
00967
030F 0BB9 00968 decfsz count, F
0310 2B12 00969 goto adjDEC
0311 3400 00970 RETLW 0
00971
Warning[207]: Found label after column 1. (adjDEC)
0312 00972 adjDEC
0312 302D 00973 movlw rc
0313 0084 00974 movwf FSR
0314 231C 00975 call adjBCD
00976
0315 302C 00977 movlw rb
0316 0084 00978 movwf FSR
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 32
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0317 231C 00979 call adjBCD
00980
0318 302B 00981 movlw ra
0319 0084 00982 movwf FSR
031A 231C 00983 call adjBCD
00984
031B 2B0A 00985 goto loop16
00986
031C 00987 adjBCD
031C 3003 00988 movlw 3
031D 0700 00989 addwf 0,W
031E 00BA 00990 movwf temp
031F 19BA 00991 btfsc temp,3 ; test if result > 7
0320 0080 00992 movwf 0
0321 3030 00993 movlw 30
0322 0700 00994 addwf 0,W
0323 00BA 00995 movwf temp
0324 1BBA 00996 btfsc temp,7 ; test if result > 7
0325 0080 00997 movwf 0 ; save as MSD
0326 3400 00998 RETLW 0
00999 ;
01000 ; =======================
01001 ; =======================
01002 ; ==== interrupt ======
01003 ; =======================
01004 ; ======================= _
01005 ; medido no GPIO,1 = 500Hz (2ms) ___| |_____________|
01006 ; 1MHz/(256-8).8 <---------------> 2ms
0327 01007 int_timer0:
01008 ; bsf bit_tx
01009
0327 00B6 01010 movwf wr
0328 0E03 01011 swapf STATUS,W
0329 00B7 01012 movwf st
032A 0183 01013 clrf STATUS
01014 ; movlw .9 ;8=499Hz e 9=500Hz na orde que está manter
01015 ; movwf TMR0
01016
032B 110B 01017 bcf INTCON,T0IF
032C 0804 01018 movf FSR,W
032D 00B8 01019 movwf fsrr
032E 03D8 01020 decf presc8,F
032F 1D03 01021 btfss STATUS,Z
0330 2B34 01022 goto intf
01023 movlf presc8,4
0331 3004 M movlw 4
0332 00D8 M movwf presc8
01024 ; =====================
0333 233B 01025 call display
01026 ; ====================
0334 01027 intf:
0334 0838 01028 movf fsrr,W
0335 0084 01029 movwf FSR
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 33
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0336 0E37 01030 swapf st,W
0337 0083 01031 movwf STATUS
0338 0EB6 01032 swapf wr,F
0339 0E36 01033 swapf wr,W
01034
01035 ; bcf bit_tx
01036
033A 0009 01037 retfie
01038
01039 ; ####################################################
01040 ; ################## D I S P L A Y ##################
01041 ; ####################################################
01042 ;
01043 ; segmentos |digito| | rl|
01044 ; b c a d e g f pt led 0 1 2 x 1 2 3
01045 ; _|_|_|_|_|_|_|_|__ _|_|_|_|_|_|_|_|_
01046 ; dis_data<->|Qa Qh |Qa Qh|
01047 ; dis_lt -->| -->rib --> | --> ria |
01048 ; dis_clk ->| 74HC595 | 74HC595 |
01049 ; |__________________|_________________|
01050 ;==========================================================
01051 ;
033B 0AA6 01052 display:incf cdig,F
01053 cpi cdig,3
033C 0826 M movf cdig,W
033D 3C03 M sublw 3
01054 brcs disp1
033E 1803 M btfsc STATUS,C
033F 2B41 M goto disp1
0340 01A6 01055 clrf cdig
0341 0826 01056 disp1: movf cdig,w ;pegar mux bit position
0342 2017 01057 call tabpos ;bit0,1,2=0
0343 0425 01058 iorwf rele,W ;rele b7,6,5,4=0
0344 00B5 01059 movwf rid ;make two spi
0345 00B3 01060 movwf rib ;first sef(ria)=0
01061 mov rid,rib ;usar depois
0346 0833 M movf rib,W
0347 00B5 M movwf rid
0348 01B2 01062 clrf ria ;seg nulo
0349 2394 01063 call spi ;somente posdig+rele
01064
01065 ; ####################################################
01066 ; ################## T E C L A D O ##################
01067 ; ####################################################
01068 ; J1 k a
01069 ;led -o o----------------|<-------- br=""> 01070 ; P |
01071 ; dy2 --o o------------|<-------o br="" vcc=""> 01072 ; + | /
01073 ; dy1 ---o o-------|<-------o br=""> 01074 ; - | / 1K
01075 ; dy0-----o o--|<-------o----o-----> GP-3
01076 ;
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 34
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
034A 01077 key:
01078 movlf rib,1
034A 3001 M movlw 1
034B 00B3 M movwf rib
034C 0826 01079 movf cdig,W
034D 00B2 01080 movwf ria
034E 01081 key1:
01082 breq key2
034E 1903 M btfsc STATUS,Z
034F 2B54 M goto key2
0350 1003 01083 bcf STATUS,C
0351 0DB3 01084 rlf rib,F
0352 0BB2 01085 decfsz ria,F
0353 2B4E 01086 goto key1
0354 01087 key2:
0354 0833 01088 movf rib,W
0355 1D85 01089 btfss GPIO,3 ;dis_key
0356 2B5A 01090 goto key3
0357 3AFF 01091 xorlw 0xff
0358 05A9 01092 andwf rkey,F
0359 2B5B 01093 goto keyf
035A 01094 key3:
035A 04A9 01095 iorwf rkey,F
035B 01096 keyf:
01097
01098 ; -------------------
01099 ; | second spi
01100 ; ------------------
01101 brbc pisca,spi2
035B 1D27 M btfss flip,2
035C 2B61 M goto spi2
01102 cpi presc1s,1
035D 083C M movf presc1s,W
035E 3C01 M sublw 1
01103 brcs spi3
035F 1803 M btfsc STATUS,C
0360 2B6D M goto spi3
0361 01104 spi2:
0361 1020 01105 bcf dg0,0
0362 1828 01106 btfsc ponto
0363 1420 01107 bsf dg0,0
01108
0364 0835 01109 movf rid,W
0365 00B3 01110 movwf rib ;recuperar pos + reles
0366 3020 01111 movlw dg0 ;pegar pos digito mux
0367 0084 01112 movwf FSR ;put indexador
0368 0826 01113 movf cdig,W
0369 0784 01114 addwf FSR,F ;posicionar
036A 0800 01115 movf INDF,W ;pegar
036B 00B2 01116 movwf ria
036C 2394 01117 call spi
036D 01118 spi3:
01119 ; ===============================
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 35
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
01120 ; ========== T I M E R =========
01121 ; ===============================
01122 ;pullup gpio, 4M/4 1/8 1/(256-8)=500Hz (2ms)
036D 01123 timer:
036D 08D3 01124 movf timerx,F
036E 1D03 01125 btfss STATUS,Z
036F 03D3 01126 decf timerx,F
01127
01128 ; ====== fazendo base de 500Hz/5=100Hz -> 10ms
Message[305]: Using default destination of 1 (file).
0370 03BB 01129 decf presc5
0371 1D03 01130 btfss STATUS,Z
0372 0008 01131 return
01132 movlf presc5,.5
0373 3005 M movlw .5
0374 00BB M movwf presc5
01133 ;
01134 ; ======= dentro da base 10ms =======
0375 08BE 01135 movf twk,F
0376 1D03 01136 btfss STATUS,Z
0377 03BE 01137 decf twk,F
01138
01139 ;
01140 ; ====== fazendo base 100ms
Message[305]: Using default destination of 1 (file).
0378 03D0 01141 decf presc10
0379 1D03 01142 btfss STATUS,Z
037A 0008 01143 return
01144 movlf presc10,.10
037B 300A M movlw .10
037C 00D0 M movwf presc10
01145 ;
01146 ; ====== dentro de 100ms
037D 08BD 01147 movf tdesiste,F
037E 1D03 01148 btfss STATUS,Z
037F 03BD 01149 decf tdesiste,F
01150
0380 08D1 01151 movf last,F
0381 1D03 01152 btfss STATUS,Z
0382 03D1 01153 decf last,F
01154
01155 ; movf tud,F
01156 ; btfss STATUS,W
01157 ; decf tud,F
01158
0383 08D5 01159 movf delay,F
0384 1D03 01160 btfss STATUS,Z
0385 03D5 01161 decf delay,F
01162
01163
01164 ;
01165 ; ====== fazendo base para 1 seg ====
0386 0BBC 01166 decfsz presc1s,F
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 36
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0387 0008 01167 return
01168 movlf presc1s,.10
0388 300A M movlw .10
0389 00BC M movwf presc1s
01169 ; ====== dentro da base 1 seg
01170 ;
038A 08C0 01171 movf ton,F
038B 1D03 01172 btfss STATUS,Z
038C 03C0 01173 decf ton,F
01174
038D 08C1 01175 movf toff,F
038E 1D03 01176 btfss STATUS,Z
038F 03C1 01177 decf toff,F
01178
0390 08BF 01179 movf tini,F
0391 1D03 01180 btfss STATUS,Z
0392 03BF 01181 decf tini,F
01182
01183
0393 0008 01184 return
01185 ; #################################################
01186 ; shift
0394 01187 spi:
0394 3010 01188 movlw .16
0395 00B4 01189 movwf ric
0396 01190 spi1:
0396 1005 01191 bcf GPIO,0 ;dis_data
0397 0CB2 01192 rrf ria,F
0398 0CB3 01193 rrf rib,F
0399 1803 01194 btfsc STATUS,C
039A 1405 01195 bsf GPIO,0 ;dis_data
01196
039B 1605 01197 bsf GPIO,4 ;dis_clk
039C 1205 01198 bcf GPIO,4 ;dis_clk
039D 0BB4 01199 decfsz ric,f
039E 2B96 01200 goto spi1
01201
039F 1685 01202 bsf GPIO,5 ;dis_lt
03A0 1285 01203 bcf GPIO,5 ;dis_lt
03A1 0008 01204 return
01205 ;
03A2 01206 set_dog:
03A2 0183 01207 clrf STATUS
03A3 1485 01208 bsf GPIO,1
03A4 0064 01209 clrwdt
01210
03A5 3007 01211 movlw 0x07 ;comparador off
03A6 0099 01212 movwf CMCON
01213
01214 ; movlw b'10001001';hab ana2
01215 ; movwf ADCON0
01216 ; bsf ADCON0,1
01217
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 37
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
03A7 1683 01218 bsf status,RP0 ;bank1
03A8 3064 01219 movlw b'01100100';fosc/64 e analogic inp ans2
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
03A9 009F 01220 movwf ANSEL
01221
03AA 300C 01222 movlw b'00001100'
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
03AB 0085 01223 movwf TRISIO
01224
03AC 3001 01225 movlw b'00000001' ;pull up
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
03AD 0095 01226 movwf WPU
01227
01228 ; movlw b'10001111'
01229 ; movwf OPTION_REG
01230
03AE 0183 01231 clrf STATUS ;bank0
03AF 30A0 01232 movlw b'10100000'
03B0 008B 01233 movwf INTCON ;hab int 0
03B1 1085 01234 bcf GPIO,1
03B2 0008 01235 return
01236
01237 ;============================
01238
2100 01239 org 0x2100
Warning[210]: Extra ","
2100 0000 002A 0000 01240 dw 0x0000,0x002a,0x0000,0x0014,0x0000,0x0014,0x0000,0x000a,0x0010,0x0050,0x0000,0x0078,
0014 0000 0014
0000 000A 0010
0050 0000 0078
01241
Warning[205]: Found directive in column 1. (END)
01242 END
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 38
SYMBOL TABLE
LABEL VALUE
ADCON0 0000001F
ADCS0 00000004
ADCS1 00000005
ADCS2 00000006
ADFM 00000007
ADIE 00000006
ADIF 00000006
ADON 00000000
ADRESH 0000001E
ADRESL 0000009E
ANS0 00000000
ANS1 00000001
ANS2 00000002
ANS3 00000003
ANSEL 0000009F
BW 0000004F
C 00000000
CAL0 00000002
CAL1 00000003
CAL2 00000004
CAL3 00000005
CAL4 00000006
CAL5 00000007
CHS0 00000002
CHS1 00000003
CINV 00000004
CIS 00000003
CM0 00000000
CM1 00000001
CM2 00000002
CMCON 00000019
CMIE 00000003
CMIF 00000003
COUT 00000006
DC 00000001
DIF 0000004E
EEADR 0000009B
EECON1 0000009C
EECON2 0000009D
EEDAT 0000009A
EEDATA 0000009A
EEIE 00000007
EEIF 00000007
F 00000001
FSR 00000004
GIE 00000007
GO 00000001
GO_DONE 00000001
GP0 00000000
GP1 00000001
GP2 00000002
GP3 00000003
GP4 00000004
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 39
SYMBOL TABLE
LABEL VALUE
GP5 00000005
GPIE 00000003
GPIF 00000000
GPIO 00000005
GPIO0 00000000
GPIO1 00000001
GPIO2 00000002
GPIO3 00000003
GPIO4 00000004
GPIO5 00000005
INDF 00000000
INTCON 0000000B
INTE 00000004
INTEDG 00000006
INTF 00000001
IOC 00000096
IOC0 00000000
IOC1 00000001
IOC2 00000002
IOC3 00000003
IOC4 00000004
IOC5 00000005
IOCB 00000096
IOCB0 00000000
IOCB1 00000001
IOCB2 00000002
IOCB3 00000003
IOCB4 00000004
IOCB5 00000005
IRP 00000007
MM flip,1
NOT_BOD 00000000
NOT_DONE 00000001
NOT_GPPU 00000007
NOT_PD 00000003
NOT_POR 00000001
NOT_T1SYNC 00000002
NOT_TO 00000004
OPTION_REG 00000081
OSCCAL 00000090
PCL 00000002
PCLATH 0000000A
PCON 0000008E
PEIE 00000006
PIE1 0000008C
PIR1 0000000C
PS0 00000000
PS1 00000001
PS2 00000002
PSA 00000003
RD 00000000
RP0 00000005
RP1 00000006
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 40
SYMBOL TABLE
LABEL VALUE
STATUS 00000003
T0CS 00000005
T0IE 00000005
T0IF 00000002
T0SE 00000004
T1CKPS0 00000004
T1CKPS1 00000005
T1CON 00000010
T1IE 00000000
T1IF 00000000
T1OSCEN 00000003
TMR0 00000001
TMR1CS 00000001
TMR1GE 00000006
TMR1H 0000000F
TMR1IE 00000000
TMR1IF 00000000
TMR1L 0000000E
TMR1ON 00000000
TRISIO 00000085
VCFG 00000006
VPMh 0000004A
VPMl 0000004B
VPmh 0000004C
VPml 0000004D
VR0 00000000
VR1 00000001
VR2 00000002
VR3 00000003
VRCON 00000099
VREN 00000007
VRR 00000005
W 00000000
WPU 00000095
WR 00000001
WREN 00000002
WRERR 00000003
Z 00000002
_BODEN_OFF 00003FBF
_BODEN_ON 00003FFF
_CPD_OFF 00003FFF
_CPD_ON 00003EFF
_CP_OFF 00003FFF
_CP_ON 00003F7F
_EC_OSC 00003FFB
_EXTRC_OSC_CLKOUT 00003FFF
_EXTRC_OSC_NOCLKOUT 00003FFE
_HS_OSC 00003FFA
_INTRC_OSC_CLKOUT 00003FFD
_INTRC_OSC_NOCLKOUT 00003FFC
_LP_OSC 00003FF8
_MCLRE_OFF 00003FDF
_MCLRE_ON 00003FFF
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 41
SYMBOL TABLE
LABEL VALUE
_PWRTE_OFF 00003FFF
_PWRTE_ON 00003FEF
_WDT_OFF 00003FF7
_WDT_ON 00003FFF
_XT_OSC 00003FF9
__12F675 00000001
abXcd 000002C8
add
add16
add2by 000002B5
addi
adjBCD 0000031C
adjDEC 00000312
adr_e2pr 00000047
adr_e2pw 00000048
ana GPIO,2
and
andi
b2_bcd 00000304
bank0
bank1
bit_tx GPIO,1
bnanf flip,5
brbc
brbs
brcc
brcs
breq
brne
calc 0000028D
cdig 00000026
chave 00000145
com0 0000010B
com0a 000000FE
com1 0000010F
com3 00000113
com4 0000011E
com5 00000121
com6 0000012D
com7 00000130
com7a 00000140
comp2by 000002EB
comum 000000F6
cont5 0000026C
cont6 00000269
cont7 0000026F
cont8 00000273
control12 000001F3
controle 00000251
count 00000039
cp
cpi
cpx 00000208
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 42
SYMBOL TABLE
LABEL VALUE
cpx2 0000021C
cpx3 00000221
crt1 000001FE
crt2 00000207
data_e2p 00000049
debaucing 00000054
decre 00000195
decre1 0000019E
delay 00000055
dg0 00000020
dg1 00000021
dg2 00000022
dis_clk GPIO,4
dis_data GPIO,0
dis_key GPIO,3
dis_lt GPIO,5
disp1 00000341
display 0000033B
div16 000002D5
div16a 000002D6
div16b 000002E0
e2pr 000001CF
e2prr 000001D1
e2pw 000001DC
e2pww 000001DE
esper 000000F2
esper1 000000EE
expo_by 000001EE
extra 00000024
flip 00000027
flop 00000028
freekey flip,6
fsrr 00000038
get_ana 00000222
get_e2p 000001BA
get_e2pab 000001C9
get_key 000001A2
geta1 0000023B
getk1 000001B7
getk2 000001AF
getk3 000001B4
gravar flip,7
incre 00000176
incre2 0000018D
incre3 00000188
inicio 0000001E
int_timer0 00000327
intf 00000334
k1a flip,0
key 0000034A
key1 0000034E
key2 00000354
key3 0000035A
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 43
SYMBOL TABLE
LABEL VALUE
keyf 0000035B
last 00000051
ldi
led 00000023
led_pt1 led,7
led_pt2 led,6
led_sp led,0
letra_1 0xc0
letra_2 0xbc
letra_A 0xee
letra_C 0x3a
letra_F 0x2e
letra_H 0xce
letra_P 0xae
letra_S 0x76
letra_m 0x04
letra_n 0x4c
letra_o 0x5c
letra_r 0x0c
letra_t 0x1e
limite flip,4
loop 0000006A
loop0 00000066
loop1 00000098
loop16 0000030A
loop3 0000009D
loop4 00000096
loop5 00000079
loop6 00000083
m8x8a 000002F8
mov
movlf
mul8x8 000002F2
opr flop,1
or
ori
pisca flip,2
poder flip,2
ponto flop,0
presc10 00000050
presc1s 0000003C
presc5 0000003B
presc8 00000058
prm 0x04
pro 0x02
proporcional 00000275
pt1 0x08
pt2 0x0a
ra 0000002B
rabXrcd
rb 0000002C
rc 0000002D
rd 0000002E
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 44
SYMBOL TABLE
LABEL VALUE
re 0000002F
rele 00000025
rele_pt1 rele,1
rele_pt2 rele,0
rele_sp rele,2
retnz
retz
rf 00000030
rg 00000031
ria 00000032
rib 00000033
ric 00000034
rid 00000035
rkey 00000029
rkey2 0000002A
ropr 00000056
save 0000015E
save1 00000167
save2 0000016A
save3 0000016C
savef 00000174
set_dog 000003A2
setep 00000044
setp 00000044
show1 00000249
show2 0000024A
show_ana 0000023D
show_c 00000241
sp 0x00
spi 00000394
spi1 00000396
spi2 00000361
spi3 0000036D
st 00000037
status 00000003
sub
sub16
sub2by 000002BC
subi
tabpos 00000017
tabua7seg 00000005
tdesiste 0000003D
temp 0000003A
temp_H 00000045
temp_L 00000046
timer 0000036D
timerx 00000053
tini 0000003F
tipo flip,3
tn1 00000151
tn2 00000153
tn3 00000143
tn4 0000015A
MPASM 03.80.04 Internal SWI02.ASM 8-31-2008 9:39:10 PAGE 45
SYMBOL TABLE
LABEL VALUE
tn5 00000158
toff 00000041
ton 00000040
tonz 0x0c
tpr 0x06
tpro 00000052
ttr 0x0e
twk 0000003E
vh 00000042
vl 00000043
wr 00000036
zeram1 00000022
MEMORY USAGE MAP ('X' = Used, '-' = Unused)
0000 : X---XXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0180 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
01C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0200 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0240 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0280 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
02C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0300 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0340 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0380 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXX-------------
2000 : -------X-------- ---------------- ---------------- ----------------
2100 : XXXXXXXXXXXX---- ---------------- ---------------- ----------------
All other memory blocks unused.
Program Memory Words Used: 944
Program Memory Words Free: 80
Errors : 0
Warnings : 11 reported, 0 suppressed
Messages : 23 reported, 0 suppressed
:020000040000FA
:020000001E28B8
:08000800272B0F398207FA349F
:10001000C034BC34F434C63476347E34E034FE3438
:10002000F634EE345E343A34DC343E342E34073960
:100030008207B834D834E8347834F034830164006B
:10004000203084008001840A0408603C031D2228BB
:100050000730990089309F009F14831664309F00F9
:100060000D308500013095008F3081008301E03034
:100070008B000A30BC000430D80085140230C80060
:10008000CF21C908031966280030C800C901DC2146
:100090006430C900DC21C901DC211430C900DC2135
:1000A000C901DC211430C900DC21C901DC210A307E
:1000B000C900DC218030C900DC215030C900DC21BE
:1000C0000030C900DC217830C900DC21A501A30182
:1000D0000330BF00A223BE08031D98281030BE00C5
:1000E0002222BF08031D792885108D22F321512279
:1000F0008328FF30A000FF30A100FF30A200FF30B6
:10010000A300A5016A280330AB008430AC0042088C
:10011000AD004308AE00EB22031C9628A630A000D9
:10012000A630A100A630A200271598283D2227114D
:10013000D508031D9D280530D500A2212A08043CBE
:10014000031D6A28A501C001A301A7112712C70139
:10015000C4017630A200AE30A1000030A000F6202D
:100160002716AE30A2000C30A1005C30A000F620B3
:10017000AE30A2000C30A1000430A000F6201E30EA
:10018000A200AE30A1000C30A000F6202712AE3045
:10019000A2001E30A100C030A000F620A7153A3002
:1001A000A200CE30A100C030A000F620A711AE30D2
:1001B000A2001E30A100BC30A000F620A7153A30E6
:1001C000A200CE30A100BC30A000F6200430A20076
:1001D0000430A1000430A0006430BE00BE08031D3E
:1001E000EE282717A221271BF2286628A22129081A
:1001F000003C031DF628A7143230BE00B7213E088C
:10020000143C031CFE284708C8002715BA21A71371
:100210002717A7194529A221BE08031D0B29EE2186
:10022000BD0803196628A2212A195E2927181E294C
:10023000BE08031D0F290530BE00212927107D307F
:10024000BE002A08033C031930292711AA182D29BA
:100250002A1C0F299521A7140F297621A7100F29F1
:10026000271A0F2927190F2927153230BE00A71783
:10027000A71840294608633EC6000318C50A0F297F
:10028000C501C6010F29A7125829A221BD080319CB
:1002900066284C30A100A201A71E51292E30A000D3
:1002A0005329EE30A0002A184329AA1C5A29A71660
:1002B000A7174529271B45292A1D45292711440829
:1002C000043C031967294408063C031D6A294808B1
:1002D000C7006C29A71F74294508C900A71AC917A8
:1002E000DC214608C900DC21C40A0800A717C60A99
:1002F0000319C50A271A8D294508023C031808006E
:100300004508033C031C88294608843C0318080060
:100310000330C5008430C6000800C5013F30C60563
:10032000031D08003F30C6000800A717C508031DBD
:100330009E29C60803190800C6030800C60303194E
:10034000C5030800A22329080739AB002B082A029D
:10035000031DAF29AB08031DB72927130800D40BD1
:1003600008002B08AA0027140A30D40008003230F5
:10037000BD00B429A7124708DA00CF214908C500FB
:100380004708DB00CF214908C600C51BA716C513C7
:100390000800BA214508AB004608AC0008008B13E2
:1003A00083161C18D12947089B001C141A08C90081
:1003B00083128B17C70A08008B1383169C18DE293B
:1003C00048089B0049089A001C1555309D00AA302A
:1003D0009D009C1483128B17C80A08004508AE00C4
:1003E0004608AF00412A0830C70008220319FE2939
:1003F000A510A3132F1CFE29A514A3170822031967
:10040000072A251023132F1C072A25142317080059
:10041000AF01B001BA214508AB004608AC00A71AED
:1004200030144208AD004308AE00AB13EB220319B1
:10043000212A031C1C2A2F1430082F060139AF0073
:10044000031108009F183B2A8B131E08AB0083166C
:100450001E08AC0083128B179F144308AC070318C7
:10046000AB0A4208AB07AB0CAC0C2C08C3002B0842
:10047000C20001300800030108004208AE00430832
:10048000AF0004232C080F390319492A0520A200C4
:100490004A2AA2012D0E0520A1002D080520A0004A
:1004A00008004208AD004308AE004A08AB004B0804
:1004B000AC00EB2203186F2A4C08AB004D08AC00CF
:1004C000EB22031C732AC1080319752AC0080319FB
:1004D0006C2A251523140800251123100800520842
:1004E000C100C0016C2AC101692A4A08AB004B084F
:1004F000AC004208AD004308AE00BC222C08CE0080
:100500005208AB00F222AD014F08AE00D522031015
:100510002C08C0005208C10008000030C700C921E3
:100520002B08CC002C08CD000230C700C9212C08B4
:10053000CE004C08AD004D08AE00B5222B08CA0015
:100540002C08CB00C9212C08CF004C08AD004D0869
:10055000AE00C822BC222B08CC002C08CD004E08CF
:10056000CF07C9212C08D20008002E08AC070318B9
:10057000AB0A2D08AB070800AE09AE0A0319AD039C
:10058000AD092E08AC070318AB0A2D08AB0708000D
:100590002B08AF002D08AB002F08AD002C08AF00D2
:1005A0002E08AC002F08AE000800B901EB22031999
:1005B000E02A031CE02AC822AB013908AC0008007D
:1005C0002D08AF002E08B000BC222F08AD00300867
:1005D000AE00B90AD62A2B082D02031D08002C08EC
:1005E0002E020800AD01AE010830B9002B0803103F
:1005F000AC0C0318AD07AD0CAE0CB90BF82A2D08E6
:10060000AB002E08AC00080003101030B900AB019D
:10061000AC01AD01AF0DAE0DAD0DAC0DAB0DB90B19
:10062000122B00342D3084001C232C3084001C231A
:100630002B3084001C230A2B03300007BA00BA19A0
:10064000800030300007BA00BA1B80000034B600CA
:10065000030EB70083010B110408B800D803031D73
:10066000342B0430D8003B2338088400370E830035
:10067000B60E360E0900A60A2608033C0318412BC5
:10068000A601260817202504B500B3003308B500DD
:10069000B20194230130B3002608B2000319542B91
:1006A0000310B30DB20B4E2B3308851D5A2BFF3AA6
:1006B000A9055B2BA904271D612B3C08013C0318ED
:1006C0006D2B2010281820143508B300203084002A
:1006D000260884070008B2009423D308031DD3031F
:1006E000BB03031D08000530BB00BE08031DBE038D
:1006F000D003031D08000A30D000BD08031DBD0350
:10070000D108031DD103D508031DD503BC0B080078
:100710000A30BC00C008031DC003C108031DC1038B
:10072000BF08031DBF0308001030B4000510B20C51
:10073000B30C0318051405160512B40B962B851679
:100740008512080083018514640007309900831620
:1007500064309F000C308500013095008301A0308B
:060760008B00851008006B
:02400E006C3F05
:1042000000002A00000014000000140000000A0052
:084210001000500000007800CE
:00000001FF