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.0F_1SSet bit 20h.0F_KeyOne bit 20h.1F_KeyOpen bit 20h.2dseg at 30h //通用RAM字节段从30H开端TimerCnt: ds 1TimerCnt1: ds 1KeyBuf: ds 1KeyValue: ds 1 P0_1: ds 1P0_2: ds 1P0_3: ds 1P0_4: ds 1P0_5: ds 1P0_6: ds 1P0_7: ds 1P0_8: ds 1IO_ModeCnt: ds 1DelCnt: ds 1iseg at 80h //0-ffh地址的RAM段 80h-ffh段RAM只能用直接寻址进行操作cseg at 0org 0hjmp Startorg 0030h;start: mov ckcon,#01hmov r0,#0x7fClrRam: //清内部256Byte RAMmov @r0,#0djnz r0,ClrRam mov dptr,#0x00 //清外部768Byte RAM// mov dph,#0x03// mov dpl,#0x00ClrOutRam:mov a,#0x00 //给外部RAM悉数写0x00movx @dptr,ainc dplmov a,dplcjne a,#0,ClrOutRaminc dphmov a,dphcjne a,#3,ClrOutRammov P0_OE,#0ffh //设置P0位输出形式mov P0,#00H //P0输出0;-main:mov a,P0 //IO口状况快速翻转,翻转正常,在时钟25Mhz下CPL amov P0,aljmp main;-end