❶ 单片机复习题(c语言)
一. 填空题
1. MCS-51单片机是____8____位机,其最大程序容量可达___64_____K字节,有_____4___个并行口和____32____条I/O管脚。
2. MCS-51单片机正常工作所必须的外部硬件电路是___电源_____、___时钟_____、__复位______。
3. MCS-51单片机复位电平是___高_____电平,正常工作时复位端为__低______电平,复位后并所有行口的输出为____高____电平。
4. MCS-51单片机内部结构中,四个基本功能单元分别是___CPU_____、__RAM______、____ROM____、___定时器计数器I/O口_____;三个扩展功能单元分别是____?____、___?____、___?_____。
5. MCS-51单片机内部RAM四个分区分别是__00H到1FH(R0-R7)可位寻址____、____ _ 20H-2FH___、_30H-7FH__ _____、__80H-FFH______。
6. MCS-51单片机___P0_____口没有内部上拉电阻;并行口作为输入口使用时必须保证该端口场效应管__开漏______,即向该端口写___0xff_____,此时该端口的输出锁存器Q端为___1(高电平)_____。
7. MCS-51单片机计数器工作在方式1和方式2的最大计数值分别是_____65536______、___256________。
8. MCS-51单片机若单片机的主时钟振荡频率为6MHz,定时器工作在方式1和方式2的最大定时时间分别是_____自己算!!______ms、___不懂看书!!________us。基本指令周期是___0.5-2_______us。
9. MCS-51单片机的五个中断源分别是___INT0______、__T0_______、_____INT1_____、___T1______、___UART_______。
10. 编写程序常用的三种程序结构是 __顺序结构_______、__循环结构_______、___选择结构_______。
11. C语言语法中,数据类型unsigned char 定义的是____8_____位无符号数;数据类型unsigned int定义的是___16______位无符号数。对8位和16位有符号数,定义数据类型关键词为___signed char______、____short_____。
12. 单片机上电后是从主函数void main()的___0x0000H______位置运行。
13. 单片机C语言编程时必须有的固定结构的语句是#include <reg51.h>、void main()以及____while_____。
14. keil 集成开发软件的三个主要功能是___编译______、__调试_______、___仿真______。
15. 十进制数100对应的十六进制数是____64_____、二进制数是___01100100______。
二. 读程序题
默认有关变量x、y、z、a、b、c、i均为unsigned int (8为无符号数)(这个是不是打错了)请写出局部程序运行后的结果,用十进制表示。
1. x = ___6___, y = ___3___, z = __11____ , a = ___5___, b = ___15___, c = ___252___。
x = 50/8; y = 100%12; z = 240+26;
a = z>>1; b = x | z; c = ~y;
2. x = _183_____, y = __10____, z = __11____ , a = __10____, b = __10____, c = ___10___。
x = 0xa5 ^ 0x12; y = 5*2; z = y++
a = --z; b = a & y; c = (a+z)/2;
3. x = ___6___, y = __12____, i = ___3___。
x=0;y=0;
for (i=1;i<=3;i++){
x = x+i;
y = y + i*2;
}
4. x = __20____, y = ___10___, z = ___81___ , a = __8____, b = ____9__,
c = __48____, i = ___8___。
a=0;
if (!a){
x=20; y=x<<2; z=y++;
}else{
x=10; y=x<<2; z=y++;
}
i=2<<2; y=10;
if (i>3 && y){
a=y & 0x0c;
b=++i;
c=x^y;
}
随便做的,有些东东忘了!不懂的自己回去看看书去。
❷ 求解一道单片机C语言编程题,急
#include"AT89X52.h"
sbit BUTTON = P1^1;
sbite LED = P1^0;
unsigned int reg;
void main(void)
{
while(1)
{
if (!BUTTON)
{
reg= 5000;
while(--reg);
if (!BUTTON)
{
LED = ~LED;
while(!BUTTON);
}
}
}
}
❸ 求这个单片机题目的答案,基于51单片机,要求用c语言编程并在开发板上实现。来大神
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit K1=P1^0;
//延时
void DelayMS(uint ms)
{
uchar
i;
while(ms--)
for(i=0;i<120;i++);
}
//向串口发送字符
void Putc_to_SerialPort(uchar c)
{
SBUF=c;
while(TI==0);
TI=0;
}
//主程序
void main()
{
uchar
Operation_No=0;
SCON=0x40; //串口模式1
TMOD=0x20; //T1工作模式2
PCON=0x00; //波特率不倍增
TH1=0xfd;
TL1=0xfd;
TI=0;
TR1=1;
while(1)
{
if(K1==0) //按下K1时选择操作代码0,1,2,3
{
while(K1==0);
Operation_No=(Operation_No+1)%2;
}
Putc_to_SerialPort('A'+Operation_No);
DelayMS(100);
}
}
//乙机程序
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar num=0;
sfr LED=P0;
//延时
void DelayMS(uint ms)
{
uchari;
while(ms--)for(i=0;i<120;i++);
}
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
if(num>=20)
{
num=0;
LED=~LED;
}
}
//主程序
void main()
{
SCON=0x50; //串口模式1,允许接收
TMOD=0x21; //T1工作模式2
PCON=0x00; //波特率不倍增
TH1=0xfd; //波特率9600
TL1=0xfd;
RI=0;
TR1=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
LED=0xff;
while(1)
{
if(RI) //收到则
{
RI=0;
switch(SBUF)//根据所收到的不同命令字符完成不同动作
{
case'A': TR0=1;break; //LED闪烁
case'B': LED=0xff;TR0=0;break; //LED灭
}
}
DelayMS(100);
}
}
❹ 单片机C语言试题求解
定时器计数频率为12MHz/12=1MHz,则计一个数为1us,最大65536*1us=65.536ms,计数器向上计数,则定时50ms为65536-50000=15536=0x3CB0,所以TH0=0x3C, TL0=0xB0