1、单片机常见面试题 资料仅供参考 1、 简单描述一个单片机系统的主要组成模块,并说明各模块之间的数据流流向和控制流流向。简述单片机应用系统的设计原则。(仕兰微面试题目) 答:单片机是一种微型的计算机,应该由运算器、控制器、存储器、输入设备、输出设备组成 2、画出8031与2716(2K*8ROM)的连线图,要求采用三-八译码器,8031的P2.5,P2.4和P2.3参加译码,基本地址范围为3000H-3FFFH。该2716有没有重叠地址?根据是什么?若有,则写出每片2716的重叠地址范围。(仕兰微面试题目) 3、用8051设计一个带一个8*16键盘加驱动八个数码管(共阳)的
2、原理图。(仕兰微面试题目) 5、中断的概念?简述中断的过程。(仕兰微面试题目) 答:中断的慨念:当外部请求服务时,暂时中断当前主程序,转而执行中断处理程序,完 成后自动返回被中断的主程序继续运行 中断的过程: 中断源发出中断请求→对中断请求进行响应→执行中断服务程序→返 回主程序。 6、如单片机中断几个/类型,编中断程序注意什么问题;(未知) 答:中断初始化,工作方式,中断入口,中断返回 ,优先级别。 7、要用一个开环脉冲调速系统来控制直流电动机的转速,程序由8051完成。简单原理如下:由P3.4输出脉冲的占空比来控制转速
3、占空比越大,转速越快;而占空比由K7-K0八个开关来设置,直接与P1口相连(开关拨到下方时为"0",拨到上方时为"1",组成一个八位二进制数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
4、 MOV P3.4,C ACALL DELAY :此延时子程序略 -------- -------- AJMP LOOP1 8、单片机上电后没有运转,首先要检查什么?(东信笔试题) 答: 1,电源,查看单片机各引脚电压值是否正确 2,查看晶振是否正常工作,能够用示波器查看 3,查看最小系统有无接错,断路等毛病,用万用表 9、What is PC Chipset? (扬智电子笔试) 芯片组(Chipset)是主板的核心组成部分,按照在主板上的排列位置的不同,一般分为北桥芯片和南桥芯片。北桥芯片提供对CPU的类
5、型和主频、内存的类型和最大容量ISA/PCI/AGP插槽、ECC纠错等支持。南桥芯片则提供对KBC(键盘控制器)、RTC(实时时钟控制器)、USB(通用串行总线)、Ultra DMA/33(66)EIDE数据传输方式和ACPI(高级能源管理)等的支持。其中北桥芯片起着主导性的作用,也称为主桥(Host Bridge)。 除了最通用的南北桥结构外,当前芯片组正向更高级的加速集线架构发展,Intel的8xx系列芯片组就是这类芯片组的代表,它将一些子系统如IDE接口、音效、MODEM和USB直接接入主芯片,能够提供比PCI总线宽一倍的带宽,达到了266MB/s。 10、如果简历上还说做过cp
6、u之类,就会问到诸如cpu如何工作,流水线之类的问题。(未知) 11、计算机的基本组成部分及其各自的作用。(东信笔试题) 12、请画出微机接口电路中,典型的输入设备与微机接口逻辑示意图(数据接口、控制接口、所存器/缓冲器)。 (汉王笔试) 13、cache的主要部分什么的。(威盛VIA .11.06 上海笔试试题) 答:它由Cache 存储部件和Cache控制部件组成。Cache 存储部件一般采用与CPU同类型的半导体存储器件,存取速度比内存快几倍甚至十几倍。而Cache 控制器部件包括主存地址寄存器、Cache 地址寄存器,主存—Cache地址变换部件及替换控制部件等 14、
7、同步异步传输的差异(未知 答:1,异步传输是面向字符的传输,而同步传输是面向比特的传输。 2,异步传输的单位是字符而同步传输的单位是桢。 3,异步传输经过字符起止的开始和停止码抓住再同步的机会,而同步传输则是以数据中抽取同步信息。 4,异步传输对时序的要求较低,同步传输往往经过特定的时钟线路协调时序。 5,异步传输相对于同步传输效率较低。 15、串行通信与同步通信异同,特点,比较。(华为面试题) 答:异步串行通信是指通信双方以一个字符(包括特定附加位)作为数据传格单位且发送方传送字符的间隔时间不一定。同步串行通信是指允许连续发送一序列字符而每个字符的数据位数都相同且没
8、有起始位和停止位 16、RS232c高电平脉冲对应的TTL逻辑是?(负逻辑?) (华为面试题) 信号与系统 1、的话音频率一般为300~3400HZ,若对其采样且使信号不失真,其最小的采样频率应为多大?若采用8KHZ的采样频率,并采用8bit的PCM编码,则存储一秒钟的信号数据量有多大?(仕兰微面试题目) 2、什么耐奎斯特定律,怎么由模拟信号转为数字信号。(华为面试题) 3、如果模拟信号的带宽为 5khz,要用8K的采样率,怎么办?lucent) 两路? 4、信号与系统:在时域与频域关系。(华为面试题) 5、给出时域信号,求其直流分量。(未知) 6、给出一时域信号,要求(1)写
9、出频率分量,(2)写出其傅立叶变换级数;(3)当波形经过低通滤波器滤掉高次谐波而只保留一次谐波时,画出滤波后的输出波形。(未知) 7、sketch 连续正弦信号和连续矩形波(都有图)的傅立叶变换 。(Infineon笔试试题) 8、拉氏变换和傅立叶变换的表示式及联系。(新太硬件面题) 题:用任意一单片机设计一个4X4的键盘并编出程序得到键值,要求有去抖,去抖时单片机能够做其它事情,按一下键盘蜂鸣器叫一下,蜂鸣器叫过程中也要单片机能够做其它事情。(提示:用定时器产生基本节拍) 题目是我做后记下来的,当时在做得时候写的很乱,被老师评为编程不怎么样。回来后想想其实很简单就一个中断函数
10、搞定: 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的值决定。 试验源程序:
11、include "mydef.h" //定义外围器件地址 #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 //L
12、ED显示译码 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
13、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;
14、 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)
15、 { 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
16、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; TF2=0; //清中断标志位 if((spcn
17、t--)==0){spcnt=0;SPEAK=0x00;} if(scankey()){count++; if(count>8){getkeyval();count=0;spcnt=30;SPEAK=0xff;} } else {count=0;} EA=1; } //粗劣延时mS级 void msec(uint x) { unsigned int j; while((x--)!=0) { for(j=0;j<=123;j++) {;} } } //数码管显示 void dir(uchar leddat) { O
18、RTA=0x00; ORTB=0xff; LEDD=table[leddat]; msec(2); ORTA=0xff; LEDD=table[leddat]; ORTB=0x00; msec(2); ORTB=0xFF; } //主函数 main() { C_T2=0; //T2工作在定时器 CP_RL2=0; //自动装栽 RCAP2H=TH2=TIME_H; RCAP2L=TL2=TIME_L; EA=1; ET2=1; TR2=1; while(1) { dir(key_value); } }






