本帖最后由 su_mj000 于 2012-9-1 13:51 编辑
弄了好久,发现是外接震荡不起振,却不知道如何从程序上设置。还以为是自己的编译器有问题。工具是胡乱买的,软件是从网上下载的,不知如何使用。差一点放弃。想想好不容易做一个编译器,从产生的代码来看还比较满意。于是优化了一点时间和办法。终于可以运行了...
第一个试验程序:
#include <mc9s08sh8.h>
//////////////////////////////////////////////////
void delay (void)
{
char n = 100;
while ( n-- );
}
#pragma short_branch
//////////////////////////////////////////////////
void main (void)
{
SOPT1 = 0x52; // disable watchdog (COP)
ICSC1 = 0x80; // set oscillator as external crystal
ICSC2 = 0x36; //
PTADD |= 0xf; // PTA0 = output pin
char a = 0;
for(;;)
{
PTAD++;
// delay ();
}
}
[CODE]:
0E000: delay CODE2 main.obj
0E011: main CODE2 main.obj
0E034: _$init$ CODEi main.obj
[SYSTEM]:
00080: _$ram_start$
00200: _$ram_size$
* * * * * * * * * * * * * CODE MEMORY MAP * * * * * * * * * * * * *
; ::: 'main.c' #4: void delay (void)
delay::
0E000: 87 psha
; ::: 'main.c' #6: char n = 100;
0E001: A6 64 lda #0x64
0E003: 9E E7 01 sta 1, SP
L4:
; ::: 'main.c' #7: while ( n-- )
0E006: 9E E6 01 lda 1, SP
0E009: 9E 6A 01 dec 1, SP
0E00C: 4D tsta
0E00D: 26 F7 bne L4 {0xE006}
0E00F: 86 pula
0E010: 81 rts
; ::: 'main.c' #12: void main (void)
main::
0E011: 45 02 80 ldhx #0x0280
0E014: 94 txs
0E015: CD E0 34 jsr _$init$ {0xE034}
0E018: 87 psha
; ::: 'main.c' #14: SOPT1 = 0x52;
0E019: A6 52 lda #0x52
0E01B: C7 18 02 sta 0x1802
; ::: 'main.c' #15: ICSC1 = 0x80;
0E01E: 6E 80 48 mov #0x80, 0x48
; ::: 'main.c' #16: ICSC2 = 0x36;
0E021: 6E 36 49 mov #0x36, 0x49
; ::: 'main.c' #18: PTADD |= 0xf;
0E024: B6 01 lda 0x01
0E026: AA 0F ora #0x0F
0E028: B7 01 sta 0x01
; ::: 'main.c' #19: char a = 0;
0E02A: 9E 6F 01 clr 1, SP
L6:
; ::: 'main.c' #22: PTAD++;
0E02D: 3C 00 inc 0x00
0E02F: 20 FC bra L6 {0xE02D}
0E031: CC E0 11 jmp main {0xE011}
_$init$::
0E034: 81 rts
0FFFE: E011 |