五 计算与编程题
1、 设8031系统的振荡频率为fosc=12MHZ,要求定时器0工作方式1,定时间为50ms,请
写出初始化程序。
2、 设系统fosc=6MHZ,计算机时钟周期、机器周期。
3、 设8031系统的振荡频率为fosc=12MHZ,要求定时器0工作方式0,定时间为200us,请
写出初始化程序。
4、 设8031系统的振荡频率为fosc=12MHZ,要求定时器0工作方式2,定时间为50us,请
写出初始化程序。
5、 编写程序查找在内部RAM的20H到50H单元内00H出现的次数,并将结果放入51H
中。
6、 设RES为内部RAM中的一个位地址,使用位操作指令实现
RES=(10H∨P1.0)∧11H∨CY
7、 拆字程序:编程实现将内部RAM的20H单元中的一个8位二进制数拆开,分成两个4
位数,高4位存入31H,低4位存入30H,它们的高位为0。
8、 编程实现将一位十六进制数转换为ASCII码。设十六进制数在A中,结果也存在A中。 9、 将内部RAM的30H地址开始的32B个数据传送到外部RAM的2000H单元开始的区域
中。 10、 将外部RAM的3000H地址开始的32B个数据传送到外部RAM的2000H单元开
始的区域中。 11、 数据块累加程序
编程实现将从内部RAM的22H开始的一组无符号数相加,数据的个数存放在20H中,结果存入21中。(设和不超过255) 12、 设计一延时20ms的子程序。(设fosc=12MHZ) 13、 顺序检索程序
编程将内部RAM中的一个无序的数组,其首地址在R0中,长度在R7中,查找一个值等于(R6)的关健字。
14、用定时器T1工作在方式0,要求产生1ms的定时(利用查询方式)晶振fosc=6MHZ。 15、利用定时器0,定时器工作在方式1,在P1。7引脚上输出100ms有连续方波。(利用查询方式)晶振fosc=6MHZ。
16、用定时器0定时器工作在方式1,在P1。7引脚上输出100ms有连续方波。(利用中断
方式)晶振fosc=6MHZ。
17、用定时器0定时器工作在方式2,在P1。0引脚上输出200us有连续方波。(利用中断
方式)晶振fosc=6MHZ。
18、利用定时器0定时器工作在方式2对外部脉冲连续计数,每200个脉冲使工作寄存器加
1。(利用查询方式)晶振fosc=6MHZ。
19、利用定时器0定时器工作在方式2对外部脉冲连续计数,每200个脉冲使工作寄存器加
1。(利用中断方式)晶振fosc=6MHZ。 20、测量外部脉冲的宽度 21、设计一发送程序,将片内RAM的50H—5FH中的数据串行发送,串行口设定为方式2,
TB8作为奇偶校验位。(查询方式)
22、设计一个接收程序,将接收16个字节数据送入片内RAM的50H—5FH中串行口设定
为方式3。(查询方式)
23、串行口按全双工方式收发ASCII字符,最高位用作奇偶校验位,波特率为1200。(中断
方式)(设fosc=11。0592MHZ)。
29
24、编程实现将内部RAM中以BUF为始址的一批有符号数中的正数传送到外部区的以
DAT为始址的区域,负数传到片外的以3000H为始址的区域,遇0为止。 25、编程实现如下逻辑电路。
x & y &
>=1
z
2x
26、编程实现y= 2 当x=0 (-128<=x<=+63) x/2 当x<0
设x 的值存放于R0 中,其结果存放于片内RAM的30H单元中。
27、从50H——59H单元中寻找特征字FFH,如找到,则计数单元R2加1,并使8031单片机的P1.0引脚输出“0”。并调用延时子程序DEL。 28、编程实现c=a2+b2(0=
30、试编程将片内RAM30H和31H单元的内容相乘,结果存放于32H和33H单元,高位在32H中。
31、试编程将20H单元的BCD数拆开,并变成相应的ASCII码存入21H和22H单元中。 32、试用MCS-51指令实现以下传送: (1)、R2的内容传送到R7; (2)、ROM 1000H单元的内容传送到R1; (3)、ROM 1000H单元的内容传送到片内RAM 50H单元中; (4)、ROM 1000H单元的内容传送到片外RAM 50H单元中;
33、编程计算片内RAM50H——57H共8个数的算术平均值,其结果放于5AH单元中。 34、设有100个无符号数,连续存放在以2000H为首地址的存储区中,试编程计算奇数和偶数的个数,结果分别存放于21H和22H中。
35、将外部数据存储器地址为1000H——1030H的数据块全部传达送到片内RAM30H——60H中,并将原数据块全部清0。 36、要求8255A各端口为下列式作关状态(设控制口的地址为FF7FH),试编写初始化程序。 A口:方式1输入 B口:方式0输出
C口:高4位方式1输入;低4位方式0输出
37、要求8255A通过PC5向外输出一个正脉冲信号。(设控制口的地址为FF7FH,并有延时子程序DEL),试编写程序。
38、试编写一段对中断系初始化的程序,使其允许INT0,INT1,T0和串行口中断,且使串行口中断优先级最高。
39、设MCS-51单片机晶振为6MHZ,用定时器T0的工作方式1编程,使p1.0 输出周期为400us 的方波。(要求写出完整的程序,并且使用中断方式) 40、已知8051单片机的时钟振荡频率为11.0592 MHZ,选用定时器T1在工作文革下作波特率发生器,彼特率为2400波特,(设SMOD=0),求初值X。
30
41、设MCS-51单片机晶振为6MHZ,用定时器T0的工作方式0,请计算定时时间为200us 的TH0和TL0中的时间常数。
42、设MCS-51单片机晶振为6MHZ,用定时器T0的工作方式2编程,使p1.0 输出周期为400us 的方波。(要求写出完整的程序,并且使用中断方式)
43、设MCS-51单片机晶振为6MHZ,用定时器T0的工作方式0编程,使p1.0 输出周期为400us 的方波。(要求写出完整的程序,并且使用中断方式) 44、试用三种方法将A中的无符号数乘2;
45、试编写程序段将片内RAM45H中的内容的高4清0,低4位置1。
46、试编写程序段将片外RAM4150H中的内容的奇数位变反,偶数位不变。 47、将一个BCD码拆开并转换成两个ASCII码。(设BCD码在RAM的30H,结果放在31H和32H中。
48、设4 个BCD码,分别存放于片内的50H,51H和60H,61H单元中。试编程求这两个BCD码的和,其结果放在50H,51H中。
49、编写一子程序将一位16进制数转换成ASCII码。(设16进制数在A中,结果也放在A中)
50、编写一子程序将一位ASCII码转换成16进制数。(设16ACSII码放在A中,结果也放在A中)
51、设计一子程序将以(R0)为起始地址的(R3)个数据求补。(设高位在低地址) 52、设单片机的晶振为6 MHZ 用定时器T1工作在方式0由P1.0输出周期为500us的方波。(查询方式) 53、设单片机的晶振为6 MHZ 用定时器T1工作在方式1由P1.0输出周期为500us的方波。(中断方式)
54、某种异步通信接口,其帧格式为1个起始位、8个数据位、1个奇偶校验位和平共处个停止位组成。当该接口每秒传送2400个字符时,计算其传送波特率。 55、28、编写一程序段,实现(M1+1)(M1)*M2,其积放入R2,R3,R4中。 56、编写一程序段,实现将DPTR的内容减1操作。
57、32、写一程序段将A中的低4位送到P1口,P1的高4位不变。
58、34、将M1和M1+1中的峡谷个ASCII码合并成一个BCD码放入M1中。 59、将DPTR中的内容循环左移4位。 60、写一指令或指令序列实现将 R1的内容送到R0。 61、写一指令或指令序列实现将 外部RAM20H单元的内容送入R0。 62、写一指令或指令序列实现将 外部RAM20H单元的内容送入内部RAM20H单元。 63、写一指令或指令序列实现将 外部RAM1120H单元送入内部RAM20H单元。 64、写一指令或指令序列实现将 ROM2000H单元内容送入R0。 65、写一指令或指令序列实现将 ROM2000H单元内容送入内部RAM20H单元。 67、写一指令或指令序列实现将 ROM2000H单元内容送入外部RAM20H单元。 68、已知8051单片机系统时种频率为6MHZ,请利用定时器T0和P1。2输出如下波形。
50us 350us
69、已知8051单片机系统时种频率为12MHZ,请用P1。0和P1。1分别输出周期2ms 和500us的方波。
31
70、已知8051单片机试用定时器T0作外部计数器,编程来实现每计数到1000个脉冲,使T1开始2ms的定时,定时到后T0又开始计数,这样反复循环不止。
71、利用8051单片机定时器/计数器测量脉冲宽度,已知脉冲宽度小10ms,系统时种频率为12MHZ。编程测量脉冲宽度,并把结果转换成BCD码存放于片内50H单元首地址的内存单元中。
72、试编写程序,求20H,21H,22H单元内三个数据之差的绝对值,结果放于A中。 73、试编写程序,求20H,21H单元内二个数据之差的绝对值,结果放于A中。
74、试编写程序,查找内部RAM中的20H到50H单元中出现00H的次数,其结果存放于51H中 。
75、试编写程序,查找内部RAM中的20H到50H单元中是否有0AAH,若有则将51H置1,否则51H清0
76、6、将20H单元中的8位无符号数转换成三个ASCII码,存放于以FIRST为首地址的存储单元中。
77、将20H单元中的8位无符号数转换成二个BCD码,存放于以FIRST0、FIRST1为首地址的存储单元中。
78、求R1R0中的16位二进制数的补码,结果存放于R4R3中。 79、试编程将片外RAM60H中的内容送入片内RAM 54H中。 80、试编程将R7传送到R1中去。
81、请用两种方法实现将累加器A中的内容与B中的内容交换。 82、试编程将片外RAM40H中的内容与R1的内容交换。
83、试编程将片外RAM中30H和31H单元中内容相乘,结果放入片外32H,33H中,高位在33H。
84、试用三种方法将A中的无符号数乘2。 86、上图:编制循环点的程序。
87、试编程序将片外RAM的2100H中的内容高4位置“1”,其余位不变。 88、请用位操作指令实现如下逻辑方程: (1)、P1. 7=ACC.0∧(B.0∨P2.1)∨P3.2 (2)、PSW.5=P1.3∧ACC.2∨B.5∧P1.1 (3)、P2.3=P1.5∧B.4∨ACC.7∧P1.0
89、编写程序段实现将片内RAM40H——60H单元中的内容送到片外RAM3000H为首地址的存储单元中。
90、编写程序段实现将如下算式: (1)、23H+45+ABH+03h (2)、CDH+15H-38h-46H (3)、1234h+8347H (4)、AB123H-43ADCH
91、编程计算片内RAM50H——57H八个单元中数的算术平均值,结果存放5AH。 92、编程计算如下式子
25,a=b 设乘积小于255,a、b分别存放于片外RAM的3001H和3002H中, Y= a*b,ab 93、编程计算如下式子 (b2+b2))+10,(b2+b2))<10 设乘积小于255,a、b分别存放于片外RAM的3001H Y= (b2+b2)) ,(b2+b2))=10 和3002H中,结果存放于3000H单元中。
32
(b2+b2))-10,(b2+b2))>10
94、设有两个长度均为15的数组,分别存放于2000H和2100H开始的存储中,试编程求对应项之和,结果存放于2200H开始的存储器中。 95、请将片外RAM地址为1000H——1030H的数据块,全部搬到片内RAM的30H——60H中,并将原数据块清0。
96、试编程一查表程序,从首地址为2000H和长度为100的数据块中找出字节A将地址存放于20A0H和20A1H单元中。
97、设在2000H——2004H单元中,存放有5个压缩BCD码,编程将其转换成ASCII码,存放于2005H开始的存储器中。
98、设在2000H为首地址的单元中,存放有20个压缩ASCII码,编程将其转换成BCD码,存放于3000H开始的存储器中。
99、编程将2000H为首地址的单元中的20个数据存放到3000H开始的存储器中。
100、求16位带符号的二进制补码的绝对值。假定补码在内部的RAM的num和num+1中,求得的结果仍放在原单元中。
101、编写读取运行中的定时器计数器的值。 102、从内部RAM缓冲区bufin向外部RAM bufout传送一个字符串,遇ODH结束并置PSW的F0为1,或送完128 个字符结束,并置PSW的F0为0。
103、将8000H开始的有200个字节的源数据,每隔一个单元送到4000H开始的数据区中,每隔2个写入一个数据,如遇回车结束。
104、在外部RAM首地址为TABLE的数据表中的10个字节数据无条件的将其最高位置为1。
105、比较两个字符串是否相等,其长度中40H中,第一个串的首地址中42H中,第二个串的诈地址在52H中,若两个串相等,则内部RAM的40H置1,否则置0。 106、求8个数的平均数,数据以表格形式放在从TAB开始的存储单元中。 107、单片机用内部定时的方法产生频率为100kHZ的等宽方波。(FOSC=12MHZ)
108、假定在外部RAM中有连续的ST1,ST2,ST3存储单元,其中ST1和ST2中有两个无符号数,要求写一程序段找出其中的大数放入ST3中。
109、测试字符串的长度。设有一字符串以回车结束,并存放在从40H开始的存储单元中,编程测试字符串的长度。
110、已知当前PC值为2010H,请用两种方法将程序存储器20F0H中的常数送入累加器A 中。
注:1、已知TOMD的格式如下:
GATE C/T M1 M0 GATE C/T M1 M0 低4位为T0的方式字其中M1M0为方式选择位、GATE为门控位 TCON的格式如下: TF0 TR0 IE0 IT0A 其中TR0为T0的运行控制位,TF0为T0的溢出标志位。 2、
SM0 SM1 SM2 REN TB8 RB8 TI SM0、SM1:工作方式选择位 SM2:多机通信标志位
33
RI
REN:接收允许位 TB8:发送数据第九位 RB8:接收数据第九位 TI:发送中断位 RI:接收中断位 3、IE格式 EA ET2 ES ET1 EX1 ET0 EX0 EA:中断允许位 ET2:
ES:串行口中断允许位
ET1:定时器T1中断允许位 EX1:外部中断1中断允许位 ET0:定时器T0中断允许位 EX0:外部中断0中断允许位 4、PCON格式: SMOD SMOD;波特率设置位
34