导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→C51编程:c51定时器!昨天贴错了,不好意思!

* 14814: C51编程:c51定时器!昨天贴错了,不好意思!

   waser 
waser发表的帖子 

 C51编程:c51定时器!昨天贴错了,不好意思!
(接上条)
?C_STARTUP:
        ljmp    C_START                
        CSEG    AT    3H
        ljmp    CMD_ir_bit_receive

        CSEG    AT    7H            
        ljmp    main_loop            

        CSEG    AT    0bH            
        setb    F_t0_int
        ljmp    CMD_ir_bit_receive

        CSEG    AT    13H
        inc        g_hsync_counter
        reti

        CSEG    AT    1bH
        ljmp    TM_timer_1_int

        CSEG    AT    23H
        reti

        CSEG    AT    43H
        reti    ;ljmp    CS_watchdog_int

        CSEG    AT    53H
        clr        AVS
        reti    ;ljmp    CS_acq_vsync_int

        CSEG    AT    93H
        reti    ;ljmp    CS_acq_hsync_int

        RSEG    ?C_C51STARTUP

C_START:
IF IBPSTACK <> 0
EXTRN DATA (?C_IBP)

        mov    ?C_IBP,#LOW IBPSTACKTOP
ENDIF
STRT_LOOP1:
        mov        @R0,A
        inc        R0
        djnz    R7,STRT_LOOP1
;// clear xram    
        mov        R6,#HIGH (XDATA_LENG)
        mov        R7,#LOW (XDATA_LENG)
        mov        DPTR,#XDATA_START
STRT_LOOP2:
        movx    @DPTR,A
        inc        DPTR
        dec        R7
        cjne    R7,#0ffH,STRT_LOOP2
        dec        R6
        cjne    R6,#0ffH,STRT_LOOP2

;/* initialize the variable need power on initialized */
         mov        DPTR,#?C_INITSEG
Loop:
        WATCHDOG
        clr        A
        mov        R6,#1
        movc    A,@A+DPTR
        jz        INITEND
        inc        DPTR
        mov        R7,A
        anl        A,#3FH
        jnb        ACC.5,NOBIG
        anl        A,#01FH
        mov        R6,A
        clr        A
        movc    A,@A+DPTR
        inc        DPTR
        jz         NOBIG
        inc        R6
NOBIG:
        xch        A,R7
        anl        A,#0C0H        
        add        A,ACC
        jz        IorPDATA
        jc        Bits

XdataMem:
        clr        A
        movc    A,@A+DPTR
        inc        DPTR
        mov        R2,A        ; High
        clr        A
        movc    A,@A+DPTR
        inc        DPTR
        mov        R0,A        ; LOW
XLoop:
        clr        A
        movc    A,@A+DPTR
        inc        DPTR
        xch        A,R0        ; // low 
address to DPL,data to R0,new low address to A
        xch        A,DPL
        xch        A,R0        ; // high 
address to DPH,data to R2,new low address to R0
        xch        A,R2
        xch        A,DPH
        xch        A,R2        ; // data to A
        movx    @DPTR,A            ; // load data 
to variable
        inc        DPTR
        xch        A,R0
        xch        A,DPL
        xch        A,R0
        xch     A,R2
        xch        A,DPH
        xch        A,R2
        djnz    R7,XLoop
        djnz    R6,XLoop
        sjmp    Loop

IorPData:                    ; If CY=1 PData values
        clr        A
        movc    A,@A+DPTR
        inc        DPTR
        mov        R0,A        ; Start Address
IorPLoop:
        clr        A
        movc    A,@A+DPTR
        inc        DPTR
        jc        Pdata
        mov        @R0,A
        sjmp    Common
PData:
        movx    @R0,A
Common:
        inc        R0
        djnz    R7,IorPLoop
        sjmp    Loop

Bits:
        clr        A
        movc    A,@A+DPTR
        inc        DPTR
        mov        R0,A
        anl        A,#007H
        add        A,#Table-LoadTab
        xch        A,R0
        clr        C
        rlc        A        ; Bit Condition 
to Carry
        swap    A
        anl        A,#00FH
        orl        A,#20H        ; Bit Address
        xch        A,R0        ; convert to 
Byte Addressen
        movc    A,@A+PC

LoadTab:
        jc        Setzen
        cpl        A
        anl        A,@R0
        sjmp    BitReady
Table:
        db    00000001B
        db    00000010B
        db    00000100B
        db    00001000B
        db    00010000B
        db    00100000B
        db    01000000B
        db    10000000B

Setzen:
        orl        A,@R0
BitReady:
        mov        @R0,A
        djnz    R7,Bits
        sjmp    Loop


INITEND:    ljmp    main                    

        RSEG    ?C_INITSEG
;        db    0                /* 
if not be eminated,it will place "0" at somewhere(but not the end)
;                            of 
the ?C_INITSEG segment and cause initialization terminal unexpected
;                            -
YMT,00-9-1 8:18 */
;------------------------------------------------------------------------
        END



发表时间:2002年11月21日10:11:00

  
回复该帖

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

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

[上一篇帖子]:用华邦的78E58和emp7128处理数字逻辑,请问可以把配置信息存到78e58里去吗?谢谢!有关那
[下一篇帖子]:C51编程:c51定时器!昨天贴错了,不好意思!请教各位大侠:   &n