《软件实验编程练习题》由会员分享,可在线阅读,更多相关《软件实验编程练习题(6页珍藏版)》请在金锄头文库上搜索。
1、1软件实验编程练习题软件实验编程练习题1.将 A 中所存的一位十六进制数转换为 ASCII 码。TRANS:MOV R2,AADD A,#F6HMOV A,R2JNC AD30ADD A,#07HAD30: ADD A,#30HRET2.编写一程序段,其功能为:内部 RAM 的 32H(高)30H(低)和 42H(高)40H(低)两个三字节无符号数相加,结果存入 32H(高)30H(低)单元,设三字节相加时无进位。MOV R0,#30HMOV R1,#33HMOV R2,#03HCLR CLOOP:MOV A,R0ADDC A,R1MOV R0,AINC R0INC R1DJNZ R2,LOO
2、PEND3. 已知振荡器振荡频率 fosc 为 12MHz,要求定时器/计数器 0 产生 10ms 定时,编写初始化程序。解:(1)已知定时时间大于 8192s,, 要定时器/计数器 0 应选用工作方式 1.、初值计算cy=12(1/(12106)s所以(65536-X)cy=(65536-X)s=10msx=55536=D8F0H(1) 方式寄存器的编程:的各位内容确定如下:由于定时器/计数器 0 设定为工作方式 1,非门控方式,所以C/T(TMOD.2)=0,M!( TMOD.1)=0,M0( TMOD.0)=1,GATE!( TMOD.)=0;定时器计数器 1 没有使用,相应的为随意态“
3、”可取为 0,则( TMOD)=0(2) 初始化程序Start: MOV TL0, #F0H;MOV TH0, #D8H;MOV TMOD, #01H;SETB TR04.设计把累加器 A 中的二进制数转换为 3 位 BCD 码数的程序,百位数存入 30H 单元,十位数和2个位数存入 31H 单元。MOV B,#100DIV ABMOV R0,#30HMOV R0,A INC R0MOV A,#10XCH A,BDIV ABSWAP AADD A,BMOV R0,A RET5.编写一程序段,其功能为:内部 RAM 的 30H(高)32H(低)和 40H(高)42H(低)两个三字节无符号数相加,
4、结果存入 30H(高)32H(低)单元,设三字节相加时无进位。MOV R0,#32HMOV R1,#42HMOV R2,#03HCLR CLOOP:MOV A,R0ADDC A,R1MOV R0,ADEC R0DEC R1DJNZ R2,LOOPEND6. 8031 芯片的 INT0、INT1 引脚分别输入压力超限及温度超限中断请求信号,定时器/计数器 0 作定时检测的实时时钟,用户规定的中断优先权排队次序为:压力超限 温度超限 定时检测要求确定 IE、IP 的内容,以实现上述要求。解(1)中断控制寄存器各位定义:故 IE=87H(2)由硬件确定的同一优先级中断源的优先权排队顺序如下:T1串行
5、口中断c/有两个中断优先级,中断优先权选择寄存器可对各中断源用软件进行编程,确定为高优先级中断还是低优先级中断。因些可以用硬件与软件相结合的方法对中断源的优先级进行排序。故 IP=05H37. 将(R4R5)中的双字节数取补结果送 R4R5。CMPT:MOV A,R5CPL AADD A,#1MOV R5,AMOV A,R4CPL AADDC A,#0MOV R4,ARET8.设内部 RAM 50H 和 51H 单元中存放 2 个 8 位有符号数,编程找出其中的大数存入 60H 单元中。MOV A,#50HXRLA,51HJBACC.7,LOOPMOV A,50HCLR CSUBBA,51HJ
6、CLOOP1MOV 60H,50HSJMPEXITLOOP1:MOV 60H,51HSJMP EXITLOOP:MOV A,50HJB ACC.7,LOOP1MOV 60H,50HEXIT:SJMP $9. 利用方式产生 1ms 定时,在.引脚上输出周期为 2ms 的方波,设单片机foscHz。输出周期为 2ms 宽的方波,只要每隔 1ms 取反一次,即得。C/T定时器/计数器可选用工作方式 0(1)、L0 初值计算 cy=12(1/(12106)1s所以(8192-X)cy=(8192-X)1s=1ms=1000sx=7192=1D18H TH0=E0H;TL0=18H(2) 方式控制寄存器
7、的编程: ( TMOD)=00(3)可采用查询的状态来控制。的输出,程序如下Start: MOV TL0, #18H; (初始化)MOV TH0, #E0H;MOV TMOD, #00H;SETB TR0Loop: JBC TF0, NEXTSJMP LoopNEXT: MOV TL0, #18H; (重装载)MOV TH0, #E0H;CPL P1.0 ; (取反)SJMP Loop10. 若外部 RAM 的(2000H)=X, (2001H)=Y,编程实现 Z=3X+2Y,结果存入内部 RAM 的 20H 单元(设 Z255) 。4MOV DPTR,#2000HMOVX A,DPTRMOV
8、 B,#3MUL ABMOV 20H,AINC DPTRMOVX A,DPTRRL AADD A,20HMOV 20H,A11. 将外部 RAM 2000H 开始的一个数据块传送到内部 RAM 30H 开始的内部 RAM 单元中,遇到传送的数据为零时停止。MOV DPTR,#2000H MOV R0,#30HLOOP1:MOVX A,DPTRJZ LOOP2MOV R0, AINC R0INC DPTRSJMP LOOP1LOOP2:RET12. 用软件实现 10ms 延时,设晶振频率为 12MHz。DELAY20:MOV R1,#10DL2:MOV R2,#0FAHDL1:NOPNOPDJN
9、Z R2,DL1DJNZ R1,DL2RET13. 编写一程序段,其功能为:内部 RAM 的 30H(高)32H(低)和 33H(高)35H(低)两个三字节无符号数相减,结果存入 30H(高)32H(低)单元,设三字节相减时无借位。MOV R0,#32HMOV R1,#35HMOV R2,#03HCLR CLOOP:MOV A,R0SUBB A,R1MOV R0,ADEC R0DEC R1DJNZ R2,LOOP5END614. 系列单片机的内部资源有哪些?8032、8052、8752 这三种机型有哪些区 别? 8 位 CPU。片内带振荡器,振荡频率 fosc范围为 1.2-12MHz;可有时
10、钟输出。 256 个字节的片内数据存储器。8K 字节的片内程序存储器(8032 无) 。 程序存储器的寻址范围为 64K 字节。片外数据存储器的寻址范围为 64K 字节。26 个字节 专用寄存器。4 个 8 位并行 IO 接口: P0、P1、P2、P3。1 个全双工串行 IO 接口, 可多机通信。3 个 16 位定时器计数器。中断系统有 6 个中断源,可编程为两个优先级。 111 条指令,含乘法指令和除法指令。有强的位寻址、位处理能力。片内采用总线结构。 用单一5V 电源。 在 52 系列中,主要有 8032、8052、8752 三种机型,它们的指令系统与芯片引脚完全兼容,指令系统与芯片引脚完
11、全兼容, 仅片内仅片内ROM有所不同,有所不同,2 无片内 ROM,52 有 8K 片内掩膜 ROM,752 有 8K 片内 EPROM。 15. 设内部 RAM 存有一无符号数据块,长度为 128 字节,在以 30H 单元为首址的连续单 元中。编程找出其中最小的数,并放在 20H 单元。 MOV R7,#7FH MOV R0,#30H MOV A,R0 MOV 20H,A LOP1:INC R0 MOV A,R0 CJNE A,20H,LOOP LOOP:JNC LOP2 MOV 20H,A LOP2:DJNZ R7,LOP1 SJMP $16. 编写一程序段,其功能为:内部 RAM 的 4
12、3H(高)40H(低)和 33H(高) 30H(低)两个四字节无符号数相减,结果存入 43H(高)40H(低)单元,设四字 节相减时无借位。 MOV R0,#40H MOV R1,#30H MOV R2,#04H CLR C LOOP:MOV A,R0SUBB A,R1MOV R0,AINC R0INC R1DJNZ R2,LOOP17. 说明微型计算机、单片机、单板机三者之间的区别与联系。718. 设变量 X 的值存放在内部 RAM 的 30H 单元中,编程求解下列函数式,将求得的函数 值 Y 存入 40H 单元。X+1 (X 100) Y= 0 (10 X 100)X-1 (X 10)解:
13、 MOV A,30H CJNE A,#10,LOOP LOOP:JC LOOP2 CJNE A,#100,LOOP1 LOOP1:JNC LOOP3 MOV 40H,#00H SJMP EXIT LOOP2:DEC A MOV 40H,A SJMP EXIT LOOP3:INC A MOV 40H,A EXIT:SJMP $19.用1 产生一个 50Hz 的方波,由2 输出,程序采用查询方式,设单片机 foscHz。 方波周期 T=20ms 宽的,用 T1 定 10ms,计数初值 X1=D8F0H 源程序如下:MOV TMOD, #10H; SETB TR1 LOOP: MOV TL1, #0F0H; (初始化)MOV TH1, #0D8H;JNB TF1, $CLR TF1CPL P1.2 ; (取反)SJMP Loop