BCD码(高位在前)并存入外部RAM 1000H开始的单元中。
《单片机原理及应用》编程题题库 17、 设有两个长度为16字节的一维数组(数组的每个元素为1个字节),分别存放在外部RAM 0200H
和0300H为首址的存储区域中,试编写程序求其对应项之和(不考虑溢出的情况),结果存放在以0400H六、编程(每题10分)
为首址的外部RAM中。
1、 内部RAM 30H和31H单元中存放着2个0-9的ASCII码(高位字节在前),请将其转换为压缩BCD
18、 编程求内部RAM中40H~4FH共16个单元中的内容的和(结果为2字节),并将和放入50H和
码(高位在前)并存入外部RAM 2300H单元中。
51H单元中(高8位在50H)。
2、 将存放在内部RAM 30H-35H单元的压缩型BCD码转换成相应的ASCII码,依次存放到外部RAM
19、 有一个长度为16字节的ASCII码字符串存放在外部RAM 1000H为首址的存储区域中,字符串
2100H开始的单元区中。
中的每一个字符均不相同,试编写程序查找字符串中是否存在ASCII码“9”。如果在字符串中存在ASCII
3、 内部RAM 20H和30H开始的单元分别存放着16个16进制数,请将对应单元的内容相加(不考
码“9”,则将其存储单元的地址存放到内部RAM 30H和31H单元中(高8位地址在30H单元中),同时将
虑溢出),并将和存入外部RAM 2000H开始的单元中。
OV标志位清零。否则,将30H和31H单元的内容清零,并将OV标志位置“1”。
4、 请编写多字节无符号数减法程序。被减数存放在内部RAM 20H开始的8个单元中,减数存放在内
20、 有两个8字节的16进制数a和b,它们分别存放在内部RAM中30H~37H和40H~47H的单元中
部RAM 30H开始的8个单元,请将差存放到外部RAM 2000H开始的8个单元中,借位存放到OV标志中。
(高位字节在前)。请编程求a-b,并将差存入30H开始的内部RAM单元中(高位字节在前)。若差小于零
注意:所有数据均按照从低字节到高字节的顺序存放。
则将F0标志位置“1”,否则清零。
5、 内部RAM 40H和41H单元中存放着2个0-9的ASCII码(高位字节在前),请将其转换为压缩BCD
21、 若外部RAM的(3000H)=X,(3001H)=Y,编程实现Z=X*X+2Y,并将结果存到片内RAM的40H
码(高位在前)并存入外部RAM 2000H单元中。
单元(设Z<256 ?。
6、 将存放在内部RAM 20H-2FH单元的压缩型BCD码(高位在前)转换成相应的ASCII码,依次存放
22、 设外部RAM 2000H单元为数据块的起始地址,数据块长度为10,试编程求数据块中的最小值,
到外部RAM 1000H开始的单元区中。
存入内部RAM 30H单元。
7、 内部RAM 30H和38H开始的单元分别存放着8个压缩BCD码,请将对应单元的内容相加(不考
23、 若外部RAM的(1000H)=X,(1001H)=Y,请编程实现Z=2X+Y*Y+5(设Z<65536),并将结果保
虑溢出),并将和存入外部RAM 1000H开始的单元中。
存到片内RAM的30H和31H单元(31H单元存放结果的高8位,30H单元存放结果的低8位)。
8、 请编写多字节无符号数加法程序。被加数存放在内部RAM 20H开始的8个单元中,加数存放在内
24、 设外部RAM 1000H单元为数据块的起始地址,数据块长度为60字节,试编程求数据块中所有
部RAM 30H开始的8个单元,请将和存放到外部RAM 2000H开始的8个单元中,进位存放到F0标志中。
数据的和,并将其存入内部RAM 30H和31H单元(30H单元存放和的低8位,31H单元存放和的高8位)。
注意:所有数据均按照从低字节到高字节的顺序存放。
25、 若外部RAM的(1000H)=X,内部RAM(30H)=Y,请编程实现Z=X*X+3Y+18(设Z<65536),并
9、 两个8字节压缩BCD码分别存放在内部RAM 30H和40H开始的连续单元中(低位字节在前),请
将结果保存到片内RAM的40H和41H单元(41H单元存放结果的高8位,40H单元存放结果的低8位)。
将二者求和(不考虑溢出情况),并将和存入外部RAM 1000H开始的单元中。 2
26、 若外部RAM的(1000H)=X,请编程实现Y=X+2X+1(设Y<65536),并将结果保存到片内RAM的
10、 将存放在内部RAM 20H-2FH单元的十六进制数转换成ASCII码,依次存放到外部RAM 2000H
30H和31H单元(31H单元存放结果的高8位,30H单元存放结果的低8位)。
开始的单元中。
27、 设外部RAM 2000H单元为数据块的起始地址,数据块长度为100字节。假设在数据块中存在
11、 内部RAM 30H和外部RAM 2200H开始的单元分别存放着两个8字节十六进制数(低位字节存
唯一的一个ASCII字符“A”,试编程找到它,并将其在外部RAM的存放地址存入内部RAM 30H和31H单元
放在前),请将二者相加(不考虑溢出情况),并将和存入内部RAM 40H开始的单元中。
中(30H单元存放地址的高8位,31H单元存放地址的低8位)。
12、 请编写多字节无符号数减法程序。被减数存放在内部RAM 30H开始的8个单元中,减数存放在22
28、 若内部RAM的(20H)=a,外部RAM(1300H)=b,请编程实现y=a+b+5(设y<65536),并将结
内部RAM 38H开始的8个单元,请将差存放到外部RAM 1000H开始的8个单元中,借位存放到F0标志中。
果保存到片内RAM的30H和31H单元(31H单元存放结果的高8位,30H单元存放结果的低8位)。
注意:所有数据均按照从低字节到高字节的顺序存放。 2
29、 若内部RAM的(30H)=X,(31H)=Y,请编程实现Z=X+5Y(设Z<65536),并将结果保存到片外
13、 请编写多字节无符号数减法程序。被减数存放在内部RAM 20H开始的16个单元中,减数存放
RAM的1000H和1001H单元(1001H单元存放结果的高8位,1000H单元存放结果的低8位)。
在内部RAM 30H开始的16个单元,请将差存放到外部RAM 2000H开始的16个单元中,借位存放到OV标
30、 设内部RAM 20H单元为数据块的起始地址,数据块长度为32字节。请将整个数据块求和(共
志中。注意:所有数据均按照从低字节到高字节的顺序存放。
32字节的数据求和,设和小于65536),并把和存入外部RAM 1000H和1001H的单元中(和的高8位存入
14、 将存放在内部RAM 20H-3FH单元的压缩BCD码转换成ASCII码,依次存放到外部RAM 2300H
1001H单元)。
开始的单元中。(注:每个单元均先转换高四位) 22
31、 若内部RAM的(20H)=a,(21H)=b,请编程实现y=a+b(设y<65536),并将结果保存到片外
15、 将存放在内部RAM 30H-35H单元的十六进制数转换成相应的ASCII码,依次存放到外部RAM RAM的2000H和2001H单元(2001H单元存放结果的高8位,2000H单元存放结果的低8位)。
1100H开始的单元区中。(注:每个字节转换时先转换高四位)
32、 将内部RAM 40H为起始地址的32个连续单元中的十六进制数转换成ASCⅡ码存入外部RAM
16、 内部RAM 30H开始的单元中存放着16个0-9的ASCII码(高位字节在前),请将其转换为压缩
3000H开始的存储单元中。
第1页 共3页
33、 设内部RAM 20H单元为数据块的起始地址,数据块长度为10H,数据为8位无符号数,试编程找出数据块中的最小值,并将其存入40H单元。
34、 比较两个等长ASCII码字符串是否相等。字符串长度存放在内部RAM 2FH单元,两字符串分别存放在内部RAM 30H和40H开始的单元中。如果两个字符串相等,则CY=1,否则,CY=0。
35、 将MCS51内部RAM 60H~65H单元存放的12个16进制数变为ASCII码,存放到0100H单元开始的外部RAM中。
36、 将片外数据存储器的2500H单元与2501H单元中的数据作十进制加法运算,和送入2503H和2502H单元中,即(2500H)+(2501H)→(2503H)(2502H)。
37、 设单片机的晶体震荡频率为12MHz,利用定时器T0编程由P1.2输出周期为10ms的方波。(要求:T0工作在方式1下,采用中断方式工作)
38、 已知8051单片机应用系统的晶体振荡频率为12MHz,请利用定时器T0实现在P1.0引脚上输出周期为100ms的方波。(要求:采用中断方式,T0工作在方式1下)
39、 设8031单片机应用系统的晶振频率为12MHz,请利用T0在P1.0和P1.1引脚上输出频率为20Hz、互补(两个波形互为反相)的方波。要求:采用中断方式,T0工作在方式1。
40、 8031单片机应用系统的晶体振荡器频率为12MHz,请利用定时器T0编程实现在P1.7引脚输出频率为20Hz的方波。要求:采用中断方式,T0工作在方式1下。
41、 设单片机的晶体振荡频率为12MHz,利用定时器T0编程由P1.0和P1.1输出周期为10ms、互补(互为反相)的方波。(要求:T0工作在方式1下,采用中断方式工作)
42、 已知8051单片机应用系统的晶体振荡频率为12MHz,请利用定时器T1实现在P1.0和P1.1引脚上输出互补(互为反相)的周期为100ms的方波。(要求:采用中断方式,T1工作在方式1下)
43、 设8031单片机应用系统的晶振频率为12MHz,请利用T0在P1.0引脚上输出频率为20Hz的方波。要求:采用中断方式,T0工作在方式1。
44、 8031单片机应用系统的晶体振荡器频率为12MHz,请利用定时器T1编程实现在P1.6和P1.7引脚输出互补(互为反相)的、频率为20Hz的方波。要求:采用中断方式,T1工作在方式1下。
45、 设单片机的晶体振荡频率为6MHz,利用定时器T1编程由P1.6和P1.7输出周期为500μs 、互补(互为反相)的方波。(要求:T1工作在方式2下,采用中断方式工作)
46、 已知8051单片机应用系统的晶体振荡频率为12MHz,请利用定时器T1实现在P1.0和P1.1引脚上输出互补(互为反相)的周期为2ms的方波。(要求:采用中断方式,T1工作在方式2下)
47、 设8031单片机应用系统的晶振频率为12MHz,请利用T1在P1.0引脚上输出频率为1Hz的方波。要求:采用中断方式,T1工作在方式1。
48、 8051单片机应用系统的晶体振荡器频率为6MHz,请利用定时器T1编程实现在P1.0和P1.1引脚输出互补(互为反相)的、频率为20Hz的方波。要求:采用中断方式,T1工作在方式2下。
49、 8751单片机应用系统的晶体振荡器频率为12MHz,请利用定时器T0编程实现在P1.7引脚输出频率为20Hz的方波。要求:采用中断方式,T0工作在方式1下。
50、 设8051单片机应用系统的晶振频率为12MHz,请利用T1在P1.0和P1.1引脚上输出频率为20Hz、互补(两个波形互为反相)的方波。要求:采用中断方式,T1工作在方式1。
51、 已知8051单片机应用系统的晶体振荡频率为12MHz,请利用定时器T0实现在P1.0引脚上输出频率为2kHz的方波。(要求:采用中断方式,T0工作在方式2下)
52、 设单片机的晶体振荡频率为12MHz,利用定时器T0编程由P1.0输出周期为1秒的方波。(要求:T0工作在方式1下,采用中断方式工作)
53、 设单片机的晶体振荡频率为6MHz,利用定时器T0编程由P1.0和P1.1输出周期为1s、互补(互为反相)的方波。(要求:T0工作在方式1下,采用中断方式工作)
54、 8031单片机应用系统的晶体振荡器频率为6MHz,请利用定时器T0编程实现在P1.0引脚输出频率为0.1Hz的方波。要求:采用中断方式,T0工作在方式1下。
55、 设单片机的晶体振荡频率为3MHz,利用定时器T0编程由P1.6和P1.7输出周期为10s、互补(互为反相)的方波。(要求:T0工作在方式1下,采用中断方式工作)
56、 89C51单片机应用系统的晶体振荡器频率为12MHz,请利用定时器T1编程实现在P1.0引脚输出频率为2Hz的方波。要求:T1采用中断方式工作,工作在方式1下。
57、 设单片机的晶体振荡频率为12MHz,P1.0接有一个共阴极驱动方式连接的发光二极管。现要求利用定时器T1编程使该发光二极管每10秒钟点亮一次,每次点亮时间为1秒。(要求:T1工作在方式1下,采用中断方式工作,在中断服务程序中控制发光二极管的亮与灭)
58、 89C51单片机应用系统的晶体振荡器频率为6MHz,单片机的P1.7引脚接有一个共阳极驱动方式连接的发光二极管,请利用定时器T0编程实现使该发光二极管点亮1秒钟,熄灭1秒钟的循环。(要求:T0采用中断方式工作,工作在方式1下,在中断服务程序中控制发光二极管的亮与灭。)
59、 已知89C51单片机的晶体振荡频率为3MHz,请编程从P1.0和P1.1口输出互补的(即互为反相)、周期为2秒的方波。(要求:T0工作在方式1下,采用中断方式工作,在中断服务程序中控制P1.0和P1.1的输出)
60、 89C51单片机应用系统的晶体振荡器频率为6MHz,单片机的P1.0引脚接有一个共阴极驱动方式连接的发光二极管,请利用定时器T1编程实现使该发光二极管点亮2秒钟,熄灭3秒钟的循环。(要求:T1采用中断方式工作,工作在方式1下,在中断服务程序中控制发光二极管的亮与灭。)
61、 已知89C51单片机的晶体振荡频率为24MHz,请编程从P1.6和P1.7口输出互补的(即互为反相)、频率为500Hz的方波。(要求:T1工作在方式1下,采用中断方式工作,在中断服务程序中控制P1.6和P1.7的输出)
62、 已知89C51单片机的晶体振荡频率为12MHz,请编程从P1.0口输出频率为50Hz的方波。(要求:T0工作在方式2下,采用中断方式工作,在中断服务程序中控制P1.0的输出)
63、 89C51单片机应用系统的晶体振荡器频率为3MHz,请编程实现从单片机的P1.0引脚输出25Hz方波。(要求:T1采用中断方式工作,工作在方式2下,在中断服务程序中控制P1.0的输出。)
64、 已知89C51单片机的晶体振荡频率为24MHz,请编程从P1.0和P1.1口输出互补的(即互为反相)、频率为100Hz的方波。(要求:T1工作在方式2下,采用中断方式工作,在中断服务程序中控制P1.0和P1.1的输出)
65、 已知89C51单片机的晶体振荡频率为24MHz,请编程从P1.0口输出频率为2Hz的方波。(要求:T0工作在方式1下,采用中断方式工作,在中断服务程序中控制P1.0的输出)
66、 89C51单片机应用系统的晶体振荡器频率为24MHz,请编程实现从单片机的P1.3引脚输出100Hz方波。(要求:T1采用中断方式工作,工作在方式2下,在中断服务程序中控制P1.3的输出。)
67、 已知89C52单片机的晶体振荡频率为12MHz,请编程从P1.6和P1.7口输出互补的(即互为反相)、频率为4Hz的方波。(要求:T1工作在方式1下,采用中断方式工作,在中断服务程序中控制P1.6和P1.7的输出)
68、 已知89C52单片机的晶体振荡频率为24MHz,请编程从P1.5输出频率为10Hz、占空比为10%
第2页 共3页
(即高电平持续时间为信号周期的10%,低电平持续时间为信号周期的90%)的矩形波。(要求:T1工作在方式1下,采用中断方式工作,在中断服务程序中控制P1.5的输出)
69、 已知8051单片机的晶体振荡频率为6MHz,请编程从P1.3和P1.2口输出互补的(即互为反相)、频率为20Hz的方波。(要求:T0工作在方式2下,采用中断方式工作,在中断服务程序中控制P1.3和P1.2的输出)。
70、 已知8051单片机系统时钟频率fosc=12MHz,试编写程序,使P1.0输出如下的矩形脉冲(要求利用中断技术,使用定时器0,并且其工作在方式2下)。
P1.0 → 40μs ←-- 1ms --→
71、 已知MCS-51单片机应用系统的晶振频率为12MHz,现要求在P1.0上输出周期为200ms、占空
比为1:1的方波,输出500个方波后停止输出,请编程实现。要求:使用T0,并工作在方式1、中断方式下,在中断服务程序中实现对P1.0输出方波进行控制。
72、 已知AT89C51单片机系统晶振频率fosc=24MHz,试编写程序,使P1.1输出频率为500Hz的方波信号(要求在中断服务程序中控制P1.1的输出,使用定时器1,并且其工作在方式2下)。
第3页共3页