单片机常见面试题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、简单描述一个单片机系统的主要组成模块,并说明各模块之间的数据流流向和控制流

流向。简述单片机应用系统的设计原则。(仕兰微面试题目) 答:单片机是一种微型的计算机,应该由运算器、控制器、存储器、输入设备、输出设备组成

2、 画出8031与2716( 2K*8ROM 的连线图,要求采用三-八译码器,8031的,和参加译 码,基本地址范围为3000H-3FFFH 该2716有没有重叠地址?根据是什么?若有,则写 出每片2716的重叠地址范围。(仕兰微面试题目)

3、 用8051设计一个带一个8*16键盘加驱动八个数码管(共阳)的原理图。(仕兰微面 试题目)

5、中断的概念?简述中断的过程。(仕兰微面试题目)

答:中断的慨念:当外部请求服务时,暂时中断当前主程序,转而执行中断处理程序,完 成后自动返回被中断的主程序

继续运行

中断的过程:

中断源发出中断请求f 对中断请求进行响应f 执行中断服务程序f 返 回主程序。

&如单片机中断几个/类型,编中断程序注意什么问题;(未知) 答:中断初始化,工作方式,中断入口,中断返回 ,优先级别。

7、要用一个开环脉冲调速系统来控制直流电动机的转速,程序由 8051完成。简单原理 如下:由输出脉冲的占空比来控制转速,占空比越大,转速越快;而占空比由 K7-K0八 个开关来设置,直接与P1 口相连(开关拨到下方时为"0",拨到上方时为"1",组成一个 八位二进制数N ),要求占空比为N/256。(仕兰微面试题目)

下面程序用计数法来实现这一功能,请将空余部分添完整。

MOV P1,

LOOP1 :

SKP1:

MOV C 70H MOV ,C

ACALL DELAY :此延时子程序略

AJMP L00P1

#0FFH

MOV R4 #0FFH

MOV R3 LOOP2 : #00H

MOV A P1

SUBB A JNZ SKP1

R3

8、单片机上电后没有运转,首先要检查什么?(东信笔试题) 答:

答:它由Cache 存储部件和Cache 控制部件组成。Cache 存储部件一般采用与 CPU 同类型的半导体 存储器件,存取速度比内存快几倍甚至十几倍。 而Cache 控制器部件包括主存地址寄存器、 Cache 地

址寄存器,主存一Cache 地址变换部件及替换控制部件等

14、同步异步传输的差异(未知

答:1,异步传输是面向字符的传输,而同步传输是面向比特的传输。

2, 异步传输的单位是字符而同步传输的单位是桢。

3, 异步传输通过字符起止的开始和停止码抓住再同步的机会,而同步传输则是以数据中抽取同步信 息。

4, 异步传输对时序的要求较低,同步传输往往通过特定的时钟线路协调时序。

5, 异步传输相对于同步传输效率较低 。

15、串行通信与同步通信异同,特点,比较。(华为面试题)

答:异步串行通信是指通信双方以一个字符(包括特定附加位)作为数据传格单位且发送方传送字 符的间隔时间不一定。同步串行通信是指允许连续发送一序列字符而每个字符的数据位数都相同且没 有起始位和停止位

16、RS232C 高电平脉冲对应的TTL 逻辑是?(负逻辑?)(华为面试题) 信号与系统

1、 的话音频率一般为300~3400HZ 若对其采样且使信号不失真,其最小的采样频率应为 多大?若采用8KHZ 勺采样频率,并采用8bit 的PCM 编码,则存储一秒钟的信号数据量 有多大?(仕兰微面试题目)

2、 什么耐奎斯特定律,怎么由模拟信号转为数字信号。(华为面试题)

3、 如果模拟信号的带宽为5kh z,要用8K 的采样率,怎么办? luce nt )两路?

4、 信号与系统:在时域与频域关系。(华为面试题)

5、 给出时域信号,求其直流分量。(未知)

&给出一时域信号,要求(1)写出频率分量,(2)写出其傅立叶变换级数;(3)当 波形经过低通滤波器滤掉高次谐波而只保留一次谐波时,画出滤波后的输出波形。(未 知)

7、 s ketch 连续正弦信号和连续矩形波(都有图)的傅立叶变换。(Infineon 笔试试题) 8、 拉氏变换和傅立叶变换的表达式及联系。(新太硬件面题)

题:用任意一单片机设计一个 4X4的键盘并编出程序得到键值,要求有去抖,去抖时单 片机可以做其它事情,按一下键盘蜂鸣器叫一下,蜂鸣器叫过程中也要单片机可以做其 它事情。(提示:用定时器产生基本节拍)

题目是我做后记下来的,当时在做得时候写的很乱,被老师评为编程不怎么样。回来后 想想其实很简单就一个中断函数搞定:

void time1_sv() interrupt 5 using 2{

EA=0;

TF2=0; // 清中断标志位 if((spcnt--)==0){spcnt=0;SPEAK=0x00;} if(scankey()){count++; if(count>8){getkeyval();count=0;spcnt=30;SPEAK=0xff;}

}

1,电源,查看单片机各引脚电压值是否正确

,查看晶振是否正常工作, 可以用示波器查看

,查看最小系统有无接错, 断路等毛病,用万用表

9、What is PC Chip set? (扬智电子笔试)

else {count=0;}

EA=1;

}

思路是:连续n 次进入中断时都检测到有按键,那就去取按键值,并使蜂鸣器叫,蜂鸣器叫多长时间由spcnt 的值决定。

试验源程序:#include "" // 定义外围器件地址

#define SPEAK XBYTE[0xC000] #define KEYIN XBYTE[0xE000] #define KEYOUT XBYTE[0xF000]

#define PORTA XBYTE[0xa000] #define PORTB XBYTE[0xb000] #define LEDD XBYTE[0x9000]

//3000 个机器周期中断一次#define TIME_H (65535-3000)/256 #define TIME_L (65535-3000)%256 //LED 显示译码

uchar code table[]={0x0C0,0x0F9,0x0A4,0x0B0,0x99,0x92,0x82,0x0F8,0x80,0x90,0x88,0x83,0x 0C6,0x0A1,0x86,0x8E,0x7F,0x89};

// 全局变量

uchar key_value,count,spcnt;

// 判断有无按键

uchar scankey() { KEYOUT=0x00;

if(((~KEYIN)&0x0f)!=0) return(1); // else

有键按下

return(0);

}

// 得到键值void getkeyval(void) {

KEYOUT=0x0e; switch(KEYIN&0x0f)

{ case 14:key_value=0;break;

case 13:key_value=1;break;

case 11:key_value=2;break;

case 7:key_value=3;break;

default:break;

}

KEYOUT=0x0d;

switch(KEYIN&0x0f)

{ case 14:key_value=4;break; case 13:key_value=5;break; case

11:key_value=6;break; case 7:key_value=7;break; default:break;

}

KEYOUT=0x0b;

switch(KEYIN&0x0f)

{ case 14:key_value=8;break; case 13:key_value=9;break; case

11:key_value=10;break; case 7:key_value=11;break; default:break;

}

KEYOUT=0x07;

switch(KEYIN&0x0f)

{ case 14:key_value=12;break; case 13:key_value=13;break; case

11:key_value=14;break; case 7:key_value=15;break; default:break;

}

}

//定时T2中断89c52 , w78e58之类的单片机都有定时器2 void time1_sv() interrupt 5 using 2{

EA=0;

相关文档
最新文档