fungerar samma program på olika versioner av PIC12F?
Postat: 20 mars 2008, 16:45:55
Hej. Jag har skrivit ihop ett enkelt program och använt till PIC12F675. Jag undrar om man bara kan lägga in det i PIC12F508 och det fungerar direkt?
Skickar med koden, som ni ser används inga "speciall"funktioner som är specifik för PIC12F675
Skickar med koden, som ni ser används inga "speciall"funktioner som är specifik för PIC12F675
Kod: Markera allt
;Pic12F675, Diod lyser ett par sek, sen sleep. Vid rising edge på
;gp2 startar kretsen igen.
;****************************************************************
List p=12f675
include <p12f675.inc>
__CONFIG _CPD_OFF & _CP_OFF & _BODEN_OFF & _MCLRE_ON &_PWRTE_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT
tid1 equ 0x21
tid2 equ 0x22
tid3 equ 0x23
org 0x00 ;Startar programmet på adress Hex 00
;****************************************************************
BANKSEL TRISIO ;Öppnar Bank 1
movlw b'00000000'
movwf ANSEL ;Alla portar är digitala(ans0-3=bit0-3)
movlw b'00000100'
movwf TRISIO ;Alla portar är utgångar utom gp2 (och gp3..)
BANKSEL GPIO ;Öppnar Bank 0
clrf GPIO ;init GPIO
bcf ADCON0,ADON ;A/D omvandlare avstängd.
movlw b'00000111'
movwf CMCON ;Comparator OFF
;-----------------------Fixar pull-up--------------------
bcf OPTION_REG, NOT_GPPU ;GPIO pullup's enabel
movlw b'00000001'
movwf WPU ;Sätter Pull-up enabled på GP0
;-----------------------Fixar wake on pinchange--------------------
bsf INTCON, INTE ;Enables the GP2/INT external interrupt
; bsf INTCON, GPIE ;Enables the GPIO port change interrupt
bsf OPTION_REG, INTEDG ;Interrupt on rising edge of GP2/INT
;******************************************************************
clrw
movwf tid1
movwf tid2
movwf tid3
loop
BTFSS GPIO,2 ;se till att den bara reagerar på possitiv flank
goto sov
bsf GPIO,5 ;etta ut på GP5
call timer
bcf GPIO,5 ;nolla ut på GP5
sov
SLEEP
bcf INTCON, INTF ;clear rising_edge biten igen
call timer2 ;Fördöjning mot knappstuds
goto loop
;--------------fördröjning ~4 sek----------------------
timer
movlw b'11111111'
movwf tid1
loop2
movlw b'11111111'
movwf tid2
loop1
movlw b'00001000'
movwf tid3
loop0
decfsz tid3
goto loop0
decfsz tid2
goto loop1
decfsz tid1
goto loop2
return
;--------------fördröjning ~ sek----------------------
timer2
movlw b'11111111'
movwf tid1
loop4
decfsz tid1
goto loop4
return
end