1、实验一 系统认识及基本程序设计实验一、实验目的 1. 学习 Keil 集成开发环境的操作; 2. 熟悉 TD-51 系统板的结构及使用,熟悉 51 指令系统; 3掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解;4学习查表程序的设计方法,进一步熟悉 51 的指令系统。二、实验设备 PC 机一台,TD-NMC+教学实验系统。三、实验步骤 编写实验程序,经编译、链接无误后,启动调试功能; 观察实验现象,并分析原因; 按复位键退出调试状态。四、实验内容1. 将 BCD 码整数 0255 存入片内 RAM 的 20H、21H、22H 中,然后转换为二进制整数00HFFH,保存到寄存器
2、R4 中。修改 20H、21H、22H 单元的内容,如:00H,05H,08H;观察实验结果。参考程序:;=; 文件名称: Asm2-1.asm; 功能描述: BCD 整数转换为二进制整数(8 位, 范围从 00H-FFH);=ORG 0000HLJMP MAINORG 0100HMAIN: MOV R0, #20H ;BCD 存放高位地址MOV R7, #03H ;BCD 码 0-255, 最多 3 位 CLR AMOV R4, ALP1: MOV A, R4MOV B, #0AHMUL AB ;乘 10ADD A, R0 ;加下一位的值INC R0 ;指向下一单元MOV R4, A ;结果
3、存入 R4DJNZ R7, LP1 ;转换未结束则继续SJMP MAIN ;设置断点, 观察实验结果 R4 中的内容END2. 将 16 位二进制整数存入 R3R4 寄存器中,转换为十进制整数,以组合 BCD 形式存储在 RAM 的20H、21H、22H 单元中。 参考程序:;=; 文件名称: Asm2-2.asm; 功能描述: 二进制整数(16 位)转换为十进制整数(组合 BCD);=; 0-FFFFH(R3R4)=0-65535ORG 0000HLJMP MAINORG 0100HMAIN: MOV R0, #22H ;转换结果低位地址MOV A, R0PUSH ACC ;ACC 表示累加
4、器 A 的直接地址MOV R7, #03HCLR ALP1: MOV R0, A ;结果存储地址清零DEC R0DJNZ R7, LP1POP ACCMOV R0, AMOV R7, #16LP2: PUSH ACCCLR CMOV A, R4 ;R4 中为二进制数的低位RLC AMOV R4, AMOV A, R3 ;R3 中为二进制数的高位RLC AMOV R3, AMOV B, #03HLP3: MOV A, R0ADDC A, R0 ;执行乘 2 操作DA A ;十进制调整MOV R0, A ;结果保存DEC R0DJNZ B, LP3POP ACCMOV R0, ADJNZ R7,
5、LP2LJMP MAIN ;设置断点观察结果, 可进行下一次转换END3. 通过查表的方法将 16 进制数转换为 ASCII 码; 参考程序:;=; 文件名称: Asm4-1.asm; 功能描述: 查表程序设计, 将十六进制数 0F 通过查表的方法; 转换为 ASCII 码;=ORG 0000HLJMP MAINORG 0100HMAIN: MOV DPTR, #ASCTAB ;表格首地址送 DPTRMOV A, R7 ;R7 中为待转换的数ANL A, #0FH ;取低 4 位MOVC A, A+DPTR ;查表MOV R5, A ;低 4 位转换结果送 R1MOV A, R7ANL A,
6、#0F0H ;取待转换数的高 4 位SWAP A ;高 4 位与低 4 位交换MOVC A, A+DPTR ;查表MOV R6, A ;高 4 位转换结果送 R2SJMP MAIN ;设置断点观察结果ASCTAB: DB 30H, 31H, 32H, 33H, 34HDB 35H, 36H, 37H, 38H, 39HDB 41H, 42H, 43H, 44H, 45H, 46HEND4. 通过查表的方法实现 yx 2,其中 x 为 09 的十进制数,以 BCD 码表示,结果仍以 BCD 码形式输出。 参考程序:;=; 文件名称: Asm4-2.asm; 功能描述: 查表程序, 用程序实现 Y
7、=X*X, X 为 0 到 9 的十进制数,; 用 BCD 码(00H 到 09H)表示, 将 X 的平方, 即 Y 也以 BCD 码; 的形式保存到 R1 中.;=ORG 0000HLJMP MAINORG 0100HMAIN: MOV DPTR, #SQR ;取表格首地址MOV A, R7 ;要计算的值MOVC A, A+DPTR ;查表MOV R6, A ;结果保存SJMP MAINSQR: DB 00H, 01H, 04H, 09H, 16HDB 25H, 36H, 49H, 64H, 81HEND实验二 片内 I/O 口及中断应用实验 一、实验目的 了解 P1 口作为输入输出方式使用
8、时,CPU 对 P1 口的操作方式。了解 MCS-51 单片机的中断原理,掌握中断程序的设计方法。 二、实验设备 PC 机一台,TD-NMC+教学实验系统,连接线若干三、实验步骤 按实验内容要求完成硬件连线; 编写实验程序,经编译、链接无误后,启动调试功能; 观察实验现象,并分析原因; 按复位键退出调试状态。 四、实验内容1. 片内 I/O 口应用实验P1 口是 8 位准双向口,每一位均可独立定义为输入输出。编写实验程序,将 P1 口的低 4 位定义为输出,高 4 位定义为输入,数字量从 P1 口的高 4 位输入,从 P1 口的低 4 位输出控制发光二极管的亮灭。 ;=; 文件名: Digit
9、IO.ASM; 功能说明: 数字量输入输出实验, P1 口高 4 位输入, 低 4 位输出;=ORG 0000HLJMP STARTORG 0100HSTART: ORL P1, #0F0H ;P1 口高四位为输入MOV A, P1 ;读 P1 口的值SWAP A ;A 中高,低 4 位交换MOV P1, A ;输出到 P1 口SJMP STARTEND2. 片内中断系统实验 定时器中断单片机集成的定时器可以产生定时中断,利用定时器 0 和定时器 1,编写实验程序在 P1.0 及P1.1 引脚上输出方波信号,通过示波器观察实验现象并测量波形周期。改变计数值,重新运行程序,反复验证程序功能。参考
10、程序:;=; 文件名: INT1.ASM; 功能说明: 采用定时器的中断, 在 P1.0 与 P1.1 引脚上输出周期波形.;=ORG 0000HLJMP STARTORG 000BHLJMP TIMER0ORG 001BHLJMP TIMER1ORG 0100HSTART: MOV P1, #0FFHMOV TH0, #0F8H ;初始化定时器 0 计数初值MOV TL0, #00HMOV TH1, #0F8H ;初始化定时器 1 计数初值MOV TL1, #00HMOV TMOD, #11H ;设置定时器工作模式为方式 1MOV TCON, #50H ;启动定时器MOV IE, #8AH
11、;使能中断SJMP $TIMER0: CPL P1.0 ;定时器 0 中断服务程序, 对 P1.0 引脚取反MOV TH0, #0F8H ;重新装入计数初值MOV TL0, #00HRETI ;中断返回TIMER1: CPL P1.1 ;定时器 1 中断服务程序MOV TH1, #0F8HMOV TL1, #00HRETIEND 外部中断手动扩展外部中断 INT0、INT1,当 INT0 产生中断时,使 LED8 亮 8 灭闪烁 4 次;当 INT1 产生中断时,使 LED 由右向左流水显示,一次亮两个,循环 4 次。先按 KK1,观察实验现象,然后按 KK2,观察实验现象。51 单片机加入了
12、中断系统,从而提高了 CPU 对外部事件的处理能力和响应速度。增强型单片机 SST89E554RC 共有 8 个中断源,即外部中断 0(INT0) 、定时器 0(T0) 、外部中断 1(INT1) 、定时器 1(T1) 、串行中断(TI 和 RI) 、定时器 2(T2) 、PCA 中断和 Brown-out 中断。参考程序:;=; 文件名: INT2.ASM; 功能说明: 外部中断 INT0, INT1 操作. ; 外部中断 0: 使发光二极管闪烁 4 次.; 外部中断 1: 使发光二极管由右向左流水显示, 一次亮两个 LED.;=ORG 0000HLJMP STARTORG 0003HLJM
13、P EINT0ORG 0013HLJMP EINT1START: MOV P1, #00HSETB IT0 ;定义外部中断 0 为边沿触发SETB EX0 ;使能外部中断 0SETB IT1 ;定义外部中断 1 为边沿触发SETB EX1 ;使能外部中断 1SETB EA ;使能总中断SJMP $EINT0: MOV R7, #04H ;外部中断 0 中断服务程序ELP0: MOV P1, #0FFHACALL DELAY ;调用延时程序MOV P1, #00HACALL DELAYDJNZ R7, ELP0RETIEINT1: MOV A, #03H ;外部中断 1 中断服务程序MOV R7
14、, #10HILP1: MOV P1, ARL ARL AACALL DELAYDJNZ R7, ILP1RETIDELAY: MOV R6, #0FFH ;延时子程序DLP1: MOV R5, #0FFHDLP2: DJNZ R5, DLP2DJNZ R6, DLP1RETEND实验三 定时器/计数器应用实验一、实验目的 1了解 MCS-51 单片机定/计数器的工作原理与工作方式; 2掌握定时/计数器 T0 和 T1 在定时器和计数器两种方式下的编程; 3学习定时/计数器 T2 的可编程时钟输出功能。 二、实验设备 PC 机一台,TD-NMC+教学实验系统,连接线若干三、实验步骤 按实验内容
15、要求完成硬件连线; 编写实验程序,经编译、链接无误后,启动调试功能; 观察实验现象,并分析原因; 按复位键退出调试状态。 四、实验原理通常,8051 单片机内部有 2 个 16 位定时/计数器,即定时器 0(T0)和定时器 1(T1) 。增强型单片机 SST89E554RC 内部还有一个 16 位定时器 T2,与其相关的特殊功能寄存器有 TL2、TH2、RCAP2L、RCAP2H、T2CON 等。 定时器/计数器 2 控制寄存器(T2CON)各位的含义简述如下: TF2:定时器溢出标志,当定时器溢出时置位,必须由软件清除。当 RCLK1 或 TCLK1 时此位将不会被置位。 EXF2:定时器
16、2 外部标志,当 EXEN21 并且 T2EX 引脚上出现负跳变引起捕捉或重载发生时此位置 1。如果定时器 2 中断使能,EXF21 会引起中断,此位必须软件清除。DCEN1 时,EXF2 不会引起中断。 RCLK:接收时钟标志,RCLK1,串行口使用 T2 的溢出脉冲作为方式 1 和 3 下的接收时钟;RCLK0,串行口使用 T1 的溢出脉冲作为接收时钟。 TCLK:发送时钟标志,与 RCLK 的作用相同。 EXEN2:定时器 2 外部使能标志。EXEN21 且 T2 未被用于串口时钟时,若 T2EX 引脚上出现负跳变则出现捕捉或重载。EXEN20 时,T2 忽略 T2EX 引脚上的变化。
17、TR2:启动/停止定时器 2,为 1 时启动定时器 2。 C/T2:定时器/计数器选择。C/T21 为计数功能;C/T20 为定时功能。 CP/RL2:捕捉/重载标志。CP/RL21,当 EXEN21 且 T2EX 引脚上出现负跳变时捕捉发生。CP/RL20,T2 溢出时重载发生,或当 EXEN21 且 T2EX 引脚上出现负跳变时重载发生。如果 RCLK1 或 TCLK1,此位会被忽略,T2 溢出时自动重载。 定时器/计数器 2 模式寄存器(T2MOD)各位的含义简述如下: T2OE:定时器 2 输出使能位。 DCEN:递减计数使能位。 五、实验内容1. 使用定时器 0 与定时器 1 进行定
18、时,在 P1.0 和 P1.1 引脚上输出方波信号,通过示波器观察波形输出,测量并记录方波周期。 参考程序:;=; 文件名称: Timer.ASM; 功能说明: 使用定时器 0 和定时器 1 在 P1.0 与 P1.1 引脚上输出方波.;=ORG 0000HLJMP STARTORG 0100HSTART: MOV TMOD, #11H ;设置定时器工作方式为方式 1MOV TH0, #0F8H ;装入定时器 0 的计数初值MOV TL0, #00HMOV TH1, #0F8H ;装入定时器 1 的计数初值MOV TL0, #00HSETB TR0 ;启动定时器SETB TR1MLP1: JN
19、B TF0, MLP2 ;判定时器 0 溢出标志MOV TH0, #0F8H ;重装定时器 0 的计数初值MOV TL0, #00HCPL P1.0CLR TF0 ;清溢出标志MLP2: JNB TF1, MLP1 ;判定时器 1 溢出标志MOV TH1, #0F8HMOV TL1, #00HCPL P1.1CLR TF1AJMP MLP1END2. 将定时/计数器 1 设定为计数器方式,每次计数到 10 在 P1.0 引脚上取反一次,硬件连接如图所示,按单次脉冲 KK1,观察发光管 D0 的状态,每 10 次变化一次。参考程序:;=; 文件名称: COUNT.ASM; 功能描述: 利用计数器
20、 1, 在计数 10 次后对 P1.0 引脚取反一次;=ORG 0000HAJMP STARTORG 0100HSTART: MOV TMOD, #60H ;设置定时器/计数器 1 为计数器方式, 且为方式 2MOV TH1, #0F6H ;装入计数初值MOV TL1, #0F6HSETB TR1 ;启动计数MLP1: JNB TF1, MLP1 ;判溢出标志CPL P1.0 ;取反 P1.0CLR TF1 ;清溢出标志AJMP MLP1END3. 定时器 2 可以作为时钟发生器使用,并在 P1.0 引脚上输出占空比为 50的方波。编程定时器2,使用示波器测量输出时钟,测量时钟周期;假定需要输
21、出 1MHz 的方波信号,试修改程序,并使用示波器测量,验证程序的正确性。 引脚 P1.0 与 T2 复用,除作为普通 I/O 引脚外,还有两个功能,即为定时/计数器 2 输入外部时钟,输出占空比为 50的周期时钟。 如果将 T2 配置为时钟发生器,那么必须将 C/T2设置为 0,将 T2OE 设置为 1,并设置 TR2 为 1 以启动定时器。输出时钟的频率取决于晶振频率以及捕捉寄存器的重载值,公式如下: 输出频率晶振频率n(65536RCAP2H,RCAP2L) 其中 n2(6 时钟模式)或 n4(12 时钟模式) 晶振频率为 11.0592MHz,工作于 12 时钟模式下,输出频率的范围为
22、:42Hz2.76MHz。 参考程序:;=; 文件名称: ClkOut.ASM; 功能描述: 使用定时器 2 作为时钟发生器, 测量 P1.0 引脚输出, 测量周期.;=T2CON EQU 0C8H ;定义特殊功能寄存器T2MOD EQU 0C9HRCAP2L EQU 0CAHRCAP2H EQU 0CBHORG 0000HAJMP STARTORG 0100HSTART: MOV RCAP2H, #0FFH ;改变 RCAP2H,RCAP2L 中的值可以改变时钟频率MOV RCAP2L, #00HMOV T2MOD, #02H ;设置 T2 工作于时钟输出模式下MOV T2CON, #04H
23、 ;启动定时器 T2SJMP $END实验四 看门狗实验一、实验目的 了解看门狗的工作原理,学习看门狗的编程方法。 二、实验设备 PC 机一台,TD-NMC+教学实验系统,连接线若干三、实验步骤 按图连接实验电路图; 编写实验程序,编译、链接无误后启动调试; 允许实验程序,LED 闪烁; 按单次脉冲 KK1,对 WDT 停止刷新; 经过大概 3 秒钟,可观察软件界面,产生复位,程序停止运行(注意界面变化) ; 改变 WDT 的超时周期,反复实验几次,验证看门狗功能。 每次重新运行程序前,都应该先停止调试,然后重新启动调试,这样方可保证系统正常工作。 四、实验原理SST89E554RC 提供了一
24、个可编程看门狗定时器(WDT) ,可以防止软件跑飞并自动恢复, 提高系统的可靠性。 用户程序中如果使用了看门狗,那么必须在用户自己定义的时间内刷新 WDT,亦称“喂狗” 。若在规定的时间内没有刷新 WDT,则产生内部硬件复位。WDT 以系统时钟(XTAL1)作为自己的时基,WDT 寄存器每隔 344064 个时钟加 1,时基寄存器(WDTD)的高 8 位被用作 WDT 的重载寄存器。WDT 的结构框图如图 3-4-1 所示。WDT 超时周期计算如下: 周期(255WDTD)344064fCLK(XTAL1) 看门狗定时器控制寄存器(WDTC) 各位说明如下: WDOUT: 看门狗输出允许 0:
25、看门狗复位不在复位引脚上输出 1:如果看门狗复位允许位 WDRE1,看门狗复位将在复位脚上输出复位信号 32 个时钟 WDRE: 看门狗定时器复位允许 0:禁止看门狗定时器复位 1:允许看门狗定时器复位 WDTS: 看门狗定时器复位标志 0:外部硬件复位或上电会清除此位,向此位写 1 会清除此位,若由于看门狗引起的复位将不影响此位。 1:看门狗溢出,此位置 1 WDT 看门狗定时器刷新 0:刷新完成,硬件复位此位。 1:软件设置此位以强迫看门狗刷新,俗称“喂狗” 。 SWDT 启动看门狗定时器 0:停止 WDT 1:启动 WDT 看门狗定时器数据/重载寄存器(WDTD) 五、实验内容学习 SS
26、T89E554RC 的看门狗功能模块,编写实验程序,程序正常运行时 8 个 LED 闪烁, 通过按键使看门狗产生超时,引起系统复位。 参考程序:;=; 文件名称: WDT.C; 功能描述: 看门狗实验, 程序运行时 LED 闪烁. 使用按键使看门狗产生; 超时, 引起系统复位. 系统复位, 软件停止按钮变灰.;=WDTD EQU 85H ;看门狗定时器数据/重载寄存器WDTC EQU 0C0HWDT BIT 0C1H ;看门狗定时器刷新位ORG 0000HAJMP STARTORG 0003HAJMP EINT0ORG 0100HSTART: MOV WDTD, #9FH ;看门狗定时MOV
27、WDTC, #1FH ;看门狗控制SETB F0 ;设置标志SETB IT0 ;外部中断 0 触发方式SETB EX0 ;外部中断 0 使能SETB EA ;全局中断使能MLP1: JNB F0, MLP2 ;判标志MOV P1, #0FFHACALL DELAYMOV P1, #00HACALL DELAYSETB WDT ;喂狗AJMP MLP1MLP2: SJMP $EINT0: MOV P1, #00HCLR F0 ;清标志RETIDELAY: MOV R7, #0FFH ;延时DLP1: MOV R6, #0FFHDLP2: NOPNOPDJNZ R6, DLP2DJNZ R7, D
28、LP1RETEND实验五 串口通讯实验一、实验目的 1. 学习 MCS-51 单片机串口的工作原理及程序设计; 2. 了解使用 SSTEasyIAP11F.EXE 软件实现程序脱机运行的方法; 3. 熟悉启动加载代码与 SoftICE 相互切换的方法。 二、实验设备 PC 机一台,TD-NMC+教学实验系统。三、实验步骤(1)串口通讯实验电路如图 3-7-2 所示; (2)编写实验程序,经编译、链接无误后启动调试; (3)进入调试界面,点击命令,打开串口 1 监视窗口; (4)运行实验程序,观察此时有如图 3-7-2 所示输出; (5)阅读 1.7 节的内容,首先将系统程序由 SoftICE
29、切换到启动加载程序; (6)将编译生成的 Hex 文件通过 SSTEasyIAP11F.EXE 软件下载到单片机内部 Flash 中; (7)复位单片机,打开超级终端或串口调试软件,将端口号及波特率等设置好,观察 PC 显示,如图 3-7-3 和图 3-7-4 所示; (8)实验结束,重新将 SoftICE 下载到单片机系统区替换启动加载程序。 四、实验原理MCS-51 单片机内部的全双工串行接口部分,包含有串行接收器和串行发送器。有两个物理上独立的接收缓冲器和发送缓冲器。接收缓冲器只能读出接收的数据,但不能写入。发送缓冲器只能写入发送的数据,但不能读出。因此可以同时收、发数据,实现全双工通讯
30、。两个缓冲器是特殊功能寄存器 SBUF,它们公用地址为 99H,SBUF 是不可位寻址的。此外,还有两个寄存器 SCON 和PCON 分别用于控制串行口的工作方式以及波特率,定时器 T1 可以用作波特率发生器。 SST89E554RC 提供了增强型全双工串行接口,具有帧错误检测和自动地址识别的功能。 由于 SST89E554RC 的串口用作调试目的,所以 Keil C51 软件提供了串口模拟窗口,可以借助此窗口调试串口通讯程序。也可以将程序编译生成目标代码(.HEX) ,脱机运行。 五、实验内容编写实验程序,每隔一定的时间单片机向串口发送一次数据“Xian Tangdu Corp.” 。 ;=
31、; 文件名称: Serial.ASM; 功能说明: 串口输出实验, 定时向串口发送数据“Xian Tangdu Corp.“.; 在串口观察窗 1 中可以观察数据.;=ORG 0000HLJMP STARTORG 0100HSTART: LCALL INITCOM ;初始化串口MLP1: MOV DPTR, #SENDDATA ;数据起始地址MLP2: MOV A, #00HMOVC A, A+DPTRCJNE A, #00H, MLP3AJMP MLP5MLP3: MOV SBUF, A ;发送数据到串口MLP4: JNB TI, MLP4 ;判发送结束否?CLR TI ;清发送标志INC
32、DPLAJMP MLP2MLP5: LCALL DELAYAJMP MLP1; Xi an TangduSENDDATA: DB 58H,69H,60H,61H,6EH,20H,54H,61H,6EH,67H,64H,75HDB 20H,43H,6FH,72H,70H,2EH,0DH,0AH,00H; Corp .INITCOM:MOV SCON, #50H ;串口初始化MOV TMOD, #20H ;波特率设置为 19200bpsMOV PCON, #80HMOV TH1, #0FDHSETB TR1CLR ES ;不启动串口中断RETDELAY: MOV R7, #0FFHDLP1: MO
33、V R6, #0FFHDLP2: NOPNOPNOPDJNZ R6, DLP2DJNZ R7, DLP1RETEND实验六 静态存储器扩展实验一、实验目的 1. 掌握单片机系统中存储器扩展的方法; 2. 掌握单片机内部 RAM 和外部 RAM 之间数据传送的特点。 二、实验设备 PC 机一台,TD-NMC+教学实验系统。三、实验步骤1. 按图连接使用电路; 2. 按实验内容编写实验程序,经编译、链接无误后启动调试; 3. 打开存储器观察窗口,在存储器1 的 Address 中输入 D:0x30,在存储器2 的 Address 中输入 X:0x0000 来监视存储器空间; 4. 可单步运行程序,
34、观察存储器内容的变化,或在 while(1)语句行设置断点再运行程序, 验证实验功能。 四、实验原理存储器是用来存储信息的部件,是计算机的重要组成部分,静态 RAM 是由 MOS 管组成的触发器电路,每个触发器可以存放 1 位信息。只要不掉电,所储存的信息就不会丢失。因此,静态 RAM 工作稳定,不要外加刷新电路,使用方便。但一般 SRAM 的每一个触发器是由 6 个晶体管组成,SRAM 芯片的集成度不会太高,目前较常用的有 6116(2K8 位) ,6264(8K8 位)和 62256(32K8 位) 。本实验以 62256 为例讲述单片机扩展静态存储器的方法。 SST89E554RC 内部
35、有 1K 字节 RAM,其中 768 字节(00H2FFH)扩展 RAM 要通过 MOVX 指令进行间接寻址。内部 768 字节扩展 RAM 与外部数据存储器在空间上重叠,这要通过 AUXR 寄存器的 EXTRAM 位进行切换,AUXR 寄存器说明如下: EXTRAM:内部/外部 RAM 访问 0:使用指令 MOVX Ri/DPTR 访问内部扩展 RAM,访问范围 00H2FFH,300H 以上的空间为外部数据存储器; 1:0000HFFFFH 为外部数据存储器。 AO:禁止/使能 ALE 0:ALE 输出固定的频率; 1:ALE 仅在 MOVX 或 MOVC 指令期间有效。 五、实验内容编写
36、实验程序,在单片机内部一段连续 RAM 空间 30H3FH 中写入初值 00H0FH,然后将这16 个数传送到 RAM 的 0000H000FH 中,最后再将外部 RAM 的 0000H000FH 空间的内容传送到片内 RAM 的 40H4FH 单元中。 参考程序:;=; 文件名称: SRAM.ASM; 功能描述: 存储器扩展. 将单片机内部 30H3FH 单元写入初值 00H0FH,; 然后将这些数从单片机内部传送到外部存储器中, 再由外; 部存储器传送到单片机内部 40H4FH 单元中.;=AUXR DATA 8EH ;辅助寄存器ORG 0000HLJMP STARTORG 0100HST
37、ART: MOV AUXR, #02H ;使用外部存储器MOV R0, #30H ;内部 RAM 起始地址MOV A, #00HMOV R4, #10H ;赋值个数MLP1: MOV R0, A ;赋值INC AINC R0DJNZ R4, MLP1NOP ;运行至此, 观察 RAM 中的值MOV R4, #10HMOV DPTR, #0000H ;外部 RAM 起始地址MOV R0, #30HMLP2: MOV A, R0MOVX DPTR, A ;写外部 RAMINC R0INC DPLDJNZ R4, MLP2NOP ;运行至此, 观察外部 RAM 中数据MOV R4, #10HMOV DPTR, #0000HMOV R0, #40HMLP3: MOVX A, DPTR ;读外部 RAMMOV R0, AINC DPLINC R0DJNZ R4, MLP3NOP ;运行至此,观察内部 RAM 40H 起始地址中的数据SJMP $END