设51单片机晶振电路的晶振频率6MHZ,采用T0方式1定时模式,请编制由P1.0引脚输出周期为2ms的

单片机习题和试题库之五&&编程题
1、假定甲乙机以方式1进行串行数据通信,晶振=12MHz,要求波特率为1200bps。乙机发送,甲机接收。请画出电路图并写出初始化发送(查询)和接收(中断方式)程序。
2、口线P1.0接一个发光二极管,由定时器0控制,用于演示1秒钟亮、1秒钟暗的效果。
3、给80C51单片机扩展一片和8155,要求0809采用中断方式,8通道工作;采用138译码选择芯片。请画出系统连接图,写出各芯片的地址范围并写出8155内各口及其内部的RAM地址范围。
4、已知系统的连接如图所示,试编写程序实现下列功能:
(1).编写上电显示程序,显示“123456”。
(2).编写主程序,功能为:当有键按下(07号)时,都显示键号; 无键按下,保持原有显示状态。
5、选用DAC0832芯片产生一个三角波,要求幅值为02.5V。
6、假定甲、乙机以方式1进行串行数据通信,晶振频率为6MHz。要求波特率为1200bps,甲机发送数据88H(查询方式),乙机接收(中断方式)。请画出电路图并编程实现上述功能。
7、已知一单片机应用系统如下图所示。试回答问题并编写显示程序,以1秒为间隔,亮暗相间,显示“”。
(1).写出各口的地址和控制字
控制口地址:
(2).显示程序
8、已知ADC0809单片机的连接如下图所示,试写出启动0809第3通道A/D转换的程序段。
(1)、把外部2000H内容送到内部RAM的20H单元。
(2)、找出20H~22H三个单元中的最大数,放在A累加器中。
9、编写程序完成以下功能:每响应一次外部中断,发光二极管亮一秒钟。六、简单编程题:
(1)、用间接寻址方式,把外部20H内容送到内部RAM的20H单元。
(2)、依据第四题接线图,写出启动0809第3通道A/D转换的程序段。
(3)、编写串行口方式1串行发送初始化程序。(省略波特率发生器初始化)。
10、假定甲乙机以方式1进行串行数据通信,晶振=6MHz,要求波特率为1200。甲机发送,乙机接收。请画出电路图并计算出波特率,写出初始化发送和接收程序。
11、当系统选用12MHz晶体振荡器时,由定时器0控制产生周期为4ms(脉冲宽度为2ms)的方波序列(采用中断方式),并由P1.0输出,请编写实验程序。
12、已知8155与单片机的连接如图所示。
(1).写出8155中RAM及各口的地址。
&(2).将A口和B口定义为基本输入方式,C口定义为输出方式,定时器作为方波发生器,对输入脉冲进行24分频,写出8155的初始化程序。
13、ADC单片机的硬件接口如下图所示,模拟量输入选择7通道,编制A/D
转换程序,将转换结果送30H单元。&&
14、已知8279与单片机的连接如图所示,8708为同相驱动器。试编写程序实现下列功能:
(1).编写中断服务子程序,完成读键 值功能,将键值放入20H单元。
(2).编写主程序,功能为:当1#键按下时,显示“&&
98211”; 当2#键按下时,显示“&&
98212”;其它键返回。
15、当系统选用6MHz晶体振荡器时,由CTC0控制产生周期为2ms(脉冲宽度为1ms)的方波序列,并由P1.0输出,请编写程序。
16、实验题
假定甲乙机以方式1进行串行数据通信,晶振=6MHz,要求波特率为1200。甲机发送,乙机接收。请计算出波特率,写出初始化发送和接收程序。
17、若8255芯片的片选端与8031的P2.7相连,A1A0端与地址总线A1A0相连,现要求8255工作在方式0,A口作为输入,B口作为输出,且将C口的第6位PC5置1,请编写初始化工作程序。
18、选用DAC0832芯片,设计有三路模拟量同时输出的MCS—51系统,画出硬件结构框图,编写数模转换程序。
19、已知8279与单片机的连接如课本P186图所示。试编写程序实现下列功能:
(1).显示字符“&& HELLO”;
(2).编写中断服务子程序,完成读键值功能,将键值放入20H单元。
20、ADC单片机的硬件接口如下图所示,模拟量输入选择7通道,编制A/D
转换程序,将转换结果送30H单元。
试编写一段对中断系统初始化的程序,使之允许,,T0,串行口中断,且使T0中断为高优先级中断。
使用位操作指令实现下列逻辑操作,要求不得改变未涉及位的内容。
(1)使ACC.0置1;
(2)清除累加器高4位;
(3)清除ACC.3,ACC.4, ACC.5, ACC.6。
试编写程序,将内部RAM的20H,21H,22H三个连续单元的内容依次存入2FH,2EH,和2DH中。
编写两个16位数的减法:6F5DH-13B4H,结果存入内部RAM的30H,31H单元,30H存差的低八位。
两个四位BCD码相加,被加数和加数分别存于50H,51H,52H,53H单元中(次序为千位、百位在低地址中,十位、个位在高地址中),和数存放在54H,55H和56H中(56H用来存放最高位的进位),试编写加法程序。
26、试编程对8155进行初始化。设A口为选通输出,B口为基本输入,C口作为控制联络口,并启动定时器/计数器按方式1工作,定时时间为10ms,定时器计数脉冲频率为单片机的时钟频率24分频,fosc=12MHZ。
27、在一个8031应用系统中扩展一片2764,一片8155和一片6264。试画出其系统框图,并指出所扩展的各个芯片的地址范围
28、 设计一个4&4行列式键盘电路并编写键扫描子程序。
29、试设计一个用8155与有32个按键的键盘连接的接口电路。编写程序实现以下功能:用8155定时器定时,每隔2s读一次键盘,并将其读入的键值存入8155片内RAM
40H开始的单元中。
30、 用8051的P1口作8个按键的独立式键盘接口。试画出其中中断方式的接口电路及相应的键盘处理程序。
31、试用微机系统设计一个键盘接口。键盘为3&4个键,其中10个为数1~9,两个为功能键RESET和START。具体要求:
(1)按下数字键后,键值存入3040H开始的单元中(每个字节放一个键值)。
(2)按下RESET(复位)键后,键PC复位成0000H。
(3)按下START(启动)键后,系统开始执行用户程序(用户程序的入口地址4080H)。试画出该接口的硬件连接图并进行程序设计。
32、 试设计一个LED显示器/键盘电路。
33、试为8051微机系统设计一个LED显示器接口,该显示器共有八位,从左到后分别DG1~DG8(共阴极式),要求将内存3080H~3087H八个单元中的十进制(BCD)依次显示在DG1~DG8上。要求:画出该接口硬件连接图并进行接口程序设计。
34、在一个fosc=12MHz的8031应用系统中,接有一片A/D器件ADC0809,它的地址为FEF8H~FEFFH。试画出有关逻辑框图,并编写定时采样8个通道的程序。设采样频率为2ms一次,每个通道采10个数,把所采的数按0~7通道的顺序存放在以1000H为首地址的外部RAM中。
35、在一个fosc=12MHz的8031应用系统中,接有一片D/A器件DAC0832,它的地址为7FFFH,输出电压为0~5V。请画出有关逻辑框图,并编写一个程序,当其运行后0832能输出一个矩形波,波形占空比为1:5。高电平时电压为2.5V,低电平时为1.25V。
36、 试编写延时2ms的程序
37、 用查表程序求0~8之间整数的立方。
38、编写有6个命令键的散转程序。键号为0、1、2、3、4、5;6个键A、B、C、D、1、2的ASCII码放在累加器A中。
39、按下列要求编程。
(1)R7内容送R6中;
(2)外RAM 50H单元内容送内RAM 50H单元;
(3)外RAM 1000H单元内容送外RAM 2000H单元;
(4)ROM 1000H单元内容送外RAM 8000H单元;
40.已知无符号二字节乘数存在42H41H中,另一无符号乘数存在40H中,试编程实现:&
42H41H&40H→42H41H40H
41.已知fosc = 12MHz,试编写延时2s子程序。
42.用软件实现逻辑运算:Q =
(R+S)T+(U+V)。其中Q、R、S、T、U和V均为位变量,依次存放在以位地址40首址的位寻址区中。
43.已知某单片机系统每隔1s测一次温度,8位温度A/D值存在特殊功能寄存器SBUF中,试求其1分内的平均值,存40H。
44.已知显示数(≤255)存在30占,试将其转换为共阴显示字段码,存入首址为40H的内RAM中(设共阴显示字段码表已知,且已存在首址为TABD的ROM中)。
45.已知外RAM1000H单元开始存有一组数据,其长度存放在该数据区首字节,要求统计出其中大于10、等于10和小于10
的数的个数,并把统计结果分别存入内RAM 30H32H单元。
46.已知图8-15循环灯电路,VRXD、VTXD、PIOX1分别为P1.5~P1.7,试利用单字节虚拟串行输出子程序VUARTO编制程序,使发光二极管从右到左,每隔0.5秒依次点亮,不断循环。
47.已知图8-16并入串出电路,VRXD、VTXD、PIOX1分别为P1.0P1.2,试利用单字节虚拟串行输出子程序VUARTI编制程序,每隔1秒(运用T0中断,fosc=6MHz)从74HC165并行口输入状态数据,并存入内RAM
48.80C51 P1.4~P1.7分别与93C46 CS
、SK、DI和DO相连,试将80C51内RAM中以30H为首址的10字节数据存入AT93C46首址为40H的区域中。
49.试统计某展览会参展人数。已知展览会有4
个入口,且均已安装检测探头,每进入一人,能产生一个负脉冲,分别输入P3.2、P3.3、P3.4、P3.5。估计参展人数多于10万,试编程,将累计参展人数存32H、
50.已知循环灯电路图6-4,试编程使发光二极管从右至左,每隔0.3秒依次点亮,不断循环。
51.试以串行方式1设计一个发送程序。已知fosc = 11.0592MHz,波特率为2400b/s,SMOD =
1,16个发送数据存在内RAM30H为首地址的区域中。
52.设计一个串行方式2发送子程序(SMOD=0),将片内RAM 40H47H中的数据串行发送,第9数据位作为奇偶校验位(不校对)。
53.编制一个串行方式2接收子程序(SMOD=1),接收10个数据,并核对奇偶校验位,接收核对正确,存首址为50H的内RAM中;发现错误,置位错误F0,并停止接收。
54. 已知一MCS—51单片机系统的片内RAM
20H单元存放了一个8位无符号数7AH,片外扩展RAM的8000H存放了一个8位无符号数86H,试编程完成以上两个单元中的无符号数相加,并将和值送往片外RAM的01H、00H单元中,同时将所编写程序运行完成后的数据和状态添入下表中给出的PSW的有关位以及寄存器A、DPTR和RAM单元中。
55、根据图示电路,编写程序,使0832输出负向锯齿波。
56、设计用单片机P1口控制1位共阴极LED。按键1按下,循环显示0~5,按键2按下,按100μs的间隔显示0和1。设计硬件电路,并编程实现上述功能。
57、单片机用内部定时方法产生频率为100KHz等宽矩形波,假定单片机的晶振频率为12MHz,
&& 请编程实现。
58. 使用定时器中断方法设计一个秒闪电路,让 LED 显示器每秒钟有 400ms 点亮。假定晶
&& 振频率为 6MHz
,画出电路连接图并编写程序。
59. 使用 8031 设计一个键盘接口(可用 8155 或 8255)。键盘共有 12 键(3 行& 4列)其
&& 中 10 个为数字键 0 ~ 9 ,两个为功能键
RESET 和 START 。具体要求如下:
&& (1) 按下数字键后,键值存入 3040H
开始单元中。
&& (2) 按下 RESET 键后,将 PC 复位为
&& (3) 按下 START
键后,系统开始执行用户程序(用户程序的入口地址为 4080H )试画
出该接口的硬件连接图并进行程序设计。
60. 试为 8051 设计一个 LED 显示器接口,该显示器共有八位,从左到右分别为 DG1 ~
&& DG8(共阴极接法),要求将内存 3080H ~
3087H 八个单元中的十进制数(BCD)依次显示
&& 在 DG1 ~ DG8
上。要求:画出电路图并进行编程。
61.已知MCS-51单片机系统片内RAM20H单元存放乐一个8位无符号数7AH,片外扩展RAM的8000H存放了一个8位无符号数86H,试编程完成以上两个单元中的无符号数相加,并将和值送往片外RAM的01H、00H单元中,同时将所编写程序运行完成后的数据和状态添入下表中给出的PSW的有关位以及寄存器A、DPTR和RAM单元中。
62、请写出完成下列操作的指令:
(1)使累加器A的低4位清0,其余位不变。
(2)使累加器A的低4位置1,其余位不变。
(1)使累加器A的低4位取反,其余位不变。
63、试用位操作指令实现下列逻辑操作。要求不得改变未涉及的位的内容。
& (1)使ACC.0置位;
& (2)清除累加器高4位;
& (3)清除ACC.3,ACC.4,ACC.5,ACC.6。
64、试编写程序段实现外部RAM 2000H单元的内容传送到内部RAM 20H中的操作。
65、试编写程序段实现外部RAM 2000H单元的内容传送到外部RAM 3000H中的操作。
66、试编写程序段,将内部RAM的20H、21H、22H三个连续单元的内容依次存入2FH、2EH和2DH单元。
67、试编写程序段,完成两个16位数的减法:7F4DH-2B4EH,结果存入内部RAM的30H和31H单元,31H单元存差的高8位,30H单元存差的低8位。
68、试编写程序段,将R1中的低4位数与R2中的高4位数合并成一个8位数,并将其存放在R1中。
69、试编写程序段,将内部RAM的20H、21H单元的两个无符号数相乘,结果存放在R2、R3中,R2中存放高8位,R3中存放低8位。
70、在内部RAM 的21H单元开始存有一组单字节不带符号数,数据长度为30H,要求找出最大数存入BIG单元。
71、编写程序,把累加器A中的二进制数变换成3位BCD码,并将百、十、个位数分别存放在内部RAM的50H、51H、52H中。
72、编写程序,求内部RAM中50H~59H十个单元内容的平均值,并存放在5AH单元。
73、设有100个无符号数,连续存放在外部RAM
1000H地址开始的区域,编程统计其中的正数、负数和0的个数,并分别存放在内部RAM的20H、21H、22H单元中。
74、编程分别将外部RAM的FH、H、H地址单元清零。
75、试编程对8255初始化,使其A口按方式0输入,B口按方式1输出,C口上半部分按方式0输出,下半部分按方式1输出。
76、编写子程序,将R1中的2个十六进制数转换为ASCII码后存放在R3和R4中。&&&&
77、已知系统的连接如图所示,试编写程序实现下列功能:
(1)编写显示程序,显示“123456”。
(2)编写主程序,功能为:当有键按下(07号)时,都显示键号; 无键按下,保持原有显示状态。
78、试设计MCS-51与DAC0832的接口电路,并编制程序,输出图所示波形。
79、设计并编程,完成单片机的双机通信程序,将甲机片外RAM的FH的数据块通过串行口传送到乙机的20H2FH单元。
80.片内RAM30H开始的单元中有10B的二进制数,请编程求它们之和(和<256 =.
81.试编程对8155进行初始化,设A口为选通输出,B口为选通输入,C口作为控制联络口,并启动定时器/记数器按方式1工作,工作时间为10ms,定时器计数脉冲频率为单片机的时钟频率24分频,fosc=12MHz。
82.试将8031单片机外接一片2716 EPROM和一片6116
RAM组成一个应用系统,请画出硬件连线图,并指出扩展存储器的地址范围。
83、利用定时/计数器T0产生定时时钟,由P1口控制8个指示灯。编一个程序,使8个指示灯依次一个一个闪动,闪动频率为1次/秒(8个灯依次亮一遍为一个周期)。
84、应用单片机内部定时器T0工作在方式1下,从P1.0输出周期为2ms的方波脉冲信号,已知单片机的晶振频率为6MHZ。
请(1)计算时间常数X,应用公式X=216-t(f/12)
(2)写出程序清单
85.片内RAM40H开始的单元内有10B二进制数,编程找出其中最大值并存于50H单元中.&&
86.设计一个2&2行列式键盘电路并编写键盘扫描子程序。
87. 编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去。
88.编制一个循环闪烁灯的程序。有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。画出电路图。
89.将31H、32H单元与41
H、40H单元的双字节十进制无符号数相加,结果存入32H,31H,30H单元。即(31H)(30H)+(41H)(40H)&&
&32H、31H、30H。
MOV& R0,#30H
MOV& R1,#40H
MOV& R2,#02H
L1: MOV& A,@R0
ADDC& A,@R1
MOV&& @R0,A
DJNZ&& R2,L1
MOV&& ACC.0,C
MOV&& @R0,A
在31H、30H单元存入加数如3018,在41H,40H单元存入被加数如8975。
输入程序首地址,(从处为2000H),然后开始单步或断点运行该段程序。
运行过程中检查数据的变化,并在最后检查(32H)=&&&&&
,(31H)=&&&&
(30H)=&&&&
90. 编程实现逻辑运算:Q=(U
*(V+W))+X.Y)+Z。设U~Z的位地址为00H~05H.Q的位地址为07H。《实际中U~Z可以是外部输入端口信号或软件设定的一些控制位》。
91. 编程将片内RAM 30H单元开始的15B的数据传送到片外RAM 3000H开始的单元中去。
92. 片内RAM 30H开始的单元中有10B的二进制数,请编程求它们之和(和<256=。
93. 编一个程序,将累加器中的一个字符从串行接口发送出去。
94. 用查表法编一子程序,将R3中的BCD码转换成ASCII码。
95. 片内RAM40H开始的单元内有10B二进制数,编程找出其中最大值并存于50H单元中。
96. 编一子程序,从串行接口接受一个字符。
97. 利用调子程序的方法,进行两个无符号数相加。请编主程序及子程序。
98. 若图数据块是有符号数,求正数个数。编程并注释。
99.编制一个循环闪烁灯的程序。有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。画出电路图。
100.8225A控制字地址为300FH,请按:A口方式0输入,B口方式1输出,C口高位输出,C口低位输入,确定8225A控制字并编初始化程序.
101.编定一个软件延时1S和1min的子程序.设fosc=6Hz,则一个机器周期1μs。
102请编制串行通信的数据发送程序,发送片内RAM50H~5FH的16B数据,串行接口设定为方式2,采用偶校验方式。设晶振频率为6MHz。
103.应用单片机内部定时器T0工作在方式1下,从P1.0输出周期为2ms的方波脉冲信号,已知单片机的晶振频率为6MHZ。
请(1)计算时间常数X,应用公式X=216-t(f/12)
(2)写出程序清单
104.应用单片机内部定时器T0工作在方式1下,从P1.0输出周期为1ms的方波脉冲信号,已知单片机的晶振频率为6MHZ。
请(1)计算时间常数X,应用公式X=216-t(f/12)
(2)写出程序清单
105.利用89C51的P1口,监测某一按键开关,使每按键一次,输出一个正脉冲(脉宽随意)。编出汇编语言程序。
106、设计一个4位数码显示电路,并用汇编语言编程使"8"从右到左显示一遍。
107、编制一个循环闪烁的程序。有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。画出电路图。
108、在8051单片机的INTO引脚外接脉冲信号,要求每送来一个脉冲,把30H单元值加1,若30H单元记满则进位31H单元。试利用中断结构,编制一个脉冲计数程序。
109.利用89C51的P1口控制8个发光俄二极管LED。相邻的4个LED为一组,使2组每隔0。5S
交替发亮一次,周尔复始。试编写程序。
110.设计89C51和ADC0809的接口,采集2通道10个数据,存入内部RAM的50H~59H单元,画出电路图,编出:
(1)延时方式;
(2)查询方式;
(3)中断方式中的一种程序。
111.试编程对8155进行初始化,设A口为选通输出,B口为选通输入,C口作为控制联络口,并启动定时器/记数器按方式1工作,工作时间为10ms,定时器计数脉冲频率为单片机的时钟频率24分频,fosc=12MHz。
设单片机采用8051,未扩展片外ROM,片外RAM采用一片6116,编程将其片内ROM从0100H单元开始的10B得内容依次外接到片外RAM从100H单元开始得10B中去。
8031扩展8255A,将PA口设置成输入方式,PB口设置成输出方式,PC口设置成输出方式,给出初始化程序。
114& 设计一个2&2行列式键盘电路并编写键盘扫描子程序。
要求将存放在8031单片机内部RAM中30H—33H单元的4字节数据,按十六进制(8位)从做到右显示,试编制程序。
采用8255A或8155H并行扩展口设计一个4x4键盘和6位LED显示器电路且编写键扫描程序和动态显示程序。
116. 设计一个80311单片机与DAC0832的接口电路,并编写相应的程序。
117. 设计一个8031单片机与DACl220的接口电路,并编写相应的程序。
118. 设计一个8031单片机与5G1433的接口电路,并编写相应的数据采集程序。
119. 设计一个8031单片机与ICL7135的接口电路.并编写相应的数据采集程序。
120. 设计一个803l单片机与ADC0809的接口电路,并编写相应的数据采集程序。
121. 设计一个803l单片机与AD574的接口电路,并编写相应的数据采集程序。
利用定时器/计数器T0设汁一产生20kHz的方波并由P1.0输出的程序,晶振频率为12MHz。
设计一个声光报警控制器。要求在正常工作时,绿色指示灯亮;在不正常工作时,同时进行声光报警,红灯闪闪发光,喇叭不断声响。定时间隔自己设定。
某异步通信接口,其帧格式由1个起始位(0),7个数据位,1个偶校验和1个停止位(1)组成。当该接口每分钟传送1800个字符时,试计算出传送波特率。
串行口工作方式在方式1和方式3时,其波特率与fosc、定时器T1工作模式2的初值及SNOD位的关系如何?设fosc=6MHz,现利用定时器T1模式2产生的波特率为110bps。试计算定时器初值。
试设计一个用8155与有32个按键的键盘连接的接口电路。编写程序实现以下功能:用8155定时器定时,每隔2s读一次键盘,并将其读入的键值存入8155片内RAM
40H开始的单元中。
.用8051的P1口作8个按键的独立式键盘接口。试画出其中中断方式的接口电路及相应的键盘处理程序。
试用微机系统设计一个键盘接口。键盘为3&4个键,其中10个为数1~9,两个为功能键RESET和START。具体要求:
(1) 按下数字键后,键值存入3040H开始的单元中(每个字节放一个键值)。
(2)按下RESET(复位)键后,键PC复位成0000H。
(3)按下START(启动)键后,系统开始执行用户程序(用户程序的入口地址4080H)。试画出该接口的硬件连接图并进行程序设计。
129. 按照下列要求编写程序:
(1) 若8255PA口交替接红绿灯,编写红绿灯交替亮灭程序(间隔50ms)
(2). 编写程序将IN0—IN7路模拟电压转换结果存储在以R0为初始地址的内存空间内
两个四位BCD码相加,被加数和加数分别存于50H,51H,52H,53H单元中(次序为千位、百位在低地址中,十位、个位在高地址中),和数存放在54H,55H和56H中(56H用来存放最高位的进位),试编写加法程序。
131. 试编写延时2ms的程序
132. 设计一个4&4行列式键盘电路并编写键扫描子程序。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。以下试题来自:
填空题在MCS51单片机中,使用定时器T0以方式2产生50us定时,在P1.0输出周期为100us的连续方波。已知晶振频率为6MHz。设无关位均置0,则工作方式寄存器TMOD的命令字必须为()。
为您推荐的考试题库
您可能感兴趣的试卷
你可能感兴趣的试题
1.填空题 ff;ce2.填空题 2063.填空题 1310724.填空题 工作方式15.填空题 TF1=1以下试题来自:
填空题设MCS51单片机的晶振频率为6MHz,使用定时器T1以方式1产生周期为200us的方波脉冲,并由P1.7输出信号波形。此时,计数器T的TH1、TL1分别须装入初值()。
为您推荐的考试题库
您可能感兴趣的试卷
你可能感兴趣的试题
1.填空题 2062.填空题 1310723.填空题 工作方式14.填空题 TF1=15.填空题 工作方式1试编写程序,采用单片机定时器T0工作方式1下,从P1.0输出周期为2ms的方波信号,已知单片机的晶振为6MHZ。_百度知道
试编写程序,采用单片机定时器T0工作方式1下,从P1.0输出周期为2ms的方波信号,已知单片机的晶振为6MHZ。
我有更好的答案
000BHT0中断入口
TMOD,#01H ;置计数器模式
IE,#8BHEA,ET0,ET1
SETB TR0启动定时器
NOPSTART2:
0C1H,#B喂狗
采纳率:13%
#include &reg51.h&void InitTimer0(void){
TMOD = 0x01;
TH0 = 0x0FE;
TL0 = 0x0C;
TR0 = 1;}void main(void){
InitTimer0();while(1);}void Timer0Interrupt(void) interrupt 1{
TH0 = 0x0FE;
TL0 = 0x0C;
P1.0=~P1.0;}
能不能用汇编语言来解答呀。顺便问下:楼下的解法正确?
为您推荐:
其他类似问题
方波信号的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。(window.slotbydup=window.slotbydup || []).push({
id: '3284507',
container: s,
size: '0,0',
display: 'inlay-fix'
单片机的定时器/计数器-习题及答案解析
1.MCS-51系列的8051单片机内有几个定时/计数器?每个定时/计数器有几种工作方式?如何选择?
答:MCS-51系列的8051单片机内有2个定时/计数器,即T0和T1,每个都可以编程为定时器或计数器,T0有四种工作方式(方式0&13位、方式1&16位、方式2-可自动装入初值的8位、方式3-两个8位),T1有三种工作方式(与T0相同的前三种),通过对TMOD的设置选择,其高四位选择T1,低四位选择T0。
2.如果采用的晶振频率为3MHz,定时/计数器TO分别工作在方式0、1和2下,其最大的定时时间各为多少?
答:如果采用的晶振频率为3MHz,机器周期为12&1/(3*106)=4us,由于定时/计数器TO工作在方式0、1和2时,其最大的计数次数为和256所以,其最大定时时间分别是:方式0为8192&4us=32.768ms、方式1为65536&4us=262.144ms、方式2为256&4us=1024us。
3.定时/计数器TO作为计数器使用时,其计数频率不能超过晶振频率的多少?
答:由于定时/计数器TO作为计数器使用时,是对外部引脚输入的脉冲进行计数, CPU在每个机器周期采样一次引脚,当前一次采样为高电平,后一次采样为低电平,则为一次有效计数脉冲,所以如果晶振频率为fosc,则其采样频率fosc/12,两次采样才能决定一次计数有效,所以计数频率不能超过fosc/24。
4.简单说明定时/计数器在不同工作模式下的特点。
答:方式0为13位的定时/计数器,由THx的8位和TLx的低5位构成、方式1为16位的定时/计数器,由THx的8位和TLx的8位构成,方式2为8位的定时/计数器,TLx为加1计数器,THx为计数初值寄存器。方式3只能用于T0,是将T0的低8位用作一个独立的定时/计数器,而高8位的TH0用作一个独立的定时器,并借用T1的TR1和TF1作为高8位定时器的启停控制位和溢出标志位。
5.定时器工作在方式2时有何特点?适用于什么应用场合?
答:定时器工作在方式2时是一个可自动装入时间常数初值的8位定时/计数器,TLx为加1计数器,THx为计数初值寄存器。由于其恢复初值由硬件自动完成,所以当需要反复计数时,用方式2可以方便地实现精确的定时。
6.一个定时器的定时时间有限,如何采用两个定时器的串行定时来实现较长时间的定时?
答:一个定时器的定时时间有限,可采用两个定时器的串行定时来实现较长时间的定时,比如,当fosc=12MHz时,单个定时/计数器采用方式1的最大定时时间为65.536ms,此时若用另一个定时/计数器按方式1进行溢出次数计数,在定时器溢出中断时,给计数器发一个计数脉冲,且两者均为方式一,则两者串行可达到的定时时间为ms=ms。
7.设MCS-51单片机的晶振频率为12MHz,请编程使P1.O端输出频率为20kHz的方波。
解:fosc = 12MHz,所以机器周期为1us。20kHz的方波周期为1/(20&1000)=50us,方波即高电平和低电平和时间相等,所以只需设一个定时器定时25us将P1.O求反一次即可。由于题目没有规定,所以可以用查询方式,也可以用中断方式进行编程实现。
方法一:采用查询方式实现
#include&reg51.h&
sbit P1_0=P1^0;//定义输出引脚变量
void main(){
P1_0=0; //输出初值为0
TMOD=0x02; //T0方式2定时
TH0=256-25; //计25次,计数初值为模256减25
TR0=1; //启动T0
while(1) //无限循环
if(TF0){ //查询T0溢出标志
TF0=0; //溢出标志复位
P1_0=!P1_0; //输出求反
方法二:采用中断方式实现
#include&reg51.h&
sbit P1_0=P1^0; //定义输出引脚变量
void main(){
P1_0=0; //输出初值为0
TMOD=0x02; //T0方式2定时
TH0=256-25; //计25次,计数初值为模256减25
IE=0x82; //允许CPU响应中断,允许T0发中断请求
TR0=1; //启动T0
for(;;){} //无限循环等待中断
timer0()interrupt 1 using 1{
P1_0=!P1_0; //输出求反
8.采用定时/计数器TO对外部脉冲进行计数,每计数10O个脉冲,TO切换为定时工作方式。定时1ms后,又转为计数方式,如此循环不止。假定MCS-5l单片机的晶体振荡器的频率为6MHz,要求T0工作在方式1状态,请编写出相应程序。
解:晶体振荡器的频率为6MHz,则机器周期为12&1/(6*106)= 2us, 要定时1ms,需计数次数为次
#include&reg51.h&
sbit P1_0=P1^0;
void main(){
TMOD=0x05;//T0计数,方式一
TH0=()/256;//计数100次
TL0=()%256;
while(!TF0);//等待计数100次的溢出
TF0=0; //溢出标志复位
TMOD=0x01;//T0定时,方式一
TH0=()/256;//计数100次
TL0=()%256;
TR0=1; //启动T0
while(!TF0); //等待定时时间到1ms的溢出
TF0=0; //溢出标志复位
9.设单片机的fosc = 12MHz,使P1.O和P1.1分别输出周期为400us和lOms的方波,请用定时器TO方式2编程实现。
解:fosc = 12MHz,所以机器周期为1us。
要使P1.0输出周期为400us的方波,可以通过定时中断方式实现,定时时间为200us,当时间到时,对P1.0求反即可。
要使P1.1输出周期为10ms的方波,也可以通过定时中断方式实现,定时时间为5ms,当时间到时,对P1.1求反即可。由于5ms/200us=25,所以也可以通过对200us的定时计数25次来实现。程序如下:
#include&reg51.h&
sbit P1_0=P1^0;//输出周期为400us的方波的引脚
sbit P1_1=P1^1; //输出周期为10ms的方波的引脚
unsigned char num=0;//中断次数计数器,初值为0
void main(){
P1_0=0; //输出初值为0
P1_1=0; //输出初值为0
TMOD=0x02; //T0方式2定时
TH0=256-200;//计200次,计数初值为模256减200
IE=0x82; //允许CPU响应中断,允许T0发中断请求
TR0=1; //启动T0
for(;;){} //无限循环等待中断
void timer0()interrupt 1 using 1{
P1_0=!P1_0; //输出P1_0求反
num++; //中断次数加1
if(num==25){// 中断次数达到25次
num=0; //中断次数复位为0
P1_1=!P1_1;//输出P1_1求反
10.编写程序,要求使用TO,采用方式2定时,在P1.0输出周期为400us占空比为10:1的矩形脉冲。
解:设fosc = 12MHz,则机器周期为1us。设P1.0初值为0。
周期为400us,可设置方式2定时,计数初值为256-40,一个周期中断10次为400us,在中断计数为1和2(或任意两次计数之间)时,对P1.0求反即可。
#include&reg51.h&
sbit P1_0=P1^0; //输出周期引脚
unsigned char cnt=0; //中断次数计数器,初值为0
void main(){
P1_0=0; //输出初值为0
TMOD=0x02; //T0方式2定时
TH0=256-40; //计40次,计数初值为模256减40
IE=0x82; //允许CPU响应中断,允许T0发中断请求
TR0=1; //启动T0
for(;;){} //无限循环等待中断
void timer0()interrupt 1 using 1{
cnt++;//中断次数加1
if(cnt==1||cnt==2) P1_0=!P1_0; //中断次数为1或2时对输出引脚求反
if(cnt==10)cnt=0; //中断次数达到10时复位为0
标签(Tag):
------分隔线----------------------------
------分隔线----------------------------}

我要回帖

更多关于 单片机晶振电路 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信