编程将片外(内)RAM的XXXXH单元开始的XX个字节内容传送到片内(外)RAM从XXXXH开始的单元中。
例如:编程将片内RAM的40H—60H单元中内容送到片外RAM以3000H开始的单元中。 参考解答: ORG 0000H LJMP MAIN ORG 0030H
MAIN: MOV R7,#20H MOV R1,#40H
MOV DPTR,#3000H LOOP:MOV A,@R1 MOVX @DPTR,A INC R1 INC DPTR
DJNZ R7,LOOP SJMP $ END
将片内RAM的XXH~XXH单元中的XX个二进制无符号数进行累加,累加和存放在XXH和XXH单元中。 例如:将片内RAM的30H~3FH单元中的16个二进制无符号数进行累加,累加和存放在40H和41H单元中。
解: ORG 0000H LJMP STRAT ORG 0030H
START: MOV SP,#60H MOV R0,#30H MOV R7,#10H MOV R1,#00H MOV R2,#00H
LOOP: MOV A,R2 ADD A,@R0 MOV R2,A CLR A ADDC A,R1 MOV R1,A INC R0
DJNZ R7,LOOP MOV 40H,R1 MOV 41H,R2 SJMP $ END
求片内(外)RAM(ROM)XXXX-XXXX单元数据的平均值,并传送到片内(外)RAM(ROM)XXXX单元。
如:求片外RAM 3000H、3001H单元数据的平均值,并传送到片外RAM3002H单元。 解:
ORG 0100H
MOV DPTR, #3000H MOVX A, @DPTR ; MOV R0, A INC DPTR
MOVX A, DPTR ADD A, R0 ; RRC A INC DPTR
MOVX @DPTR, A ; SJMP $ END
编程将片内(外)RAM(ROM)XXXXH单元中的2位(4位)压缩BCD码转换成二进制数送到片内(外)RAM(ROM)的XXXXH单元中。
例如:编写一个子程序,将R2中的2位压缩BCD码(十进制数)转换成二进制数,结果返送至R2中。 参考解答:
BCDtoBIN: MOV A,R2 ;取待转BCD码 ANL A,#0F0H ;取待转BCD码的高4位 SWAP A ; MOV B,#10
MUL AB ;高位BCD乘以10 MOV R3,A ;送入R3暂存 MOV A,R2 ;取待转BCD码
ANL A,#0FH ;取待转BCD码的低4位 ADD A,R3 ;低4位加高4位乘10结果 MOV R2,A ;结果送入R2返回 RET
编程将RAM中XXH的2位BCD码(十进制数)转换成二进制数,结果存放在XXH中。 例如:编程将30H中的2位压缩BCD码(十进制数)转换成二进制数,结果存放在31H中。 参考解答:
MOV A,30H ;取待转BCD码
ANL A,#0F0H ;取待转BCD码的高4位 SWAP A ; MOV B,#10
MUL AB ;高位BCD乘以10 MOV R3,A ;送入R3暂存 MOV A,R2 ;取待转BCD码
ANL A,#0FH ;取待转BCD码的低4位 ADD A,R3 ;低4位加高4位乘10结果 MOV 31H,A ;结果送入R2返回
利用查表的方法编写y=x^2 ( =0,1,2…9 )的程序。设变量的X值存放在内存XXH单元中,变量Y的值存入内存XXH单元。
例如:利用查表的方法编写y=x^2 ( =0,1,2…9 )的程序。设变量的x值存放在内存20H单元中,变量y的值存入内存30H单元 主程序:
ORG 0100H
MOV A, 20H ; 将30H中的x内容送入A ACALL SQR ; 转求平方子程序SQR处执行 MOV 30H, A ; 将结果送30H SJMP $ ; 程序执行完,“原地踏步” 求平方子程序如下(采用查平方表的方法): SQR: MOV DPTR,#TABLE MOVC A, @A+DPTR RET
TABLE: DB 0, 1, 4, 9, 16 DB 25, 36, 49, 64, 81
编程实现用80C51定时器T0(T1)产生一个XXXHz方波(或定时XXms),由PX.X输出,设晶体频率6M(12MHz)。
用89C51定时器T1产生一个500Hz方波,由P1.0输出,设晶体频率12MHz。试编写程序。 参考答案:
方波周期为1/500=2ms,T1定时1ms,P1.0取反输出。 计数初值X:T=(216-X)×1×10^-6=1×10^-3 X=65536-1000=64536=0FC18H
代码如下:ORG 0000H LJMP START ORG 001BH LJMP TIME_1 ORG 0100H
START: MOV SP,#60H MOV TMOD,#10H MOV TH1,#0FCH MOV TL1,#18H SETB EA SETB ET1 SETB TR1 SJMP $ TIME_1:
MOV TH1, #0FCH MOV TL1, #18H CPL P1.0 SETB TR1 RETI END
实现8051单片机PX口上接8只发光二极管(低电平亮/灭,高电平灭/亮),若晶振频率是6MHZ(12MHz),用定时/计数器T0(T1)以工作方式1工作,使8只发光二极管每XXS依次循环点亮。 例如:8051单片机P1口上接8只发光二极管(低电平亮,高电平灭),若晶振频率是12MHz,用定时/计数器T1以工作方式1工作,使8只发光二极管每0.5S依次循环点亮。请计算定时器/计数器1的定时初值,并编写程序。 解:(1)定时初值计算:
实现0.5S定时,需要对50mS的定时进行10次计数,50mS定时初值计算如下: TC=M-T/T0=216-500mS/1μS= 65536-50000 =15536=3CB0H (2)程序代码: ORG 0000H AJMP START ORG 0001BH AJMP TIME_1 ORG 0030H
START: MOV SP,#60H
MOV 30H, #00H ;软件计数器清零 MOV P1, #0FEH ;最低位发光二极管亮 MOV TMOD,#10H ;设T1为工作方式1 MOV TH1,#3CH ;置定时初值 MOV TL1,#0B0H ; SETB EA ;开总中断
SETB ET1 ;开定时器1中断 SETB TR1 SJMP $ TIME_1: INC 30H MOV A, 30H
CJNE A, #10, T_LP2 MOV A,P1 RL A
MOV P1, A MOV 30H, #00H T_LP2: MOV TH1,#3CH MOV TL1,#0B0H RETI END
编写一个串行通信的数据发送程序,发送片内(外)XXH单元开始的XX个字节数据,串行接口设定为工作方式1(或3),波特率为2400(4800、9600)bps,晶振频率为11.0592MHz(或12MHz)。 如:完成将片内30H单元开始的16个字节数据发送到串行口,要求串行口设定为工作方式1,波特率为9600bps,已知单片机系统晶振频率为11.0592MHZ。 参考代码:
ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV SP,#60H MOV PCON,#00H
MOV SCON, #50H ; 设定串行口方式1 MOV TMOD, #20H ; 定时器1置为方式2
MOV TH1, #0FAH ; 装载定时器初值,波特率9600 MOV TL1, #0FAH ; FAH:4800 FDH:9600 SETB TR1 ; 启动定时器 MOV R0,#30H
MOV R7,#16 ;设定数据个数 LOOP1: MOV A,@R0
MOV SBUF,A ;发送一个字节数据
JNB TI,$ ;等待一帧发送完毕字节数据 CLR TI ;允许再发送; INC R0 DEC R7
CJNE R7,#00H,LOOP1 SJMP $ End
1.在MCS-51单片机中,需要软件实现中断撤销的是:串行中断 2.20根地址线的殉职范围:1024KB
3.8051的内部RAM中,可以进行位寻址的地址空间为(20H`2FH) 4.下列转移范围是2KB的控制转移指令是(AJMP addr11)
5.CPU响应中断后,不能自动清除中断请求“1”标志的有(串行口中断T1/R1)
6.当需要从MCS-51单片机程序存储器取数据时,采用的指令为(MOVC A,@A+DPTR )。 7.执行指令MOVX A,﹫DPTR时,WR、RD脚的电平为(WR高电平,RD低电平) 8.各中断源发出的中断申请信号,都会标记在MCS-51系统中的(TCON/SCON )。
9.80C51并行扩展I/O口在输入输出操作时执行的指令和控制信号是(MOVX,RD或WR )。 10.在单片机中,通常将一些中间计算结果放在(数据存储器)中
11.在堆栈操作中,当进栈数据全部弹出后,这时SP应指向(栈底单元) 12.执行MOVX A,@DPTR指令时,MCS-51产生的控制信号是(/RD )
13.在异步通信中,设置串口波特率为1200bps,数据位8位,无奇偶校验位,则每分钟传送 7200 字节数据。
14.在 MCS-51中,PC和DPTR都用于提供地址,PC为访问 程序 存储器提供地址,而DPTR为访问 数据或程序 存储器提供地址。
15.异步串行数据通信的帧格式一般由__起始______位、____数据____位、__停止______位和奇偶校验位组成。 16.80C51单片机复位后,R4所对应的存储单元的地址为__04H__ 17.JNC rel指令执行时,当CY位为__0__时程序发生跳转
18.8051单片机内部共有___4K___字节程序存储器。若使用片内程序存储器,则引脚/EA必须接__1___ 19.在MCS-51单片机中,需要软件实现中断撤销的是:串行中断 20.读存储器某一存储单元必须具备的条件有(存储器片选有效 )。
21.中断查询确认后,在下列各种单片机运行情况下,能立即进行中断响应的是:当前指令是MOV A,R7指令 22.单片机系统中如果扩展2片Intel2732,除应使用P0口的8条口线外,至少还应使用P2口的口线5条 23.外中断初始化的内容不包括:设置中断响应方式
24.8051单片机对外部扩展的并行I/O进行读写操作,只能使用__MOVX__指令。
25.8051单片机有两种复位方式,即上电复位和手动复位。复位后SP =____ ,PC =____ ,PSW =____ ,P0 =____ 。07H;0000H;00H;0FFH
26.在 MCS-51中,PC和DPTR都用于提供地址,PC为访问 程序 存储器提供地址,而DPTR为访问 片外 存储器提供地址。;
27.JZ rel指令执行时,当__累加器(或 A) 的内容为零__时程序发生跳转。
数据通信中数据传送方式分为___单工通信__、__半双工通信__、_全双工通信__和多工方式。;;
28.有2个定时器/计数器:定时器/计数器T0和定时器/计数器T1,T0由TH0、TL0组成,T1由TH1、TLl组成。T0、T1由特殊功能寄存器TMOD、TCON控制