完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
QX-MCS51开发板上使用的是DIP封装(双列直插式)有40只引脚!
40只引脚按其功能来分,有三类 一、电源和时钟引脚:Vcc、Vss;XTAL1、XTAL2 **电源引脚接入单片机工作电源**Vcc(40脚):接+5V电源;Vss ( 20脚 ) :接地**时钟引脚**XTAL1和XTAL2分别接开发板的外部晶振,为单片机提供工作效率节拍 二、控制引脚 RST(RESET)是复位信号输入端 当单片机运行时,在此引脚加上持续两个机器周期的高电平时,就可以完成复位操作 Vpd为本引脚的第二功能,即备用电源输入端 当电源Vcc发生故障,降低到某一规定值的低电平时,将+5V电源自动接入RST端,为内部RAM提供备用电源,从而保证单片机复位后能继续运行 EA为内外部程序储存器选择端 当EA为高电平时,单片机访问内部程序储存空间,为低电平时访问外部程序储存空间 Vpp编程电压的输入端 ALE为地址所存允许信号 PROG为对片内为PROG的单片机编写程序时,此引脚做编程脉冲输入 PSEN当单片机访问外部程序储存器时,此引脚为读取外部储存选通信号 三、I/O口引脚 P0三态IO口,P1口、P2口内部有上拉普通准双向IO口,P3口内部有上拉普通准双向IO口(第二功能,可以通过配置特殊功能寄存来实现) P3第二功能各引脚功能定义: P3.0:RXD串行口输入 P3.1:TXD串行口输出 P3.2:INT0外部中断0输入 P3.3:INT1外部中断1输入 P3.4:T0定时器0外部输入 P3.5:T1定时器1外部输入 P3.6:WR外部写控制 P3.7:RD外部读控制 中断 计算机执行某程序时,发出来紧急事件或有特殊请求,CPU暂停某程序的执行,转而去处理上述事件或请求,处理完毕后再重新执行某程序的过程。 中断四个步骤: 中断请求→中断响应→中断处理→中断返回 中断功能的强弱是计算机性能优劣的重要标志 提高CPU效率 解决速度矛盾 实现并行工作 应付突发事件 数据的输入/输出方式 无条件传送方式: 一方对另一方来说总是准备好的 查询传送方式(LOOK UP): 传送前一方先查询另一方的状态,若已经准备好就传送,否则就继续查询/等待 中断传送方式(IRQ): 一方通过申请中断的方式与另一方进行数据传送 直接存储器存取方式(DMA): 双方直接通过总线传送数据,不经CPU中转,适用于数据量大高速通讯的设备不占用CPU时间 51子系列允许5个中断源 外部中断源(2个): INT0——由P3.2端口线引入,低电平或下降沿引起 INT1——由P3.3端口线引入,低电平或下降沿引起 这两个外部中断源标志和它们的触发方式控制位由特殊功能寄存器TCON的低四位控制 内部中断源(3个): T0——定时器/计数器0中断,由T0回零溢出引起 T1——定时器/计数器1中断,由T1回零溢出引起 TI/RI——串行I/O中断,串行端口完成一帧字符发送/接收后引起 这三个内部中断源的控制位分别锁存在特殊功能寄存器TCON和SCON中。 中断请求标志TCON(88H)可位寻址 TCON:Timer控制寄存器,低四位管理外部中断 作用:设置外部中断触发方式,标注外部中断请求 [tr]位76543210[/tr]
=0:没有外部中断申请 =1:有外部中断申请 IT0/IT1:外部中断请求的触发方式选择位 =0:在INT0/INT1端申请中断的信号 低电平有效 =1:在INT0/INT1端申请中断的信号 负跳变有效(下降沿) 中断允许控制寄存器IE(A8H) 作用:CPU对中断系统所有中断以及某个中断源的开发和屏蔽是由中断允许寄存器IE控制的。 [tr]位76543210[/tr]
CPU中断允许(总允许)位; =0时禁止全部中断 =1时允许中断 ES 串行口中断允许为; =0时禁止中断 =1时允许中断 ET1 定时/计数器T1中断允许位; =0时禁止中断 =1时允许中断 EX1 外部中断0允许位; =0时禁止中断 =1时允许中断 ET0 定时/计数器T0中断允许位 =0时禁止中断 =1时允许中断 EX0 外部中断0允许位 =0禁止中断 =1允许中断 外部中断及中断请求的撤除 低电平触发: 引脚上的低电平须持续到中断发生。若中断返回前仍未及撤除低电平,将再次中断 负脉冲触发: CPU在前一机器周期采到INT0/INT1引脚为高,后一机器周期采到为低才认为是一次中断请求。CPU可记忆申请、可自动撤除中断申请。 51的中断系统有5个中断源,2个优先级,可实现二级中断嵌套 中断优先级控制寄存器IP(B8H)可位寻址 [tr]位01234567[/tr]
INT0/1优先级控制位 =0属低优先级 =1属高优先级 PT0/PT1 T0/1中断优先级控制位 =0属低优先级 =1属高优先级 PS1 串行口中断优先级控制位 =0属低优先级 =1属高优先级 中断优先级处理原则 同时发生多个中断申请时: 1、不同优先级的中断同时申请(很难遇到)——先高后低 2、相同优先级的中断同时申请(很难遇到)——按序执行 3、正处理低优先级中断又接到高级别中断——高打断低 4、正处理高优先级中断又接到低级别中断——高不理低 中断响应条件 1、此中断源的中断允许位为1 2、总中断CPU中断打开(EA = 1) 3、中断源有中断请求 外部中断0初始化例子 EXO = 1;//开外部中断0 IT0 = 0;//低电平触发 EA = 1;//开总中断 跳变沿触发代码示例: #include #define uchar unsigned char #define uint unsigned int void delay(uint z) { uint x,y; for(x = z;x > 0;x --) for(y = 114;y > 0;y --); } void init() //中断服务特殊功能寄存器配置 { EXO = 1; //开外部中断0 IT0 = 1;//低电平触发方式 EA = 1;//开总中断 } void int0() interrupt 0 { P1 = 0; delay(100); } void main() { init(); while(1) { P1 = 0xff; } } led灯隔200ms闪烁一次 代码示例: #include #define uchar unsigned char #define uint unsigned int uint count = 0; void delay(uint z) { uint x,y; for(x = z;x > 0;x --) for(y = 114;y > 0;y --); } void init() //中断服务特殊功能寄存器配置 { TMOD = 0x01; //定时器0为计数模式 TH0 = 0x4b; TL0 = 0xfd;//50ms ET0 = 1;//开定时器0中断 TR0 = 1;//启动定时器0 EA = 1;//开总中断 } /*因为T0溢出中断优先级为第二高 所以interrupt后面唯一,最高级为0,最低为4 */ void timer0() interrupt 1 //因为T0溢出中断优先级为第二高,所以 { TH0 = 0x4b; TL0 = 0xfd; count ++; if(count == 4) { P1 = 0; delay(5); count = 0; } } void main() { init(); while(1) { P1 = 0xff; } } |
||||||||
|
||||||||
只有小组成员才能发言,加入小组>>
2497 浏览 0 评论
1060浏览 2评论
679浏览 1评论
441浏览 0评论
175浏览 0评论
293浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 17:52 , Processed in 1.017992 second(s), Total 50, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号