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