В настройках как Вы и говорите указал "Keep generated startup.as". Перекомпилировал. Вот что получилось в файле startup.as:
Код
; HI-TECH C Compiler for PIC10/12/16 MCUs V9.82
; Copyright (C) 1984-2011 HI-TECH Software
;Serial no. HCPICP-111111
; Auto-generated runtime startup code for final link stage.
;
; Compiler options:
;
; -oproj2.cof -mproj2.map --summary=default,+psect,-class,+mem,-hex \
; --output=default,-inhx032 main.p1 --chip=10F200 -P \
; --runtime=default,+clear,+init,+keep,+osccal,-download,-resetbits,-stackcall,+clib \
; --opt=default,+asm,-debug,-speed,+space,9 --warn=0 -D__DEBUG=1 \
; --rom=default --ram=default --addrqual=ignore -g --asmlist \
; --errformat=Error [%n] %f; %l.%c %s --msgformat=Advisory[%n] %s \
; --warnformat=Warning [%n] %f; %l.%c %s
;
processor 10F200
global _main,start,_exit,reset_vec
fnroot _main
psect config,class=CONFIG,delta=2
psect idloc,class=IDLOC,delta=2
psect code,class=CODE,delta=2
psect powerup,class=CODE,delta=2
psect reset_vec,class=CODE,delta=2
psect maintext,class=CODE,delta=2
C set 0
Z set 2
PCL set 2
INDF set 0
STATUS equ 3
FSR equ 4
OSCCAL equ 0x5
psect reset_wrap,class=ENTRY,delta=2
psect text,class=CODE,delta=2
psect functab,class=ENTRY,delta=2
psect init,class=ENTRY,delta=2
psect cinit,class=ENTRY,delta=2
psect end_init,class=ENTRY,delta=2
psect clrtext,class=ENTRY,delta=2
psect jmp_tab,class=ENTRY,delta=2
psect strings,class=STRING,delta=2
psect reset_vec,class=CODE,delta=2
reset_vec:
ds 1;oscillator constant would be pre-programmed here
psect reset_wrap
reset_wrap:
movwf 5 ;calibrate oscillator
clrf FSR
; No powerup routine
psect init
start
_exit
psect end_init
global start_initialization
ljmp start_initialization;jump to C runtime clear & initialization
psect bank0,class=BANK0,space=1
psect ram,class=RAM,space=1
psect abs1,class=ABS1,space=1
psect common,class=COMMON,space=1
psect sfr0,class=SFR0,space=1
end start
Вот файл proj2.as:
Код
opt subtitle "HI-TECH Software Omniscient Code Generator (PRO mode) build 9453"
opt pagewidth 120
opt pm
processor 10F200
clrc macro
bcf 3,0
endm
clrz macro
bcf 3,2
endm
setc macro
bsf 3,0
endm
setz macro
bsf 3,2
endm
skipc macro
btfss 3,0
endm
skipz macro
btfss 3,2
endm
skipnc macro
btfsc 3,0
endm
skipnz macro
btfsc 3,2
endm
indf equ 0
indf0 equ 0
pc equ 2
pcl equ 2
status equ 3
fsr equ 4
fsr0 equ 4
c equ 1
z equ 0
# 5 "Z:\Documents\Atola\Projects\Functional blocks\MB_Start\with PIC10F200\FW\src\main.c"
psect config,class=CONFIG,delta=2;#
# 5 "Z:\Documents\Atola\Projects\Functional blocks\MB_Start\with PIC10F200\FW\src\main.c"
dw 0xFFFF & 0xFFFB & 0xFFFF & 0xFFEF;#
FNROOT _main
global _TRIS
psect maintext,global,class=CODE,delta=2
global __pmaintext
__pmaintext:
_TRIS set 6
global _FOSC4
_FOSC4 set 40
global _GP0
_GP0 set 48
global _GP1
_GP1 set 49
file "proj2.as"
line #
psect cinit,class=ENTRY,delta=2
global start_initialization
start_initialization:
psect cinit,class=ENTRY,delta=2
global end_of_initialization
;End of C runtime variable initialization code
end_of_initialization:
clrf fsr
ljmp _main;jump to C main() function
psect cstackBANK0,class=BANK0,space=1
global __pcstackBANK0
__pcstackBANK0:
global ?_main
?_main:; 0 bytes @ 0x0
global ??_main
??_main:; 0 bytes @ 0x0
ds 3
;;Data sizes: Strings 0, constant 0, data 0, bss 0, persistent 0 stack 0
;;Auto spaces: Size Autos Used
;; COMMON 0 0 0
;; BANK0 14 3 3
;;
;; Pointer list with targets:
;;
;; Critical Paths under _main in COMMON
;;
;; None.
;;
;; Critical Paths under _main in BANK0
;;
;; None.
;;
;;Main: autosize = 0, tempsize = 3, incstack = 0, save=0
;;
;;
;;Call Graph Tables:
;;
;; ---------------------------------------------------------------------------------
;; (Depth) Function Calls Base Space Used Autos Params Refs
;; ---------------------------------------------------------------------------------
;; (0) _main 3 3 0 0
;; 0 BANK0 3 3 0
;; ---------------------------------------------------------------------------------
;; Estimated maximum stack depth 0
;; ---------------------------------------------------------------------------------
;; Call Graph Graphs:
;; _main (ROOT)
;;
;; Address spaces:
;;Name Size Autos Total Cost Usage
;;STACK 0 0 0 0 0.0%
;;NULL 0 0 0 0 0.0%
;;CODE 0 0 0 0 0.0%
;;BITSFR0 0 0 0 1 0.0%
;;SFR0 0 0 0 1 0.0%
;;DATA 0 0 0 1 0.0%
;;BITCOMMON 0 0 0 2 0.0%
;;BITBANK0 E 0 0 3 0.0%
;;COMMON 0 0 0 4 0.0%
;;BANK0 E 3 3 5 21.4%
;;ABS 0 0 0 6 0.0%
global _main
psect maintext
;; *************** function _main *****************
;; Defined at:
;; line 7 in file "Z:\Documents\Atola\Projects\Functional blocks\MB_Start\with PIC10F200\FW\src\main.c"
;; Parameters: Size Location Type
;; None
;; Auto vars: Size Location Type
;; None
;; Return value: Size Location Type
;; None void
;; Registers used:
;; wreg, fsr0l, fsr0h
;; Tracked objects:
;; On entry : 17F/0
;; On exit : 0/0
;; Unchanged: 0/0
;; Data sizes: COMMON BANK0
;; Params: 0 0
;; Locals: 0 0
;; Temps: 0 3
;; Totals: 0 3
;;Total ram usage: 3 bytes
;; This function calls:
;; Nothing
;; This function is called by:
;; Startup code after reset
;; This function uses a non-reentrant model
;;
psect maintext
file "Z:\Documents\Atola\Projects\Functional blocks\MB_Start\with PIC10F200\FW\src\main.c"
line 7
global __size_of_main
__size_of_main equ __end_of_main-_main
_main:
opt stack 2
; Regs used in _main: [wregfsr0]
line 8
l457:
;main.c: 8: FOSC4=0;
bcf (40/8),(40)&7
line 9
l459:
;main.c: 9: TRIS=0b1111;
movlw (0Fh)
tris 0x6
line 10
l461:
;main.c: 10: GP1=0;
bcf (49/8),(49)&7
line 11
l463:
;main.c: 11: _delay((unsigned long)((50)*(4000000/4000.0)));
opt asmopt_off
movlw 65
movwf ((??_main+0)+0+1),f
movlw 238
movwf ((??_main+0)+0),f
u37:
decfsz ((??_main+0)+0),f
goto u37
decfsz ((??_main+0)+0+1),f
goto u37
clrwdt
opt asmopt_on
line 12
;main.c: 12: while (1)
l67:
line 14
;main.c: 13: {
;main.c: 14: if(GP0==0)
btfsc (48/8),(48)&7
goto u21
goto u20
u21:
goto l471
u20:
line 16
l465:
;main.c: 15: {
;main.c: 16: TRIS=0b1101;;
movlw (0Dh)
tris 0x6
line 17
l467:
;main.c: 17: _delay((unsigned long)((300)*(4000000/4000.0)));
opt asmopt_off
movlw 2
movwf ((??_main+0)+0+2),f
movlw 134
movwf ((??_main+0)+0+1),f
movlw 153
movwf ((??_main+0)+0),f
u47:
decfsz ((??_main+0)+0),f
goto u47
decfsz ((??_main+0)+0+1),f
goto u47
decfsz ((??_main+0)+0+2),f
goto u47
opt asmopt_on
line 18
l469:
;main.c: 18: TRIS=0b1111;;
movlw (0Fh)
tris 0x6
line 19
;main.c: 19: }
goto l69
line 20
l471:
;main.c: 20: else _delay((unsigned long)((300)*(4000000/4000.0)));
opt asmopt_off
movlw 2
movwf ((??_main+0)+0+2),f
movlw 134
movwf ((??_main+0)+0+1),f
movlw 153
movwf ((??_main+0)+0),f
u57:
decfsz ((??_main+0)+0),f
goto u57
decfsz ((??_main+0)+0+1),f
goto u57
decfsz ((??_main+0)+0+2),f
goto u57
opt asmopt_on
l69:
line 21
;main.c: 21: _delay((unsigned long)((300)*(4000000/4000.0)));
opt asmopt_off
movlw 2
movwf ((??_main+0)+0+2),f
movlw 134
movwf ((??_main+0)+0+1),f
movlw 153
movwf ((??_main+0)+0),f
u67:
decfsz ((??_main+0)+0),f
goto u67
decfsz ((??_main+0)+0+1),f
goto u67
decfsz ((??_main+0)+0+2),f
goto u67
opt asmopt_on
goto l67
global start
ljmp start
opt stack 0
psect maintext
line 23
GLOBAL __end_of_main
__end_of_main:
;; =============== function _main ends ============
signat _main,88
global btemp
btemp set 01Ch
DABS 1,28,4;btemp
global wtemp0
wtemp0 set btemp
global wtemp1
wtemp1 set btemp+2
global wtemp2
wtemp2 set btemp+4
global wtemp3
wtemp3 set btemp+6
global ttemp0
ttemp0 set btemp
global ttemp1
ttemp1 set btemp+3
global ltemp0
ltemp0 set btemp
global ltemp1
ltemp1 set btemp+4
end
Понял я из этого файла не много. Вижу что есть btemp (по адресу 0x1C), но также есть и btemp+6 (по идее это 0x1C+6=0x22). Но как так может быть, если в выбранном МК максимальные адрес ОЗУ - 0x1F. Подскажите кто чем может =) ...