导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→C51编程:请教SST89C5x的程序执行问题

* 10694: C51编程:请教SST89C5x的程序执行问题

   叶一舟 
叶一舟发表的帖子 

 C51编程:请教SST89C5x的程序执行问题
请教SST89C5x的程序执行问题
我的程序如下,主要是想试试程序能否从block0 跳到block1执行

;SFR FOR SST89C5X    
            T2CON                
    EQU        0C8H
            RCAP2L                
    EQU        0CAH
            RCAP2H                
    EQU        0CBH
            
            SFCM                
    EQU        0B2H
            SFAL                
    EQU        0B3H
            SFAH                
    EQU        0B4H
            SFDT                
    EQU        0B5H
            SFCF                
    EQU        0B6H
            
            WDTC                
    EQU        0C0H    
            WDTD                
    EQU        086H

            Timer2Low                EQU
        0dch
            Timer2High                EQU
        0ffh    ;0ffeeh:19200 bit/s; 0ffdc:9600 bit/s; 0fee0h: 
1200 bit/s

            ORG        0000h
            JMP        Start
            
            
            ORG        0100h
Start:
            CLR        EA
            MOV        SP,#60h
            
            LCALL    Delay
            LCALL    Delay
            
            
            ;enable to fetch code from block 1
;            MOV        A,SFCF
;            ORL        A,#80h
;            ANL        A,#0FCH
;            MOV        SFCF,A

            MOV        SFCF,#80h
            
            LCALL    Delay
            LCALL    Delay
            
            
            JMP        Loader

;延时子程序
Delay:
            PUSH    01h
            MOV        01h,#200

DelayLoop:
            NOP
            NOP
            NOP
            DJNZ    01h,DelayLoop
            
            POP        01h
            RET
            
            
;串口: mode 1, 9600, no parity,    8 bits data, 1 stop bit
            ORG        0F000h
Loader:
            CLR        EA
            
            ;Set timer2 for communication
            MOV        RCAP2L,#Timer2Low
            MOV        RCAP2H,#Timer2High    ;Set 
timer2 init value

            MOV        T2CON,#34h        
    ;Set timer2 mode: timer, auto reload,baudrate producer

            ;Set com
            MOV        SCON,#050h        
        ;mode 1, enable receice
            
            MOV        R0,#20h
            
            
Main:
            SETB    P1.7        ;Enable COM 
receive
            LCALL    Delay
            
            CPL        P3.4    
    ;work id
WaitToRec:
            JBC        RI,RecHandle
            CPL        P1.6    
    ;feed dog
            JMP        WaitToRec
            
RecHandle:
            MOV        A,SBUF
            
            CLR        P1.7    
    ;Enable com transmit
            LCALL    Delay
            MOV        SBUF,A
            
WaitToSendOver:
            JBC        TI,SendHandle
            JMP        WaitToSendOver

SendHandle:
            JMP        Main        
    
                            
                
            END
            
结果程序不能正常执行,但如果把Loader的地址改为0200H,程序就可以正常执行。我是第
一次用sst89c5x,不知道哪里出了问题
先谢过了            
                        
            
            
        

发表时间:2002年9月6日12:58:00

  
回复该帖

本主题共有 6 帖,分页:>>>>>该主题的所有内容[6]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  10697.[详细]0F00处的程序必须是一条长跳转指令
摘要:......(无内容)
- [老古][901次] 2002年9月6日

  10700.[详细]你是说jmp loader不对吗?可我查过代码,是02F000,编译器已经自动识别了..
摘要:......(无内容)
- [叶一舟][919次] 2002年9月6日

  10715.[详细]请用过sst89c5x的大虾帮我看看
摘要:......(无内容)
- [叶一舟][924次] 2002年9月6日

[上一篇帖子]:硬件:对93c46读写程序的疑问在写程序中 EWEN命令使用1 0011&nbs
[下一篇帖子]:MAX420