51单片机的位地址和字节地址

51单片机的20H-2FH为位地址区,共16个字节,每字节有8位共128位,每位有个编号称为位地址,位地址的范围为00H-7FH。

该区既可位寻址又可字节寻址。例如:MOV C,20H 这里C是进位标志位,该指令将位地址为20H的单元内容送至C;而MOV A,20H 将字节地址为20H的内容送至累加器A。

可见20H是位地址还是字节地址要看另一个操作数的类型。

/*----------------------------------------------------------*/

;program name:  r8051xC2 -->Port0 Test Input or  Output

;program versions: v1

;program date: 2013.7.15

;use : test

;compiler: eng-12

/*-----------------------------------------------------------*/

$NOMOD51                //取消使用51内部默认SFR

#include "REG8F301.INC"



Key1        equ        P0.0

F_1SSet        bit        20h.0

F_KeyOne    bit        20h.1

F_KeyOpen    bit        20h.2

dseg    at      30h          //通用RAM字节段从30H开始

TimerCnt:    ds            1

TimerCnt1:    ds            1

KeyBuf:        ds            1

KeyValue:    ds            1  

P0_1:        ds            1

P0_2:        ds            1

P0_3:        ds            1

P0_4:        ds            1

P0_5:        ds            1

P0_6:        ds            1

P0_7:        ds            1

P0_8:        ds            1

IO_ModeCnt:    ds            1

DelCnt:        ds            1



iseg    at      80h     //0-ffh地址的RAM段     80h-ffh段RAM只能用间接寻址进行操作



cseg    at      0

        org            0000h

        jmp            Start

        org            0030h

;------------------------------------------------------------

start:                        

        mov            ckcon,#01h

        mov            r0,#0x7f

ClrRam:                              //清内部256Byte RAM

        mov            @r0,#0

        djnz        r0,ClrRam    

        mov            dptr,#0x00      //清外部768Byte RAM

    //    mov            dph,#0x03

    //    mov            dpl,#0x00

ClrOutRam:

        mov            a,#0x00         //给外部RAM全部写0x00

        movx        @dptr,a

        inc            dpl

        mov            a,dpl

        cjne        a,#0,ClrOutRam

        inc            dph

        mov            a,dph

        cjne        a,#3,ClrOutRam

        mov            P0_OE,#0ffh                    //设置P0位输出模式

        mov            P0,#00H                        //P0输出0

                                                                

;-------------------------------------------------------------

main:

        mov            a,P0                        //IO口状态快速翻转,翻转正常,在时钟25Mhz下

        CPL            a

        mov            P0,a

        ljmp            main

;-------------------------------------------------------------

        end

你可能感兴趣的:(单片机)