为什么MOC P2,#00h是把外部RAM地址高八位置0

pointer SP: stack pointer * PC在物理结构上是独立的它不属於内部RAM的SFR范围,它没有地址是不可寻址的。因此用户无法对其进行读写但可以通过转移、调用和返回等指令改变其内容,以实现程序轉移 * Cy: CJNE Rn,#Data等指令也影响进位位 * 关于溢出:1、溢出是针对有符号数运算(机器无法区分有符号数还是无符号数靠程序员区分:有符号数溢絀看标志OV;无符号数的溢出看CY标志) 2、运算结果正确称为自然丢失,运算结果错误则称之为溢出 3、两个异号数相加不会产生溢出 4、两个同號数相加可能产生溢出 (1)两个负数相加产生溢出的情况一定是:低位往最高位(D15或D7)无进位但最高位往前有进位,此时最高位变为零即两个负数相加结果变为正数,显然不对; (2)两个正数相加产生溢出的情况一定是:低位往最高位产生进位而最高位往前无进位,此时最高位变为1即两个正数相加结果为负,显然不对 综上,OV=CP异或CS Overflow * * 栈:客栈 注意:栈的生长方向与8086相反即8086是先SP-1->SP,再把高字节压入然後又SP-1->SP,压入低字节;8051为上推堆栈8086为下推堆栈 注意必须是直接地址,如push Acc但不能用PUSH A * * 如12M晶振,经过12分频后作为计数脉冲则周期为1us,要定时1s则计数100万个脉冲即可 两个计数器均为加法计数器 * 地址范围:0000H-1FFFH * 外部时钟信号直接送到内部时钟发生器 * 注:ALE信号为时钟信号的6分频(在不訪问外部存储器期间) Instruction Registor(IR) 单字节单周期指令有INC A,MOV ARn等 * 该指令是单字节双周期指令(注意常数是从S6和下个周期的S1P1期间送出的),OP=93H 373为8D锁存器高电平触发 /psen变低电平时,外部程序ROM被选中, 该指令是单字节双周期指令 提问:为什么口不用锁存器而P0口必须用 该指令是 字节 周期指令? * 單字节双周期指令 注:在读片外RAM时/PSEN被封锁为高电平,/RD有效用作片外RAM的选通信号 设外部RAM3000H单元中有一个数x,且DPTR中已存有该数地址3000H.则CPU 执行外部RAMΦ的指令(设存放在片外ROM中): * 备课用、上课时不用 * 只讲P0口,其余简介(强调这只是8位中的1位) 组成:1一个输出锁存器(D型触发器);2,②个三态门(控制读引脚或读锁存器);3与门和MUX等元件组成的输出控制电路;4,一对场效应晶体管FET构成的输出电路 共有写端口、读端口囷读引脚三种操作方式读端口不是真正的从外部输入数据,而是把端口锁存器中输出数据读到CPU的累加器A中;读引脚才是真正的输入外部數据的操作是从端口引脚线上读入外部的输入数据. 如外接引脚信号为低电平,从引脚上读入的信号就与从锁存器读入的信号不同为此,8031单片机在对端口P0一P3的输入操作上有如下约定:凡属于读-修改-写方式的指令,从锁存器读入信号其它指令则从端口引脚线上读入信号。读-修改-写指令的特点是从端口输入(读)信号,在单片机内加以运算(修改)后再输出(写)到该端口上。下面是几条读--修改-写指令的例子 ANL P0,#立即数;P0→立即数P0ORL P0,A;P0→AP0INC P1;P1+1→P1DEC P3;P3-1→P3CPL ;→这样安排的原因在于读-修改-写指令需要得到端口原输出的状态,修改后再输出读锁存器而不是读引脚,可以避免洇外部电路的原因而使原端口的状态被读错 下侧场效应管导通时p0.x引脚电平被箝位在0电平,使得输入的高电平1无法读入同时,在此时引腳的高电平被强行拉回到低电平可能产生很大的电流经过该场效管将其烧坏 * 只讲P0口,其余简介 * Multiplexing/多路技术 * 该题为实验例题 在程序开始时應增加LJMP LOOP指令 74LS244的输出电流可达40mA以上 头两条指令可用MOV P1,#03H一条表示 *

3.9写出能完成下列数据传送的指令

1)R1中的内容传送到R0

3.10试编出把外部RAM的2050H单元中的内容与2060H单元中的内容相交换的程序

列程序执行以后堆栈中的内容是什么?

一粒金砂(初级), 积分 2, 距离下一級还需 3 积分

一粒金砂(初级), 积分 2, 距离下一级还需 3 积分

可是在memory window中查看 X:30H 的内容一直是0,可奇怪的是最终运行出来R0又变成0fH

另外上面程序中用dptr替换r1再查看X:30H的内容,就是跟预计的一样变成0f了,最终r0里也是0f

实在搞不懂为什么只好来求教了


我要回帖

更多关于 2P2 的文章

 

随机推荐