opt nolist
;
; Device type defintions for PIC16F818
;
__progmem_size equ 1024
__data_eeprom_size equ 128
__config set 0x3fff
set_pic_type "PIC16F818", "14-bit"
__do_config macro ; keyword, value
if streqcase("\1", "osc") | streqcase("\1", "fosc")
if streqcase("\2", "lp")
__config set __config & 0b1111111111101100
exitm
endif
if streqcase("\2", "xt")
__config set (__config & 0b1111111111101100) | 0b00000001
exitm
endif
if streqcase("\2", "hs")
__config set (__config & 0b1111111111101100) | 0b00000010
exitm
endif
if streqcase("\2", "ec") | streqcase("\2", "extclk")
__config set (__config & 0b1111111111101100) | 0b00000011
exitm
endif
if streqcase("\2", "intoscio") | streqcase("\2", "intrcio")
__config set (__config & 0b1111111111101100) | 0b00010000
exitm
endif
if streqcase("\2", "intosc") | streqcase("\2", "intrc")
__config set (__config & 0b1111111111101100) | 0b00010001
exitm
endif
if streqcase("\2", "extrcio")
__config set (__config & 0b1111111111101100) | 0b00010010
exitm
endif
if streqcase("\2", "extrc")
__config set (__config & 0b1111111111101100) | 0b00010011
exitm
endif
error "Invalid oscillator setting"
exitm
endif
if streqcase("\1", "wdt") | streqcase("\1", "wdte")
if streqcase("\2", "on") | streqcase("\2", "yes")
__config set __config | 0b0000000000000100
exitm
endif
if streqcase("\2", "off") | streqcase("\2", "no")
__config set __config & 0b1111111111111011
exitm
endif
error "Invalid WDT setting"
exitm
endif
if streqcase("\1", "pwrt") | streqcase("\1", "pwrte")
if streqcase("\2", "on") | streqcase("\2", "yes")
__config set __config & 0b1111111111110111
exitm
endif
if streqcase("\2", "off") | streqcase("\2", "no")
__config set __config | 0b0000000000001000
exitm
endif
error "Invalid PWRT setting"
exitm
endif
if streqcase("\1", "mclr") | streqcase("\1", "mclre")
if streqcase("\2", "on") | streqcase("\2", "yes")
__config set __config | 0b0000000000100000
exitm
endif
if streqcase("\2", "off") | streqcase("\2", "no")
__config set __config & 0b1111111111011111
exitm
endif
error "Invalid MCLR setting"
exitm
endif
if streqcase("\1", "boden") | streqcase("\1", "boren")
if streqcase("\2", "on") | streqcase("\2", "yes")
__config set __config | 0b0000000001000000
exitm
endif
if streqcase("\2", "off") | streqcase("\2", "no")
__config set __config & 0b1111111110111111
exitm
endif
error "Invalid BODEN setting"
exitm
endif
if streqcase("\1", "lvp")
if streqcase("\2", "on") | streqcase("\2", "yes")
__config set __config | 0b0000000010000000
exitm
endif
if streqcase("\2", "off") | streqcase("\2", "no")
__config set __config & 0b1111111101111111
exitm
endif
error "Invalid BODEN setting"
exitm
endif
if streqcase("\1", "cpd")
if streqcase("\2", "on") | streqcase("\2", "yes")
__config set __config & 0b1111111011111111
exitm
endif
if streqcase("\2", "off") | streqcase("\2", "no")
__config set __config | 0b0000000100000000
exitm
endif
error "Invalid BODEN setting"
exitm
endif
if streqcase("\1", "wrt")
if ((\2) >= 0) & ((\2) <= 3)
__config set (__config & 0b1111100111111111) | ((\2) << 9)
exitm
endif
error "Invalid WRT setting"
exitm
endif
if streqcase("\1", "debug")
if streqcase("\2", "on") | streqcase("\2", "yes")
__config set __config & 0b1111011111111111
exitm
endif
if streqcase("\2", "off") | streqcase("\2", "no")
__config set __config | 0b0000100000000000
exitm
endif
error "Invalid BODEN setting"
exitm
endif
if streqcase("\1", "ccpmx")
if streqcase("\2", "on") | streqcase("\2", "yes")
__config set __config | 0b0001000000000000
exitm
endif
if streqcase("\2", "off") | streqcase("\2", "no")
__config set __config & 0b1110111111111111
exitm
endif
error "Invalid BODEN setting"
exitm
endif
if streqcase("\1", "cp")
if streqcase("\2", "on") | streqcase("\2", "yes")
__config set __config & 0b1101111111111111
exitm
endif
if streqcase("\2", "off") | streqcase("\2", "no")
__config set __config | 0b0010000000000000
exitm
endif
error "Invalid BODEN setting"
exitm
endif
error "Invalid config keyword"
endm
opt list
syntax highlighted by Code2HTML, v. 0.9.1