单片机常见面试题 下载本文

内容发布更新时间 : 2024/7/2 5:01:10星期一 下面是文章的全部内容请认真阅读。

1、简单描述一个单片机系统的主要组成模块,并说明各模块之间的数据流流向和控制流流向。简述单片机应用系统的设计原则。(仕兰微面试题目) 答:单片机是一种微型的计算机,应该由运算器、控制器、存储器、输入设备、输出设备

组成

2、画出8031与2716(2K*8ROM)的连线图,要求采用三-八译码器,8031的,和参加译码,基本地址范围为3000H-3FFFH。该2716有没有重叠地址?根据是什么?若有,则写出每片2716的重叠地址范围。(仕兰微面试题目) 3、用8051设计一个带一个8*16键盘加驱动八个数码管(共阳)的原理图。(仕兰微面试题目)

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

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

中断的过程:

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

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

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

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

LOOP1 :MOV R4,#0FFH --------

MOV R3,#00H

LOOP2 :MOV A,P1 -------- SUBB A,R3 JNZ SKP1 --------

SKP1:MOV C,70H MOV ,C

ACALL DELAY :此延时子程序略 -------- -------- AJMP LOOP1

8、单片机上电后没有运转,首先要检查什么?(东信笔试题) 答: 1,电源,查看各电压值是否正确

2,查看是否正常工作,可以用查看 3,查看有无接错,断路等毛病,用万用表

9、What is PC Chipset (扬智电子笔试)

答:它由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、如果模拟信号的带宽为 5khz,要用8K的采样率,怎么办?lucent) 两路? 4、信号与系统:在时域与频域关系。(华为面试题) 5、给出时域信号,求其直流分量。(未知)

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

7、sketch 连续正弦信号和连续矩形波(都有图)的傅立叶变换 。(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;} }

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)%6 //LED显示译码 uchar code table[]={0x0C0,0x0F9,0x0A4,0x0B0,0x99,0x92,0x82,0x0F8,0x80,0x90,0x88,0x83,0x0C6,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;