- 12
- 0
- 约1.1万字
- 约 69页
- 2019-12-07 发布于广东
- 举报
2、用多片RAM扩展外部数据存储器 5-3 程序设计举例 例1:设T0为方式1 定时,定时时间为20ms。要求每隔 20ms将累加器A的内容左移一位送P1 口。(fosc=6Mhz) 例2: 测试INT0 引脚上的脉冲宽度。 例3:外部中断--教材P- 128 例3- 20 ORG 0000 0000 01 F0 AJMP MAIN ORG 0003 0003 01 30 AJMP INT0 ∶ ORG 0030H ;INT0中断服务程序入口 0030 20 90 0D INT0: JB P1.0 INT00 0033 20 91 2A JB P1.1 INT01 0036 20 92 37 JB P1.3 INT02 0039 20 93 64 JB P1.4 INT03 ORG 0080H ∶ PUSH PSW PUSH A SETB PSW.3 SETB P3.0 ACALL DELAY CLR P3.0 ANL P1,#0BFH OR P1,#40H POP A POP PSW RETI 例4:设计一个发送程序。8031串口工作于方式2, 要求将内部RAM 50H~5FH的数据从串口输出, TB8作奇偶校验位。 例5:设计一程序,要求8031串口以方式3接收16 个数据,存入以50H开始的内部RAM中,设波 特率为2400。 该程序的设计思想:在数据写入发送缓存器之前, 先将数据奇偶位写入TB8,然后再发送。 三、逻辑运算指令(24条) 1、双操作数逻辑指令(18条) 2、单操作数逻辑指令(6条) 例7:拆字。将外部RAM2300H单元的BCD码的 十位和个位拆开后,由高到低分别存于2300H 和2301H单元。 例8:拼字。设2位用ASCII表示的十进制数分别 存于内部40H和41H单元中,将它们转换成2位 BCD码并以压缩形式存于41H单元。 例9:判断累加器A中的值是否为0DH. 四、控制转移类指令 1、无条件转移指令(4条) 说明: 1、LJMP指令中,由于地址码为16位,故转移范围为216=64KB; 2、AJMP指令中,由于地址码为11位,故转移范围为211=2KB; 3、SJMP指令中的rel 为相对偏移量,是一个8位带符号数,位移量为-128~+127(针对当前PC)。 2、条件转移指令(8条) 3、调用和返回(5条) 例10:当P1口输入为43H时,程序往下执行,否 则等待。 例11:设有100个有符号数,连续存放在以2000H 为首址的外部RAM区,试编程统计其中正数、负数、零的个数存于内部RAM30H~32H单元中。 例12: 初始SP=30H, 子程序SUB1入口为2500H, PC=3000H。执行指令 3000H:LCALL SUB1 后, SP=? (SP)=? PC=? 若将LCALL 改为ACALL, 结果如何? 五、位操作指令 说明:位地址表示方式可为: ? 直接位地址加 如:SETB 7FH; ? 字节地址加位号 如:SEYB 2F.7H ? 位寄存器名 如:SETB TR0 ? 位寻址寄存器加位号 如:CLR TCON. 5 例13:在P1.7引脚上输出一个正脉冲,要求脉宽为200US。(设fosc=6MHz) 第三章 输入输出、中断、定时与串行通信 3.1 MCS-51中断系统 MCS-51不同型号的单片机的中断源的数量是不同的。但最典型的8051子系统提供5个中断源、两个优先级。中断处理程序可实现两级嵌套
原创力文档

文档评论(0)