完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
活动简介:
“每日一题”是XDLab推出的一项重要活动,每天早上8点我们会在QQ群:XDLab_1和XDLab_2内公布今天的“每日一题”的题目。大家可以根据自己的理解对题目迚行回答,也可以相互讨论,我们鼓励大家积极发言。然后当天晚上的时候我们会给出一个参考答案。在周日的时候,我们会将这一周的7个“每日一题”的题目以及参考答案汇总整理,上传至QQ群共享中,同时我们还会准备一定数量的纸质版放在店内供大家免费领取,先到先得。 活动目的在于通过“每日一题”让大家每天迚步一点点,增强大家的基础知识,提高大家对电子制作的兴趣。我们鼓励大家积极发言,如果丌懂、是菜鸟,请积极发问;如果懂、是大神,请慷慨解囊。 由于水平有限,如果您发现参考答案中有错误戒者有需要补充的,请将您的答案戒者建议发送至:xidianlab@126.com。同时如果您有什么好的问题,也可以将问题发送至邮箱:xidianlab@126.com。由XDLab发到群里,供大家一起讨论。 考虑到部分同学丌能及时的了解到QQ群内的动态,我们也会将每天的题目同步更新到人人网、微信平台、电子发烧友论坛上,欢迎大家持续关注。 (1) 人人主页:西电实验室 (2) 微信公众账号:xdlwelcom |
|
相关推荐
5 个讨论
|
|
时间:2014年11月24日 题目:C语言宏的定义有哪些?试举例子说说。 解答: 1.防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H 2.重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,便移植。 3.得到指定地址上的一个字节或字 #define MEM_B( x ) ( *( (byte *) (x) )) #define MEM_W( x ) ( *( (word *) (x) )) 4.求最大值和最小值 #define MAX( x, y ) ( ((x) > (y)) ?(x) : (y) ) #define MIN( x, y ) ( ((x) < (y)) ?(x) : (y) ) 5.得到一个field在结构体(struct)中的偏移量 #define FPOS( type, field ) /*lint -e545 */ ( (dword) &(( type*) 0)-> field ) /*lint +e545 */ 6.得到一个结构体中field所占用的字节数 #define FSIZ( type, field ) sizeof(((type *) 0)->field ) 7.按照LSB格式把两个字节转化为一个Word #define FLIPW( ray ) ( (((word)(ray)[0]) * 256) + (ray)[1] ) 8,按照LSB格式把一个Word转化为两个字节 #define FLOPW( ray, val ) (ray)[0] = ((val) / 256); (ray)[1] = ((val) & 0xFF) 9.得到一个变量的地址(word宽度) #define B_PTR( var ) ( (byte *) (void*) &(var) ) #define W_PTR( var ) ( (word *) (void*) &(var) ) 10.得到一个字的高位和低位字节 #define WORD_LO(xxx) ((byte)((word)(xxx) & 255)) #define WORD_HI(xxx) ((byte) ((word)(xxx)>> 8)) 11.返回一个比X大的最接近的8的倍数 #define RND8( x ) ((((x) + 7) / 8 ) * 8) 12.将一个字母转换为大写 #define UPCASE( c ) ( ((c) >= 'a'&& (c) <= 'z') ? ((c) - 0x20) : (c) ) 13.判断字符是不是10进值的数字 #define DECCHK( c ) ((c) >= '0'&& (c) <= '9') 14.判断字符是不是16进值的数字 #define HEXCHK( c ) ( ((c) >= '0'&& (c) <= '9') || ((c) >= 'A' && (c) <='F') || ((c) >= 'a' && (c) <='f') ) 15.防止溢出的一个方法 #define INC_SAT( val ) (val = ((val)+1> (val)) ? (val)+1 : (val)) 16.返回数组元素的个数 #define ARR_SIZE( a ) ( sizeof( (a) ) /sizeof( (a[0]) ) ) 17.返回一个无符号数n尾的值MOD_BY_POWER_OF_TWO(X,n)=X%(2^n) #define MOD_BY_POWER_OF_TWO( val,mod_by ) ( (dword)(val) &(dword)((mod_by)-1) ) 18.取得数组元素个数 #define ARRAY_NUM(__array) (sizeof(__array)/sizeof(__array[0])) 19.宏定义防止使用时错误 参数加括号,使用do{}while(0)保持宏的完整性 宏中#和##的用法 (一)一般用法 我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起. (二)当宏参数是另一个宏的时候 需要注意的是凡宏定义里有用'#'或'##'的地方宏参数是不会再展开. |
|
|
|
|
|
时间:2014年11月25日 题目:如何检查51单片机最小系统是否正常?分为哪几部? 解答: (一) 时钟电路的检查:首先检查晶振的大小值是否正确,是否插好,然后用万用表测一下 18、19 引脚对地电压值,正常的话应该在 2.5V(二分之一 VCC)左右(或者用示波器 测也行)。如果没有,说明晶振并没有起振,单片机没有工作。这个时候需要检查下晶振部分的电路有没有焊接方面的错误。 (二) 复位电路的检查:电容是否焊反,轻触按键是否焊错(特别注意),接 VCC,GND 了没。(补充:单片机复位电路就好比电脑的重启部分,当电脑在使用中出现死机,按下重启 按钮电脑内部的程序从头开始执行。单片机也一样,当单片机系统在运行中,受到环境 干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始执行。) (三) VCC 和 GND 引脚:是否连接正确。 (四) EA(31)引脚:需要接高电平。如果悬空的话,工作不正常。 (五) 如果使用了 P0 口的话,还需要检查上拉电阻。 (上图中没有画上拉电阻) |
|
|
|
|
|
时间:2014年11月26日 题目:什么是中断? 中断是怎样分类的?以stc89c51为例说说它的中断资源有哪些。 解答: 一.(1)中断: 程序执行过程中,允许外部或内部事件通过硬件打断程序的执行,使其 转向为处理外部或内部事件的中断服务程序中去;完成中断服务程序后 ,CPU继续原来被打断的程序,这样的过程称为中断响应过程。 (2)中断源: 能产生中断的外部和内部事件。 二.中断的分类: 大致分为外部中断、内部中断。 51的中断系统: 包括中断源、中断允许寄存器IE、中断优先级寄存器IP、中断向量等。 最多支持两级嵌套。 三.51的中断源: 1.两个外部中断源INT0和INT1,外部设备的中断请求信号、掉电等故障 信号都可以从这两个引脚输入。 2.三个内部中断源为定时器/计数器T0和T1的定时/计数溢出中断源和串 行口发送或接收中断源。 3.52多了一个定时器。 四.51中断可以分为三类: 1.外部中断--由INT0和INT1引脚上引入,有两种信号触发方式,电平触发和跳变触发。 2.定时中断--为了满足定时或计数的需要而设置的。当计数器发生计数溢出时,可以向CPU申请中断。属于内部中断。51有TF0和TF1两个中断源。 3.串行中断--串行中断是为串行数据传送的需要而设置的。每当串行口 发送或接收一组串行数据时,就产生一个中断请求。RX,TX--串行中 断。 |
|
|
|
|
|
时间:2014年11月27日 题目:什么是寄存器?寄存器是怎样分类的?以STC89C51为例说说它的寄存器资源有哪些? 解答: 寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。 比如控制io口输出,寻址等等。 分类: 1. 程序计数他器PC (ProgramCounter) 2.地址寄存器AR 3.缓冲寄存器DR 4.指令寄存器IR 5.微地址寄存器μAR 6. 微指令寄存器μIR 7.状态指令寄存器SR(statuspointer) 8.通用寄存器(General purpose-registers) 9.堆栈指针寄存器(stack pointer) 51单片机内的寄存器 单片机 地址功能介绍 BF0H B寄存器 ACCE0H 累加器 PSW 单片机 D0H 程序状态字 IP B8H 中断优先级控制寄存器 P3 B0H P3口锁存器 IE A8H 中断允许控制寄存器 P2 A0H P2口锁存器 单片机 SBUF 99H 串行口锁存器 SCON 单片机 98H 串行口控制寄存器 单片机 P1 90H P1口锁存器 TH1 单片机 8DH 定时器/计数器1(高8位) TH0 8CH 定时器/计数器1(低8位) TL1 8BH 定时器/计数器0(高8位) TL0 单片机 8AH 定时器/计数器0(低8位) TMOD 89A 定时器/计数器方式控制寄存器单片机 TCON 88H 定时器/计数器控制寄存器 DPH 83H 数据地址指针(高8位) 82H 数据地址指针(低8位) SP 单片机 81H 堆栈指针 P0 80H P0口锁存器 PCON 87H 单片机 电源控制寄存器 |
|
|
|
|
|
时间:2014年11月28日 题目: 51单片机的程序可用什么语言编写,常需要用到什么软件?其编程语言主要特点什么? 解答: 51单片机可用汇编和c语言单独编写或混合编写。常用到keil软件。 编程和C语言的各自特点: ·汇编:效率高,对硬件的可操控性更强,体积小,不易维护,可移植性很差。 ·C51:开发效率高,极大缩短开发时间,有很好的可读性、可移植性和可维护性。 C51较汇编相比具有的有优点: 1.对单片机的指令系统不要求有任何的了解,就可以对直接编程操作单片机。 2.寄存器分配、不同储存器的地址及数据类型等细节由编译器自动管理。 3.程序有规范的结构,可分为不同的函数,可使函数结构化。 4.库函数包含许多标准子程序,具有较强的数据处理能力,方便使用。 5.具有方便的模块化编程威廉希尔官方网站
,使已编好的程序很容易移植。 |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 00:05 , Processed in 0.784086 second(s), Total 47, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号