广州周立功单片机发展有限公司面试题集锦.doc_第1页
广州周立功单片机发展有限公司面试题集锦.doc_第2页
广州周立功单片机发展有限公司面试题集锦.doc_第3页
广州周立功单片机发展有限公司面试题集锦.doc_第4页
广州周立功单片机发展有限公司面试题集锦.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

昨晚多几分钟的准备,今天少几小时的麻烦京佳格言广州周立功单片机发展有限公司面试题集锦(考生整理)试题一:对 80C51单片机内部RAM低128字节存储单元清零,请用汇编语言编程(12分)。答题分析:这是一道非常基础的题目,具有良好习惯的程序员编写的第一段程序就是对单片机上电进行初始化。单片机内部低128字节即就是0127,转换为16进制数值则表示为07FH。如果用循环语句的话,那么计数器的初始值应该为7FH,假设R0=7FH。程序设计如下:ORG 0000HAJMPMAINORG0030HMAIN:MOVR0,#7FHCLRALOOP:MOVR0,ADJNZR0,LOOPAJMP$;END R0在此既作为循环程序计数器,又作为内部存储单元的动态地址指针(计数器)。当计数器R0为7FH时,那么R0所对应的存储单元的地址为7FH;当计数器R0减1时,则R0所对应的存储单元地址相应地减1;当计数器R0减为0时,则R0所对应的存储单元地址也减为0,即就是00H单元。如果选用R1作为计数器的话,即便将R1减为0,也不能将00H单元清0,因为R1在内部存储器的实际地址为01H,那么最后还需要单独对00H单元进行清0才能完成初始化。 试题二:用MCS-51单片机的I/O口直接驱动8个发光二极管,回答以下问题(12分):(1) 试画出实现原理图,给出合适的电路参数;(2) 用“汇编语言或C语言编程”,将这8个发光管循环点亮,每次只有一个亮,用肉眼能看见其循环。 试题三:用你最熟悉单片机的I/O口直接驱动一个七段字形LED数码管,回答以下问题(12分):(1) 试画出实现原理图,给出合适的电路参数,得到合适的笔形码;(2) 用“汇编语言或C语言编程”,让数码管循环显示09,用肉眼能看见其循环。试题四:算放大器:求放大倍数,何时输入电阻最大;555定时口器接成的多谐振荡器:工作原理,波形图,振荡周期;74HC594的用法:用74HC594来驱动一位七段数码管,要求循环显示09 硬件A(本科)有七题: 1、运放,用到虚短虚断的知识 2、三极管设计成的电源控制电路,用到三极管电流电压基本计算 3、串联电路转换成并联电路,用到阻抗变换的计算 4、运放电路放大倍数的计算及输入电阻的计算 5、555多谐振荡电路,数电课本的例题 6、单片机程序设计题:用74HC594来驱动一位七段数码管,要求循环显示09 7、C语言程序设计题:涉及数据结构与队列试题五:试题六:用任意一单片机设计一个4X4的键盘并编出程序得到键值,要求有去抖,去抖时单片机可以做其它事情,按一下键盘蜂鸣器叫一下,蜂鸣器叫过程中也要单片机可以做其它事情。(提示:用定时器产生基本节拍)题目是我做后记下来的,当时在做得时候写的很乱,被老师评为编程不怎么样。回来后想想其实很简单就一个中断函数搞定: void time1_sv() interrupt 5 using 2 EA=0; TF2=0; /清中断标志位 if(spcnt-)=0)spcnt=0;SPEAK=0x00; if(scankey()count+; if(count8)getkeyval();count=0;spcnt=30;SPEAK=0xff; else count=0; EA=1;思路是:连续n次进入中断时都检测到有按键,那就去取按键值,并使蜂鸣器叫,蜂鸣器叫多长时间由spcnt的值决定。试验源程序:#include mydef.h/定义外围器件地址#define SPEAK XBYTE0xC000#define KEYIN XBYTE0xE000#define KEYOUT XBYTE0xF000#define PORTA XBYTE0xa000#define PORTB XBYTE0xb000#define LEDD XBYTE0x9000/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,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; 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之类的单片机都有定时器2void time1_sv() interrupt 5 using 2 EA=0; TF2=0; /清中断标志位 if(spcnt-)=0)spcnt=0;SPEAK=0x00; if(scankey()count+; if(count8)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) ORTA=0x00; ORTB=0xff; LEDD=tableleddat; msec(2); ORTA=0xff; LEDD=tableleddat; ORTB=0x00; mse

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论